@@ -5,18 +5,13 @@ import { join } from 'node:path';
55
66import { visit } from 'unist-util-visit' ;
77
8- import { updateFilesForBuild } from './utils/updateFilesForBuild .mjs' ;
8+ import { generateFileList } from './utils/generateFileList .mjs' ;
99import { EXTRACT_CODE_FILENAME_COMMENT } from './constants.mjs' ;
10-
11- /**
12- * Normalizes a section name.
13- *
14- * @param {string } sectionName Section name
15- * @returns {string }
16- */
17- export function normalizeSectionName ( sectionName ) {
18- return sectionName . toLowerCase ( ) . replace ( / \s / g, '_' ) . replace ( / \W / g, '' ) ;
19- }
10+ import {
11+ generateSectionFolderName ,
12+ isBuildableSection ,
13+ normalizeSectionName ,
14+ } from './utils/section.mjs' ;
2015
2116/**
2217 * This generator generates a file list from code blocks extracted from
@@ -73,31 +68,26 @@ export default {
7368
7469 const files = await Promise . all (
7570 Object . entries ( sectionsCodeBlocks )
76- . filter ( ( [ , files ] ) => {
77- // Must have a .cc and a .js to be a valid test.
78- return (
79- files . some ( file => file . name . endsWith ( '.cc' ) ) &&
80- files . some ( file => file . name . endsWith ( '.js' ) )
81- ) ;
82- } )
83- . flatMap ( async ( [ sectionName , files ] , index ) => {
84- const newFiles = updateFilesForBuild ( files ) ;
71+ . filter ( ( [ , codeBlocks ] ) => isBuildableSection ( codeBlocks ) )
72+ . flatMap ( async ( [ sectionName , codeBlocks ] , index ) => {
73+ const files = generateFileList ( codeBlocks ) ;
8574
8675 if ( output ) {
8776 const normalizedSectionName = normalizeSectionName ( sectionName ) ;
8877
89- const identifier = String ( index + 1 ) . padStart ( 2 , '0' ) ;
90-
91- const folder = `${ identifier } _${ normalizedSectionName } ` ;
78+ const folderName = generateSectionFolderName (
79+ normalizedSectionName ,
80+ index
81+ ) ;
9282
93- await mkdir ( join ( output , folder ) , { recursive : true } ) ;
83+ await mkdir ( join ( output , folderName ) , { recursive : true } ) ;
9484
95- newFiles . forEach ( async ( { name, content } ) => {
96- await writeFile ( join ( output , folder , name ) , content ) ;
85+ files . forEach ( async ( { name, content } ) => {
86+ await writeFile ( join ( output , folderName , name ) , content ) ;
9787 } ) ;
9888 }
9989
100- return newFiles ;
90+ return files ;
10191 } )
10292 ) ;
10393
0 commit comments