@diplodoc/cli-tests 0.0.0-rc-reusable-e2es-202504041505
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin.mjs +30 -0
- package/e2e/__snapshots__/generate-map.spec.ts.snap +63 -0
- package/e2e/__snapshots__/include-toc.test.ts.snap +464 -0
- package/e2e/__snapshots__/load-custom-resources.spec.ts.snap +487 -0
- package/e2e/__snapshots__/metadata.spec.ts.snap +241 -0
- package/e2e/__snapshots__/plugin-corner-cases.spec.ts.snap +0 -0
- package/e2e/__snapshots__/regression.test.ts.snap +1168 -0
- package/e2e/__snapshots__/rtl.spec.ts.snap +357 -0
- package/e2e/generate-map.spec.ts +40 -0
- package/e2e/include-toc.test.ts +57 -0
- package/e2e/load-custom-resources.spec.ts +37 -0
- package/e2e/metadata.spec.ts +27 -0
- package/e2e/plugin-corner-cases.spec.ts +16 -0
- package/e2e/regression.test.ts +34 -0
- package/e2e/rtl.spec.ts +30 -0
- package/fixtures/cliAdapter.ts +39 -0
- package/fixtures/index.ts +3 -0
- package/fixtures/runners/binary.ts +31 -0
- package/fixtures/runners/index.ts +15 -0
- package/fixtures/runners/source.ts +20 -0
- package/fixtures/runners/types.ts +4 -0
- package/fixtures/utils/file.ts +43 -0
- package/fixtures/utils/test.ts +31 -0
- package/mocks/fileContent/metadata/authorAliasInMetadata.md +7 -0
- package/mocks/fileContent/metadata/fullAuthorInMetadata.md +10 -0
- package/mocks/fileContent/metadata/includesContent/firstIncludeFile.md +7 -0
- package/mocks/fileContent/metadata/includesContent/secondIncludeFile.md +5 -0
- package/mocks/fileContent/metadata/includesContent/withIncludes.md +7 -0
- package/mocks/fileContent/metadata/keywordsInMetadata.md +9 -0
- package/mocks/fileContent/metadata/simpleMetadata.md +6 -0
- package/mocks/fileContent/metadata/substitutionsInMetadataPropertyKeys.md +7 -0
- package/mocks/fileContent/metadata/substitutionsInMetadataPropertyValues.md +11 -0
- package/mocks/fileContent/metadata/substitutionsWithEmptyString.md +7 -0
- package/mocks/fileContent/metadata/variableInMetadata.md +7 -0
- package/mocks/fileContent/metadata/withAdditionalSeparatorsInContent.md +9 -0
- package/mocks/fileContent/metadata/withoutMetadata.md +2 -0
- package/mocks/fileContent/metadata/withoutMetadataWithAdditionalSeparatorsInContent.md +6 -0
- package/mocks/generate-map/test1/input/.yfm +0 -0
- package/mocks/generate-map/test1/input/ru/_includes/file.md +0 -0
- package/mocks/generate-map/test1/input/ru/_includes/plugins.md +0 -0
- package/mocks/generate-map/test1/input/ru/folder1/a1.md +1 -0
- package/mocks/generate-map/test1/input/ru/folder1/folder2/a1.md +1 -0
- package/mocks/generate-map/test1/input/ru/folder1/folder2/toc.yaml +5 -0
- package/mocks/generate-map/test1/input/ru/folder1/toc.yaml +7 -0
- package/mocks/generate-map/test1/input/ru/index.md +0 -0
- package/mocks/generate-map/test1/input/ru/plugins/import.md +0 -0
- package/mocks/generate-map/test1/input/ru/plugins/index.md +0 -0
- package/mocks/generate-map/test1/input/ru/project/config.md +0 -0
- package/mocks/generate-map/test1/input/ru/project/index.md +0 -0
- package/mocks/generate-map/test1/input/ru/settings.md +0 -0
- package/mocks/generate-map/test1/input/ru/toc.yaml +22 -0
- package/mocks/generate-map/test2/input/en/_includes/file.md +0 -0
- package/mocks/generate-map/test2/input/en/_includes/plugins.md +0 -0
- package/mocks/generate-map/test2/input/en/index.md +0 -0
- package/mocks/generate-map/test2/input/en/plugins/import.md +0 -0
- package/mocks/generate-map/test2/input/en/plugins/index.md +0 -0
- package/mocks/generate-map/test2/input/en/project/config.md +0 -0
- package/mocks/generate-map/test2/input/en/project/index.md +0 -0
- package/mocks/generate-map/test2/input/en/settings.md +0 -0
- package/mocks/generate-map/test2/input/en/toc.yaml +18 -0
- package/mocks/generate-map/test2/input/ru/_includes/file.md +0 -0
- package/mocks/generate-map/test2/input/ru/_includes/plugins.md +0 -0
- package/mocks/generate-map/test2/input/ru/index.md +0 -0
- package/mocks/generate-map/test2/input/ru/plugins/import.md +0 -0
- package/mocks/generate-map/test2/input/ru/plugins/index.md +0 -0
- package/mocks/generate-map/test2/input/ru/project/config.md +0 -0
- package/mocks/generate-map/test2/input/ru/project/index.md +0 -0
- package/mocks/generate-map/test2/input/ru/settings.md +0 -0
- package/mocks/generate-map/test2/input/ru/toc.yaml +18 -0
- package/mocks/generate-map/test3/input/.yfm +0 -0
- package/mocks/generate-map/test3/input/ru/_includes/file.md +0 -0
- package/mocks/generate-map/test3/input/ru/_includes/plugins.md +0 -0
- package/mocks/generate-map/test3/input/ru/folder1/a1.md +1 -0
- package/mocks/generate-map/test3/input/ru/folder1/folder2/a1.md +1 -0
- package/mocks/generate-map/test3/input/ru/folder1/folder2/toc.yaml +5 -0
- package/mocks/generate-map/test3/input/ru/folder1/toc.yaml +7 -0
- package/mocks/generate-map/test3/input/ru/index.md +0 -0
- package/mocks/generate-map/test3/input/ru/plugins/import.md +0 -0
- package/mocks/generate-map/test3/input/ru/plugins/index.md +0 -0
- package/mocks/generate-map/test3/input/ru/project/config.md +0 -0
- package/mocks/generate-map/test3/input/ru/project/index.md +0 -0
- package/mocks/generate-map/test3/input/ru/settings.md +0 -0
- package/mocks/generate-map/test3/input/ru/toc.yaml +22 -0
- package/mocks/include-toc/test1/input/a1.md +1 -0
- package/mocks/include-toc/test1/input/folder1/a1.md +1 -0
- package/mocks/include-toc/test1/input/folder1/folder2/a1.md +1 -0
- package/mocks/include-toc/test1/input/folder1/folder2/toc.yaml +5 -0
- package/mocks/include-toc/test1/input/folder1/toc.yaml +7 -0
- package/mocks/include-toc/test1/input/toc.yaml +9 -0
- package/mocks/include-toc/test2/input/.yfm +1 -0
- package/mocks/include-toc/test2/input/file1.md +1 -0
- package/mocks/include-toc/test2/input/fileX.md +1 -0
- package/mocks/include-toc/test2/input/folder/fileA.md +11 -0
- package/mocks/include-toc/test2/input/folder/fileB.md +9 -0
- package/mocks/include-toc/test2/input/folder/folder/fileC.md +1 -0
- package/mocks/include-toc/test2/input/folder/folder/toc.yaml +3 -0
- package/mocks/include-toc/test2/input/folder/toc.yaml +6 -0
- package/mocks/include-toc/test2/input/presets.yaml +2 -0
- package/mocks/include-toc/test2/input/toc.yaml +6 -0
- package/mocks/include-toc/test3/input/product1/core/_includes/inc.md +1 -0
- package/mocks/include-toc/test3/input/product1/core/article1.md +3 -0
- package/mocks/include-toc/test3/input/product1/core/toc_m.yaml +2 -0
- package/mocks/include-toc/test3/input/product1/product/toc_p.yaml +3 -0
- package/mocks/include-toc/test3/input/product1/toc.yaml +3 -0
- package/mocks/include-toc/test3/input/product2/core/_includes/inc.md +1 -0
- package/mocks/include-toc/test3/input/product2/core/article1.md +3 -0
- package/mocks/include-toc/test3/input/product2/core/toc_m.yaml +2 -0
- package/mocks/include-toc/test3/input/product2/overlay1/product/article1.md +3 -0
- package/mocks/include-toc/test3/input/product2/overlay1/product/toc_p.yaml +3 -0
- package/mocks/include-toc/test3/input/product2/overlay1/toc.yaml +2 -0
- package/mocks/include-toc/test3/input/product2/overlay2/product/article1.md +3 -0
- package/mocks/include-toc/test3/input/product2/overlay2/product/toc_p.yaml +3 -0
- package/mocks/include-toc/test3/input/product2/overlay2/toc.yaml +2 -0
- package/mocks/include-toc/test3/input/product2/overlay3/product/toc_p.yaml +3 -0
- package/mocks/include-toc/test3/input/product2/overlay3/toc.yaml +2 -0
- package/mocks/include-toc/test3/input/product2/p2.md +4 -0
- package/mocks/include-toc/test3/input/product2/toc.yaml +10 -0
- package/mocks/include-toc/test4/input/a1.md +1 -0
- package/mocks/include-toc/test4/input/index.yaml +20 -0
- package/mocks/include-toc/test4/input/toc.yaml +9 -0
- package/mocks/include-toc/test5/input/core/concepts/toc_i.yaml +2 -0
- package/mocks/include-toc/test5/input/core/concepts/toc_p.yaml +3 -0
- package/mocks/include-toc/test5/input/core/toc_i.yaml +6 -0
- package/mocks/include-toc/test5/input/core/toc_m.yaml +3 -0
- package/mocks/include-toc/test5/input/core/toc_p.yaml +5 -0
- package/mocks/include-toc/test5/input/overlay/toc_p.yaml +3 -0
- package/mocks/include-toc/test5/input/toc.yaml +4 -0
- package/mocks/include-toc/test6/input/test/index.md +4 -0
- package/mocks/include-toc/test6/input/test/sub/sub/sub-3.md +1 -0
- package/mocks/include-toc/test6/input/test/sub/sub-1.md +5 -0
- package/mocks/include-toc/test6/input/test/sub/sub-2.md +1 -0
- package/mocks/include-toc/test6/input/test/test.md +1 -0
- package/mocks/include-toc/test6/input/toc.yaml +7 -0
- package/mocks/include-toc/test7/input/.yfm +1 -0
- package/mocks/include-toc/test7/input/ru/presets.yaml +2 -0
- package/mocks/include-toc/test7/input/ru/sub/folder/index.yaml +4 -0
- package/mocks/include-toc/test7/input/ru/sub/folder/toc.yaml +3 -0
- package/mocks/include-toc/test7/input/ru/toc.yaml +3 -0
- package/mocks/load-custom-resources/md2html-with-resources/input/.yfm +5 -0
- package/mocks/load-custom-resources/md2html-with-resources/input/_assets/script/test1.js +0 -0
- package/mocks/load-custom-resources/md2html-with-resources/input/_assets/style/test.css +13 -0
- package/mocks/load-custom-resources/md2html-with-resources/input/index.yaml +9 -0
- package/mocks/load-custom-resources/md2html-with-resources/input/page.md +7 -0
- package/mocks/load-custom-resources/md2html-with-resources/input/project/config.md +1 -0
- package/mocks/load-custom-resources/md2html-with-resources/input/toc.yaml +7 -0
- package/mocks/load-custom-resources/md2md-with-resources/input/.yfm +5 -0
- package/mocks/load-custom-resources/md2md-with-resources/input/_assets/script/test1.js +0 -0
- package/mocks/load-custom-resources/md2md-with-resources/input/_assets/style/test.css +13 -0
- package/mocks/load-custom-resources/md2md-with-resources/input/index.yaml +9 -0
- package/mocks/load-custom-resources/md2md-with-resources/input/page.md +7 -0
- package/mocks/load-custom-resources/md2md-with-resources/input/project/config.md +1 -0
- package/mocks/load-custom-resources/md2md-with-resources/input/toc.yaml +7 -0
- package/mocks/load-custom-resources/single-page-with-resources/input/.yfm +5 -0
- package/mocks/load-custom-resources/single-page-with-resources/input/_assets/script/test1.js +0 -0
- package/mocks/load-custom-resources/single-page-with-resources/input/_assets/style/test.css +13 -0
- package/mocks/load-custom-resources/single-page-with-resources/input/index.yaml +9 -0
- package/mocks/load-custom-resources/single-page-with-resources/input/page.md +7 -0
- package/mocks/load-custom-resources/single-page-with-resources/input/project/config.md +1 -0
- package/mocks/load-custom-resources/single-page-with-resources/input/toc.yaml +7 -0
- package/mocks/metadata/md2html-with-metadata/input/index.yaml +9 -0
- package/mocks/metadata/md2html-with-metadata/input/page.md +7 -0
- package/mocks/metadata/md2html-with-metadata/input/presets.yaml +6 -0
- package/mocks/metadata/md2html-with-metadata/input/project/config.md +7 -0
- package/mocks/metadata/md2html-with-metadata/input/toc.yaml +7 -0
- package/mocks/metadata/md2md-with-metadata/input/index.yaml +9 -0
- package/mocks/metadata/md2md-with-metadata/input/page.md +7 -0
- package/mocks/metadata/md2md-with-metadata/input/presets.yaml +6 -0
- package/mocks/metadata/md2md-with-metadata/input/project/config.md +7 -0
- package/mocks/metadata/md2md-with-metadata/input/toc.yaml +7 -0
- package/mocks/plugin-corner-cases/images-in-deflists/input/image.jpeg +0 -0
- package/mocks/plugin-corner-cases/images-in-deflists/input/index.md +5 -0
- package/mocks/plugin-corner-cases/images-in-deflists/input/toc.yaml +4 -0
- package/mocks/regression/input/1.md +27 -0
- package/mocks/regression/input/_assets/1.png +0 -0
- package/mocks/regression/input/_assets/2.png +0 -0
- package/mocks/regression/input/_assets/3.png +0 -0
- package/mocks/regression/input/_assets/4.png +0 -0
- package/mocks/regression/input/_assets/empty.pdf +0 -0
- package/mocks/regression/input/autotitle.md +23 -0
- package/mocks/regression/input/commented-include.md +3 -0
- package/mocks/regression/input/images.md +9 -0
- package/mocks/regression/input/included-item.md +13 -0
- package/mocks/regression/input/includes/presets.yaml +2 -0
- package/mocks/regression/input/includes/test.md +1 -0
- package/mocks/regression/input/includes/user.md +1 -0
- package/mocks/regression/input/includes.md +5 -0
- package/mocks/regression/input/index.yaml +9 -0
- package/mocks/regression/input/latex.md +3 -0
- package/mocks/regression/input/merge/merge.md +3 -0
- package/mocks/regression/input/merge/presets.yaml +2 -0
- package/mocks/regression/input/merge/toc.yaml +4 -0
- package/mocks/regression/input/merge-source/merged.md +3 -0
- package/mocks/regression/input/merge-source/toc-m.yaml +4 -0
- package/mocks/regression/input/mermaid.md +13 -0
- package/mocks/regression/input/openapi-spec.yaml +37 -0
- package/mocks/regression/input/presets.yaml +8 -0
- package/mocks/regression/input/sub/folder/item-1.md +3 -0
- package/mocks/regression/input/sub/toc.yaml +5 -0
- package/mocks/regression/input/toc-i.yaml +3 -0
- package/mocks/regression/input/toc.yaml +30 -0
- package/mocks/rtl/multidirectional-languages/input/.yfm +1 -0
- package/mocks/rtl/multidirectional-languages/input/ar/index.yaml +4 -0
- package/mocks/rtl/multidirectional-languages/input/ar/page.md +1 -0
- package/mocks/rtl/multidirectional-languages/input/ar/toc.yaml +5 -0
- package/mocks/rtl/multidirectional-languages/input/en/index.yaml +9 -0
- package/mocks/rtl/multidirectional-languages/input/en/page.md +7 -0
- package/mocks/rtl/multidirectional-languages/input/en/toc.yaml +5 -0
- package/mocks/rtl/rtl-language/input/.yfm +1 -0
- package/mocks/rtl/rtl-language/input/index.yaml +4 -0
- package/mocks/rtl/rtl-language/input/page.md +1 -0
- package/mocks/rtl/rtl-language/input/toc.yaml +5 -0
- package/package.json +42 -0
- package/tsconfig.json +16 -0
- package/vitest.config.ts +30 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {spawn} from 'child_process';
|
|
2
|
+
import {Runner} from './types';
|
|
3
|
+
|
|
4
|
+
export class BinaryRunner implements Runner {
|
|
5
|
+
private readonly binaryPath: string;
|
|
6
|
+
|
|
7
|
+
constructor(binaryPath: string) {
|
|
8
|
+
this.binaryPath = binaryPath;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
runYfmDocs(argv: string[]): Promise<void> {
|
|
12
|
+
return this.spawnAsync(argv);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
private spawnAsync(argv: string[]): Promise<void> {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
const child = spawn(this.binaryPath, argv, {
|
|
18
|
+
stdio: 'inherit',
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
child.on('error', reject);
|
|
22
|
+
child.on('exit', (code) => {
|
|
23
|
+
if (code === 0) {
|
|
24
|
+
resolve();
|
|
25
|
+
} else {
|
|
26
|
+
reject(new Error(`Process exited with code ${code}`));
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {SourceRunner} from './source';
|
|
2
|
+
import {BinaryRunner} from './binary';
|
|
3
|
+
import {Runner} from './types';
|
|
4
|
+
|
|
5
|
+
export {Runner};
|
|
6
|
+
|
|
7
|
+
export function createRunner(): Runner {
|
|
8
|
+
const binaryPath = process.env.DIPLODOC_BINARY_PATH;
|
|
9
|
+
|
|
10
|
+
if (binaryPath) {
|
|
11
|
+
return new BinaryRunner(binaryPath);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return new SourceRunner();
|
|
15
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export class SourceRunner {
|
|
2
|
+
private readonly cliPath: string;
|
|
3
|
+
|
|
4
|
+
constructor() {
|
|
5
|
+
// Allow overriding the CLI path via environment variable, otherwise use local build
|
|
6
|
+
this.cliPath = process.env.DIPLODOC_CLI_BUILD_PATH || require.resolve('../../../build');
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
async runYfmDocs(argv: string[]): Promise<void> {
|
|
10
|
+
const {run} = await import(this.cliPath);
|
|
11
|
+
|
|
12
|
+
const baseArgs = ['node', this.cliPath, ...argv];
|
|
13
|
+
|
|
14
|
+
const exitCode = await run(baseArgs);
|
|
15
|
+
|
|
16
|
+
if (exitCode !== 0) {
|
|
17
|
+
throw new Error(`CLI exited with code ${exitCode}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {readFileSync} from 'fs';
|
|
2
|
+
import {join, resolve} from 'path';
|
|
3
|
+
import walkSync from 'walk-sync';
|
|
4
|
+
import {bundleless, platformless} from './test';
|
|
5
|
+
import {expect} from 'vitest';
|
|
6
|
+
import shell from 'shelljs';
|
|
7
|
+
|
|
8
|
+
export function getFileContent(filePath: string) {
|
|
9
|
+
return bundleless(platformless(readFileSync(filePath, 'utf8')));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const uselessFile = (file: string) =>
|
|
13
|
+
!['_bundle/', '_assets/', '_search/'].some((part) => file.includes(part));
|
|
14
|
+
|
|
15
|
+
export function compareDirectories(outputPath: string): void {
|
|
16
|
+
const filesFromOutput = walkSync(outputPath, {
|
|
17
|
+
directories: false,
|
|
18
|
+
includeBasePath: false,
|
|
19
|
+
}).sort();
|
|
20
|
+
|
|
21
|
+
expect(bundleless(JSON.stringify(filesFromOutput, null, 2))).toMatchSnapshot('filelist');
|
|
22
|
+
|
|
23
|
+
filesFromOutput.filter(uselessFile).forEach((filePath) => {
|
|
24
|
+
const content = getFileContent(resolve(outputPath, filePath));
|
|
25
|
+
expect(content).toMatchSnapshot(filePath);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
type TestPaths = {
|
|
30
|
+
inputPath: string;
|
|
31
|
+
outputPath: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function getTestPaths(testRootPath: string): TestPaths {
|
|
35
|
+
return {
|
|
36
|
+
inputPath: resolve(__dirname, '../../', join(testRootPath, 'input')),
|
|
37
|
+
outputPath: resolve(__dirname, '../../', join(testRootPath, 'output')),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function cleanupDirectory(path: string): void {
|
|
42
|
+
shell.rm('-rf', path);
|
|
43
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {readFileSync} from 'fs';
|
|
2
|
+
|
|
3
|
+
export function platformless(text: string): string {
|
|
4
|
+
return text
|
|
5
|
+
.replace(/\r\n/g, '\n')
|
|
6
|
+
.replace(/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/g, 'UUID')
|
|
7
|
+
.replace(/(content"?[:=]{1}[" ]{1}Diplodoc.*? )v\d+\.\d+\.\d+/g, `$1vDIPLODOC-VERSION`)
|
|
8
|
+
.replace(/(\\(?![/"'])){1,2}/g, '/');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function bundleless(text: string): string {
|
|
12
|
+
const assets = require('@diplodoc/client/manifest') as Record<string, Record<string, string[]>>;
|
|
13
|
+
|
|
14
|
+
for (const [entryKey, entry] of Object.entries(assets)) {
|
|
15
|
+
for (const [typeKey, type] of Object.entries(entry)) {
|
|
16
|
+
for (let index = 0; index < type.length; index++) {
|
|
17
|
+
let prev = '';
|
|
18
|
+
while (prev !== text) {
|
|
19
|
+
prev = text;
|
|
20
|
+
text = text.replace(type[index], `${entryKey}-${typeKey}-${index}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return text;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function getNormalizedContent(filePath: string): string {
|
|
30
|
+
return bundleless(platformless(readFileSync(filePath, 'utf8')));
|
|
31
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
prop-{{key-name}}: This one has a substitution in a key name.
|
|
3
|
+
{{key-name}}-prop: This one's key starts with a substitution.
|
|
4
|
+
{{key-name}}: This one's key only consists of a substitution.
|
|
5
|
+
{{ key-name }}: This one's key employs a different whitespace style in a substitution.
|
|
6
|
+
---
|
|
7
|
+
Blah.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
prop1: "This is a metadata property with a {{substitution}} in it."
|
|
3
|
+
prop2: "This one contains {{multiple}} {{substitutions}}."
|
|
4
|
+
prop3: "This one has {{substitutions}} of {{ different }} {{ styles}}."
|
|
5
|
+
prop4: 'This one has a {{substitution}} as well, but the string literal is single-quoted.'
|
|
6
|
+
prop5: This one has no quotes at {{all}}.
|
|
7
|
+
prop6: {{this}} starts with a substitution.
|
|
8
|
+
prop7: >-
|
|
9
|
+
{{this}} one is a multiline {{property}}.
|
|
10
|
+
---
|
|
11
|
+
Blah.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the /folder1/a1.md file content.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the /folder1/folder1/a1.md file content.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
title: Yandex Flavored Markdown
|
|
2
|
+
items:
|
|
3
|
+
- name: Yandex Flavored Markdown
|
|
4
|
+
href: index.md
|
|
5
|
+
- name: Settings
|
|
6
|
+
href: settings.md
|
|
7
|
+
- name: Plugins
|
|
8
|
+
items:
|
|
9
|
+
- name: Overview
|
|
10
|
+
href: plugins/index.md
|
|
11
|
+
- name: Adding additional plugins
|
|
12
|
+
href: plugins/import.md
|
|
13
|
+
- name: Organizing a YFM project
|
|
14
|
+
items:
|
|
15
|
+
- name: Overview
|
|
16
|
+
href: project/index.md
|
|
17
|
+
- name: Configuration file
|
|
18
|
+
href: project/config.md
|
|
19
|
+
- name: folder1
|
|
20
|
+
include:
|
|
21
|
+
mode: link
|
|
22
|
+
path: folder1/toc.yaml
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
title: Yandex Flavored Markdown
|
|
2
|
+
items:
|
|
3
|
+
- name: Yandex Flavored Markdown
|
|
4
|
+
href: index.md
|
|
5
|
+
- name: Settings
|
|
6
|
+
href: settings.md
|
|
7
|
+
- name: Plugins
|
|
8
|
+
items:
|
|
9
|
+
- name: Overview
|
|
10
|
+
href: plugins/index.md
|
|
11
|
+
- name: Adding additional plugins
|
|
12
|
+
href: plugins/import.md
|
|
13
|
+
- name: Organizing a YFM project
|
|
14
|
+
items:
|
|
15
|
+
- name: Overview
|
|
16
|
+
href: project/index.md
|
|
17
|
+
- name: Configuration file
|
|
18
|
+
href: project/config.md
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
title: Yandex Flavored Markdown
|
|
2
|
+
items:
|
|
3
|
+
- name: Yandex Flavored Markdown
|
|
4
|
+
href: index.md
|
|
5
|
+
- name: Settings
|
|
6
|
+
href: settings.md
|
|
7
|
+
- name: Plugins
|
|
8
|
+
items:
|
|
9
|
+
- name: Overview
|
|
10
|
+
href: plugins/index.md
|
|
11
|
+
- name: Adding additional plugins
|
|
12
|
+
href: plugins/import.md
|
|
13
|
+
- name: Organizing a YFM project
|
|
14
|
+
items:
|
|
15
|
+
- name: Overview
|
|
16
|
+
href: project/index.md
|
|
17
|
+
- name: Configuration file
|
|
18
|
+
href: project/config.md
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the /folder1/a1.md file content.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the /folder1/folder1/a1.md file content.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
title: Yandex Flavored Markdown
|
|
2
|
+
items:
|
|
3
|
+
- name: Yandex Flavored Markdown
|
|
4
|
+
href: index.md
|
|
5
|
+
- name: Settings
|
|
6
|
+
href: settings.md
|
|
7
|
+
- name: Plugins
|
|
8
|
+
items:
|
|
9
|
+
- name: Overview
|
|
10
|
+
href: plugins/index.md
|
|
11
|
+
- name: Adding additional plugins
|
|
12
|
+
href: https://test.ru
|
|
13
|
+
- name: Organizing a YFM project
|
|
14
|
+
items:
|
|
15
|
+
- name: Overview
|
|
16
|
+
href: project/index.md
|
|
17
|
+
- name: Configuration file
|
|
18
|
+
href: https://test.ru
|
|
19
|
+
- name: folder1
|
|
20
|
+
include:
|
|
21
|
+
mode: link
|
|
22
|
+
path: folder1/toc.yaml
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the /a1.md file content.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the /folder1/a1.md file content.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the /folder1/folder1/a1.md file content.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
applyPresets: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# File 1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# File X
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: File A
|
|
3
|
+
description: {{product}} description
|
|
4
|
+
---
|
|
5
|
+
# File A
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
|
|
10
|
+
|
|
11
|
+
---
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# File B
|
|
2
|
+
|
|
3
|
+
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
|
|
8
|
+
|
|
9
|
+
---
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# File C
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the core include.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is the core include.
|