UNPKG

10.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../Scripts/generateDocumentation.ts"],"names":["convertersPath","__dirname","docs","getDocFiles","content","generateContent","trim","replace","convertersDirPath","convertersNames","convertersPaths","map","converterName","convertersDirs","filter","converterPath","isDirectory","documents","dirName","docFilePath","doc","isFileExists","JSON","parse","examplePath","example","descriptionPath","description","name","generateAdditionalDosc","generateNavigation","Object","keys","length","generateSugarElementDoc","join","docsPath","additionalDocs","file","strings","includes","split","header","toLowerCase","generateAttributesDoc","attributes","generateChildrenDoc","children","generateExample","undefined","tableHeader","tableRows","attribute","enumeration","type","wrapOptionalText","required","default","childrenInfo","child","text","directoryPath","dirStat","isFile","ignoreError"],"mappings":"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","sourcesContent":["import { readdirSync, readFileSync, statSync, writeFileSync } from \"fs\";\nimport { basename, resolve } from \"path\";\n\ninterface Attribute {\n name: string;\n default?: string;\n description?: string;\n required?: \"true\" | \"false\";\n type?: string;\n enumeration?: string[];\n}\n\ninterface Document {\n name: string;\n description?: string;\n example?: string;\n attributes?: Attribute[];\n children?: string[];\n}\n\nconst convertersPath = resolve(__dirname, \"../Generator/src/generators/markupGenerator/converters\");\nconst docs = getDocFiles(convertersPath);\nconst content = generateContent(docs)\n .trim()\n .replace(/[\\r\\n]{2,}/g, \"\\n\");\n\nwriteFileSync(\"DOCUMENTATION.md\", content, \"utf8\");\n\nfunction getDocFiles(convertersDirPath: string): Document[] {\n const convertersNames = readdirSync(convertersDirPath);\n const convertersPaths = convertersNames.map(converterName => resolve(convertersDirPath, converterName));\n const convertersDirs = convertersPaths.filter(converterPath => statSync(converterPath).isDirectory());\n\n const documents = convertersDirs.map((converterPath: string) => {\n const dirName = basename(converterPath);\n\n const docFilePath = resolve(converterPath, \"docs.json\");\n const doc = isFileExists(docFilePath) ? JSON.parse(readFileSync(docFilePath, \"utf8\")) : {};\n\n const examplePath = resolve(converterPath, \"example.md\");\n const example = isFileExists(examplePath) ? { example: readFileSync(examplePath, \"utf8\") } : {};\n\n const descriptionPath = resolve(converterPath, \"description.md\");\n const description = isFileExists(descriptionPath) ? { description: readFileSync(descriptionPath, \"utf8\") } : {};\n\n return {\n name: dirName,\n ...doc,\n ...example,\n ...description,\n };\n });\n\n return documents;\n}\n\nfunction generateContent(documents: Document[]): string {\n return `\n${generateAdditionalDosc()}\n# Документация по сахару\n${generateNavigation(documents)}\n${documents\n .filter(doc => Object.keys(doc).length !== 1)\n .map(generateSugarElementDoc)\n .join(\"\\n\")}\n`;\n}\n\nfunction generateAdditionalDosc(): string {\n const docsPath = resolve(__dirname, \"../docs\");\n const documents = readdirSync(docsPath);\n const additionalDocs = documents\n .map(doc => {\n const file = readFileSync(resolve(docsPath, doc), \"utf8\");\n const strings = file.includes(\"\\r\\n\") ? file.split(\"\\r\\n\") : file.split(\"\\n\");\n const header = strings.length !== 0 ? strings[0].replace(/#/g, \"\").trim() : doc;\n\n return `# [${header}](/docs/${doc})`;\n })\n .join(\"\\n\");\n\n return additionalDocs;\n}\n\nfunction generateNavigation(documents: Document[]): string {\n return documents\n .map(doc => {\n if (Object.keys(doc).length === 1) {\n return `* ${doc.name}`;\n }\n return `* [${doc.name}](#${doc.name.toLowerCase()})`;\n })\n .join(\"\\n\");\n}\n\nfunction generateSugarElementDoc(doc: Document): string {\n return `\n## ${doc.name} ##\n${doc.description}\n${generateAttributesDoc(doc.attributes, \"#### Описание атрибутов\")}\n${generateChildrenDoc(doc.children)}\n${generateExample(doc.example)}\n`;\n}\n\nfunction generateAttributesDoc(attributes: Attribute[] | undefined, header: string): string {\n if (attributes == undefined) {\n return \"\";\n }\n const tableHeader = \"|name|type|required|default|description|\";\n const tableRows = attributes.map(attribute => {\n const enumeration = attribute.enumeration ? attribute.enumeration.join(\", \") : \"не указаны\";\n const type = attribute.type === \"enumeration\" ? `enumeration: ${enumeration}` : attribute.type;\n return `\n|${attribute.name}|${wrapOptionalText(type)}|${attribute.required || false}|${wrapOptionalText(\n attribute.default\n )}|${wrapOptionalText(attribute.description)}|`;\n });\n\n return `\n${header}\n${tableHeader}\n|:---:|:---:|:---:|:---:|:---|${tableRows.join(\"/n\")}\n`;\n}\n\nfunction generateExample(example: string | undefined): string {\n if (example == undefined) {\n return \"\";\n }\n return `\n#### Пример\n${example}\n `;\n}\n\nfunction generateChildrenDoc(children: string[] | undefined): string {\n if (children == undefined) {\n return \"\";\n }\n const childrenInfo = children.map(\n child => `\n* [${child}](#${child.toLowerCase()})`\n );\n\n return `\n#### Дочерние элементы\n${childrenInfo.join(\"\")}\n`;\n}\n\nfunction wrapOptionalText(text: string | undefined): string {\n return text != undefined ? text.replace(/\\|/g, \",\") : \"—\";\n}\n\nfunction isFileExists(directoryPath: string): boolean {\n try {\n const dirStat = statSync(directoryPath);\n return dirStat.isFile();\n } catch (ignoreError) {\n return false;\n }\n}\n"],"file":"generateDocumentation.js"}
\No newline at end of file