/** * Copyright 2023-present DreamNum Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import fs from 'node:fs'; import path from 'node:path'; import process from 'node:process'; function snackToPascal(snack: string) { return snack .split('-') .filter(Boolean) .map((part) => part[0].toUpperCase() + part.slice(1)) .join(''); } const GENERATED_FILE_PATH = path.join( process.cwd(), 'src/components/docs/layout/hyphenation/pattern-loaders.gen.ts' ); const PATTERNS_DIR = path.join( process.cwd(), 'src/components/docs/layout/hyphenation/patterns' ); const files = fs.readdirSync(PATTERNS_DIR) .filter((file) => file.endsWith('.ts')) .map((file) => file.replace(/\.ts$/, '')) .sort((a, b) => a.localeCompare(b)); const entries = files .map((stem) => { const key = snackToPascal(stem); return ` [Lang.${key}]: () => import('./patterns/${stem}'),`; }) .join('\n'); const content = [ '/* eslint-disable */', "import { Lang } from './lang';", '', '// Generated by scripts/generate-hyphen-pattern-loaders.mts', 'export const PATTERN_LOADERS: Partial Promise>> = {', entries, '};', '', ].join('\n'); fs.mkdirSync(path.dirname(GENERATED_FILE_PATH), { recursive: true }); fs.writeFileSync(GENERATED_FILE_PATH, content); console.log(`Updated ${GENERATED_FILE_PATH}`);