Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

site-data.js 1.6 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  1. const path = require('path')
  2. const flat = require('flat')
  3. const { get, set } = require('lodash')
  4. const languages = require('./languages')
  5. const dataDirectory = require('./data-directory')
  6. const encodeBracketedParentheses = require('./encode-bracketed-parentheses')
  7. const loadSiteDataFromDir = dir => ({
  8. site: {
  9. data: dataDirectory(path.join(dir, 'data'), {
  10. preprocess: dataString =>
  11. encodeBracketedParentheses(dataString.trimEnd()),
  12. ignorePatterns: [/README\.md$/]
  13. })
  14. }
  15. })
  16. module.exports = function loadSiteData () {
  17. // load english site data
  18. const siteData = {
  19. en: loadSiteDataFromDir(languages.en.dir)
  20. }
  21. // load and add other language data to siteData where keys match english keys,
  22. // filling holes with english site data
  23. const englishKeys = Object.keys(flat(siteData.en))
  24. for (const language of Object.values(languages)) {
  25. if (language.code === 'en') continue
  26. const data = loadSiteDataFromDir(language.dir)
  27. for (const key of englishKeys) {
  28. set(
  29. siteData,
  30. `${language.code}.${key}`,
  31. get(data, key) || get(siteData.en, key)
  32. )
  33. }
  34. }
  35. for (const language of Object.values(languages)) {
  36. // Add the English `slug` to each item, to link a consistent anchor
  37. siteData[language.code].site.data.glossaries.external.forEach((item, i) => {
  38. item.slug = siteData.en.site.data.glossaries.external[i].term
  39. })
  40. // Sort glossary by language-specific function
  41. if (language.code !== 'en') {
  42. siteData[language.code].site.data.glossaries.external.sort(
  43. (a, b) => a.term.localeCompare(b.term, language.code)
  44. )
  45. }
  46. }
  47. return siteData
  48. }
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...