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

pages.js 1.8 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
  1. const path = require('path')
  2. const walk = require('walk-sync').entries
  3. const Page = require('./page')
  4. const languages = require('./languages')
  5. async function loadPageList () {
  6. // load english pages
  7. const englishPath = path.join(__dirname, '..', languages.en.dir, 'content')
  8. const englishPaths = walk(englishPath, {
  9. globs: ['**/*.md'],
  10. ignore: ['**/README.md']
  11. })
  12. const englishPages = await Promise.all(englishPaths.map(
  13. async opts => Page.init({
  14. ...opts,
  15. languageCode: languages.en.code
  16. })
  17. ))
  18. // load matching pages in other languages
  19. const localizedPaths = Object.values(languages)
  20. .filter(({ code }) => code !== 'en')
  21. .map(language => {
  22. const basePath = path.join(__dirname, '..', language.dir, 'content')
  23. return englishPages.map(page => ({
  24. basePath,
  25. relativePath: page.relativePath,
  26. languageCode: language.code
  27. }))
  28. })
  29. .flat()
  30. const localizedPages = await Promise.all(localizedPaths.map(
  31. async ({ basePath, relativePath, languageCode }) => Page.init({
  32. basePath,
  33. relativePath,
  34. languageCode
  35. })
  36. ))
  37. // Build out the list of prepared pages
  38. return englishPages
  39. .concat(localizedPages)
  40. .filter(Boolean)
  41. }
  42. function createMapFromArray (pageList) {
  43. // add keys to the object for each of the page's permalinks for fast lookup
  44. const pageMap =
  45. pageList.reduce(
  46. (pageMap, page) => {
  47. for (const permalink of page.permalinks) {
  48. pageMap[permalink.href] = page
  49. }
  50. return pageMap
  51. },
  52. {}
  53. )
  54. return pageMap
  55. }
  56. async function loadPageMap (pageList) {
  57. const pages = pageList || await loadPageList()
  58. return createMapFromArray(pages)
  59. }
  60. module.exports = {
  61. loadPages: loadPageList,
  62. loadPageMap
  63. }
Tip!

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

Comments

Loading...