1
1
const fse = require ( 'fs-extra' ) ;
2
2
const path = require ( 'path' ) ;
3
- const flatten = require ( 'flat' ) ;
4
- const { get, set } = require ( 'lodash' ) ;
5
3
const { paramCase, noCase } = require ( 'change-case' ) ;
6
4
const { titleCase } = require ( 'title-case' ) ;
7
5
const yaml = require ( 'js-yaml' ) ;
@@ -25,43 +23,14 @@ app.get('/js/*.js', (req, res) => {
25
23
} ) ;
26
24
27
25
app . get ( '/categories' , ( req , res ) => {
28
- const categories = { } ;
29
- for ( const dataDir of fse . readdirSync ( `data` ) ) {
30
- for ( const entryFile of fse . readdirSync ( `data/${ dataDir } ` , { } ) ) {
31
- const entryData = yaml . load ( fse . readFileSync ( `data/${ dataDir } /${ entryFile } ` ) ) ;
32
- const entryName =
33
- ( entryData . config && entryData . config . title ) || titleCase ( noCase ( entryFile . split ( '.' ) [ 0 ] ) ) ;
34
-
35
- if ( entryData . config && entryData . config . categories ) {
36
- const categoriesToAdd = flatten ( entryData . config . categories , { delimiter : '~' } ) ;
37
- for ( const category of Object . keys ( categoriesToAdd ) ) {
38
- // make sure all upper categories exist
39
- for ( const [ index , subcategory ] of category . split ( '~' ) . entries ( ) ) {
40
- const subcategoryFullName = category
41
- . split ( '~' )
42
- . slice ( 0 , index + 1 )
43
- . join ( '~' ) ;
44
- const subcategoryPages = categories [ subcategoryFullName ] || [ ] ;
45
- categories [ subcategoryFullName ] = subcategoryPages ;
46
- }
47
-
48
- const categoryPages = categories [ category ] || [ ] ;
49
- categoryPages . push ( entryName ) ;
50
- categories [ category ] = categoryPages ;
51
-
52
- // const categoryPath = category.split('~');
53
- // const categoryPages = get(categories, categoryPath, []);
54
- // categoryPages.push(entryName);
55
- // instead of set, we need array push
56
- // 'three': ['a', 'b', 'c', {deep: ['d', 'e', 'f']}, ],
57
- // set(categories, categoryPath, categoryPages);
58
- }
59
- }
60
- }
26
+ if ( ! fse . existsSync ( './public/categories.json' ) ) {
27
+ require ( './build-categories' ) ;
61
28
}
29
+ const categories = require ( './public/categories.json' ) ;
62
30
res . render ( 'pages/categories' , { categories } ) ;
63
31
} ) ;
64
32
33
+ app . get ( '/category/:categoryPath' , ( req , res ) => { } ) ;
65
34
app . get ( '/:entryPath' , ( req , res ) => {
66
35
const { entryPath } = req . params ;
67
36
0 commit comments