functional-examples 0.0.1 → 0.1.0

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.
Files changed (84) hide show
  1. package/README.md +63 -44
  2. package/README.md.template +28 -54
  3. package/dist/cli/commands/scan.d.ts +1 -1
  4. package/dist/cli/index.d.ts +2 -2
  5. package/dist/config/resolver.d.ts.map +1 -1
  6. package/dist/config/resolver.js +25 -2
  7. package/dist/config/resolver.js.map +1 -1
  8. package/dist/config/schema.d.ts +10 -0
  9. package/dist/config/schema.d.ts.map +1 -1
  10. package/dist/config/schema.js +6 -0
  11. package/dist/config/schema.js.map +1 -1
  12. package/dist/files/reader.d.ts +4 -20
  13. package/dist/files/reader.d.ts.map +1 -1
  14. package/dist/files/reader.js +6 -22
  15. package/dist/files/reader.js.map +1 -1
  16. package/dist/index.d.ts +2 -3
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/plugins/pipeline.d.ts +2 -1
  21. package/dist/plugins/pipeline.d.ts.map +1 -1
  22. package/dist/plugins/pipeline.js +4 -3
  23. package/dist/plugins/pipeline.js.map +1 -1
  24. package/dist/regions/defaults.d.ts +11 -0
  25. package/dist/regions/defaults.d.ts.map +1 -0
  26. package/dist/regions/defaults.js +20 -0
  27. package/dist/regions/defaults.js.map +1 -0
  28. package/dist/regions/parser.d.ts +18 -56
  29. package/dist/regions/parser.d.ts.map +1 -1
  30. package/dist/regions/parser.js +81 -149
  31. package/dist/regions/parser.js.map +1 -1
  32. package/dist/scanner/scanner.d.ts.map +1 -1
  33. package/dist/scanner/scanner.js +14 -5
  34. package/dist/scanner/scanner.js.map +1 -1
  35. package/dist/types/index.d.ts +2 -1
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/types/index.js +2 -0
  38. package/dist/types/index.js.map +1 -1
  39. package/package.json +2 -2
  40. package/dist/config/index.spec.d.ts.map +0 -1
  41. package/dist/config/index.spec.js +0 -142
  42. package/dist/config/index.spec.js.map +0 -1
  43. package/dist/extractors/loader.d.ts.map +0 -1
  44. package/dist/extractors/loader.js +0 -120
  45. package/dist/extractors/loader.js.map +0 -1
  46. package/dist/extractors/meta-yml-fn.d.ts.map +0 -1
  47. package/dist/extractors/meta-yml-fn.js +0 -66
  48. package/dist/extractors/meta-yml-fn.js.map +0 -1
  49. package/dist/extractors/meta-yml.d.ts.map +0 -1
  50. package/dist/extractors/meta-yml.js +0 -65
  51. package/dist/extractors/meta-yml.js.map +0 -1
  52. package/dist/extractors/registry.d.ts.map +0 -1
  53. package/dist/extractors/registry.js +0 -114
  54. package/dist/extractors/registry.js.map +0 -1
  55. package/dist/extractors/registry.spec.d.ts.map +0 -1
  56. package/dist/extractors/registry.spec.js +0 -102
  57. package/dist/extractors/registry.spec.js.map +0 -1
  58. package/dist/extractors/yaml-frontmatter-fn.d.ts.map +0 -1
  59. package/dist/extractors/yaml-frontmatter-fn.js +0 -73
  60. package/dist/extractors/yaml-frontmatter-fn.js.map +0 -1
  61. package/dist/extractors/yaml-frontmatter.d.ts.map +0 -1
  62. package/dist/extractors/yaml-frontmatter.js +0 -83
  63. package/dist/extractors/yaml-frontmatter.js.map +0 -1
  64. package/dist/extractors/yaml-frontmatter.spec.d.ts.map +0 -1
  65. package/dist/extractors/yaml-frontmatter.spec.js +0 -134
  66. package/dist/extractors/yaml-frontmatter.spec.js.map +0 -1
  67. package/dist/regions/index.d.ts +0 -7
  68. package/dist/regions/index.d.ts.map +0 -1
  69. package/dist/regions/index.js +0 -6
  70. package/dist/regions/index.js.map +0 -1
  71. package/dist/regions/languages.d.ts +0 -15
  72. package/dist/regions/languages.d.ts.map +0 -1
  73. package/dist/regions/languages.js +0 -182
  74. package/dist/regions/languages.js.map +0 -1
  75. package/dist/regions/parser.spec.d.ts.map +0 -1
  76. package/dist/regions/parser.spec.js +0 -190
  77. package/dist/regions/parser.spec.js.map +0 -1
  78. package/dist/regions/types.d.ts +0 -37
  79. package/dist/regions/types.d.ts.map +0 -1
  80. package/dist/regions/types.js +0 -5
  81. package/dist/regions/types.js.map +0 -1
  82. package/dist/scanner/scanner.spec.d.ts.map +0 -1
  83. package/dist/scanner/scanner.spec.js +0 -262
  84. package/dist/scanner/scanner.spec.js.map +0 -1
@@ -1,8 +1,9 @@
1
+ import type { RegionConfig } from '@functional-examples/devkit';
1
2
  import type { FileContentsParser, FileParseContext } from '../types/index.js';
2
3
  /**
3
4
  * Create the initial parse context for a file.
4
5
  */
5
- export declare function createInitialContext(filePath: string, content: string): FileParseContext;
6
+ export declare function createInitialContext(filePath: string, raw: string, regionConfig: Required<Pick<RegionConfig, 'startTag' | 'endTag'>>, parsed?: string): FileParseContext;
6
7
  /**
7
8
  * Run file content through a parser pipeline.
8
9
  * Parsers execute in order, each receiving the output of the previous.
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/plugins/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,gBAAgB,CAQlB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,kBAAkB,EAAE,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAa3B"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/plugins/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC,EACjE,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB,CASlB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,kBAAkB,EAAE,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAa3B"}
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * Create the initial parse context for a file.
3
3
  */
4
- export function createInitialContext(filePath, content) {
4
+ export function createInitialContext(filePath, raw, regionConfig, parsed) {
5
5
  return {
6
- raw: content,
7
- parsed: content,
6
+ raw,
7
+ parsed: parsed ?? raw,
8
8
  hunks: [],
9
9
  metadata: {},
10
10
  filePath,
11
+ regionConfig,
11
12
  };
12
13
  }
13
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/plugins/pipeline.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,OAAe;IAEf,OAAO;QACL,GAAG,EAAE,OAAO;QACZ,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAyB,EACzB,OAA6B;IAE7B,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,GAAG;YACP,GAAG,MAAM;YACT,KAAK,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/plugins/pipeline.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,GAAW,EACX,YAAiE,EACjE,MAAe;IAEf,OAAO;QACL,GAAG;QACH,MAAM,EAAE,MAAM,IAAI,GAAG;QACrB,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,QAAQ;QACR,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAyB,EACzB,OAA6B;IAE7B,IAAI,MAAM,GAAG,OAAO,CAAC;IAErB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,GAAG;YACP,GAAG,MAAM;YACT,KAAK,EAAE,CAAC,GAAG,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Default region marker patterns for common file extensions.
3
+ *
4
+ * Each entry maps a file extension to an array of regex patterns (RegExp or string).
5
+ * `{token}` in the pattern source is substituted at parse time with the configured
6
+ * startTag or endTag. The single capturing group `([\w-]+)` captures the region ID.
7
+ *
8
+ * Multiple patterns per extension support multiple comment styles.
9
+ */
10
+ export declare const DEFAULT_REGION_EXTENSION_MAP: Record<string, (string | RegExp)[]>;
11
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/regions/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAO3E,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Default region marker patterns for common file extensions.
3
+ *
4
+ * Each entry maps a file extension to an array of regex patterns (RegExp or string).
5
+ * `{token}` in the pattern source is substituted at parse time with the configured
6
+ * startTag or endTag. The single capturing group `([\w-]+)` captures the region ID.
7
+ *
8
+ * Multiple patterns per extension support multiple comment styles.
9
+ */
10
+ // #region default-extension-map
11
+ // Shared pattern arrays, referenced by multiple extensions below.
12
+ const C_LINE_AND_BLOCK = [/^\s*\/\/\s*{token}\s+([\w-]+)\s*$/, /^\s*\/\*\s*{token}\s+([\w-]+)\s*\*\/\s*$/];
13
+ const C_LINE = [/^\s*\/\/\s*{token}\s+([\w-]+)\s*$/];
14
+ const HASH_LINE = [/^\s*#\s*{token}\s+([\w-]+)\s*$/];
15
+ const HTML_COMMENT = [/^\s*<!--\s*{token}\s+([\w-]+)\s*-->\s*$/];
16
+ const CSS_BLOCK = [/^\s*\/\*\s*{token}\s+([\w-]+)\s*\*\/\s*$/];
17
+ const DOUBLE_DASH = [/^\s*--\s*{token}\s+([\w-]+)\s*$/];
18
+ export const DEFAULT_REGION_EXTENSION_MAP = Object.fromEntries(['ts', 'tsx', 'js', 'jsx', 'mjs', 'cjs', 'mts', 'cts'].map(ext => [`.${ext}`, C_LINE_AND_BLOCK]).concat(['py', 'rb', 'sh', 'bash', 'zsh', 'fish', 'ps1'].map(ext => [`.${ext}`, HASH_LINE]), ['html', 'xml'].map(ext => [`.${ext}`, HTML_COMMENT]), ['css', 'scss'].map(ext => [`.${ext}`, CSS_BLOCK]), ['sql', 'lua'].map(ext => [`.${ext}`, DOUBLE_DASH]), ['go', 'rs', 'swift', 'cs'].map(ext => [`.${ext}`, C_LINE])));
19
+ // #endregion default-extension-map
20
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/regions/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gCAAgC;AAChC,kEAAkE;AAClE,MAAM,gBAAgB,GAAG,CAAC,mCAAmC,EAAE,0CAA0C,CAAC,CAAC;AAC3G,MAAM,MAAM,GAAc,CAAC,mCAAmC,CAAC,CAAC;AAChE,MAAM,SAAS,GAAW,CAAC,gCAAgC,CAAC,CAAC;AAC7D,MAAM,YAAY,GAAQ,CAAC,yCAAyC,CAAC,CAAC;AACtE,MAAM,SAAS,GAAW,CAAC,0CAA0C,CAAC,CAAC;AACvE,MAAM,WAAW,GAAS,CAAC,iCAAiC,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,4BAA4B,GAAwC,MAAM,CAAC,WAAW,CACjG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CACvG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,EACnF,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC,EACrD,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,EAClD,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,EACnD,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAC5D,CAAC,CAAC;AACH,mCAAmC"}
@@ -1,63 +1,25 @@
1
+ import type { FileContentsParser, ParsedRegion } from '../types/index.js';
2
+ interface RegionParseResult {
3
+ hunks: ParsedRegion[];
4
+ parsed: string;
5
+ }
1
6
  /**
2
- * Region parsing implementation
3
- */
4
- import type { RegionMap, RegionOptions } from './types.js';
5
- /**
6
- * Parse all #region/#endregion pairs from code.
7
- * Supports nested regions and language-specific comment syntax.
8
- *
9
- * @param code - The source code to parse
10
- * @param options - Options including file extension for language detection
11
- * @returns Map of region IDs to their content
12
- * @throws Error on unclosed or mismatched regions
13
- *
14
- * @example
15
- * ```typescript
16
- * const regions = parseRegions(tsCode, { extension: 'ts' });
17
- * const setupCode = regions['setup']?.content;
18
- * ```
19
- */
20
- export declare function parseRegions(code: string, options?: RegionOptions): RegionMap;
21
- /**
22
- * Extract a specific region's content by ID.
7
+ * Extract region hunks from file content using the provided extension map.
23
8
  *
24
- * @param code - The source code to parse
25
- * @param regionId - The ID of the region to extract
26
- * @param options - Options including file extension for language detection
27
- * @returns The region's content
28
- * @throws Error if region not found
9
+ * Not exported from barrel files used directly in tests and by createGenericRegionParser.
29
10
  *
30
- * @example
31
- * ```typescript
32
- * const setupCode = extractRegion(code, 'setup', { extension: 'py' });
33
- * ```
11
+ * @param content - File content to parse (should be post-frontmatter-strip if applicable)
12
+ * @param fileName - File name (used to derive extension for map lookup)
13
+ * @param extensionMap - Map of extension array of regex pattern strings with {token}
14
+ * @param startTag - Token substituted for region start markers
15
+ * @param endTag - Token substituted for region end markers
16
+ * @returns Extracted hunks and content with region marker lines stripped
34
17
  */
35
- export declare function extractRegion(code: string, regionId: string, options?: RegionOptions): string;
18
+ export declare function extractRegionFromFileContent(content: string, fileName: string, extensionMap: Record<string, (string | RegExp)[]>, startTag: string, endTag: string): RegionParseResult;
36
19
  /**
37
- * Remove all region marker lines from code.
38
- *
39
- * @param code - The source code to clean
40
- * @param options - Options including file extension for language detection
41
- * @returns Code with all region markers removed
42
- *
43
- * @example
44
- * ```typescript
45
- * const cleanCode = stripRegionMarkers(code, { extension: 'ts' });
46
- * ```
47
- */
48
- export declare function stripRegionMarkers(code: string, options?: RegionOptions): string;
49
- /**
50
- * List all region IDs found in code.
51
- *
52
- * @param code - The source code to scan
53
- * @param options - Options including file extension for language detection
54
- * @returns Array of region IDs
55
- *
56
- * @example
57
- * ```typescript
58
- * const regionIds = listRegions(code, { extension: 'ts' });
59
- * // ['setup', 'main', 'cleanup']
60
- * ```
20
+ * Create a FileContentsParser that extracts region hunks for any extension
21
+ * present in the provided extension map. Used by the scanner for all files.
61
22
  */
62
- export declare function listRegions(code: string, options?: RegionOptions): string[];
23
+ export declare function createGenericRegionParser(extensionMap: Record<string, (string | RegExp)[]>, startTag: string, endTag: string): FileContentsParser;
24
+ export {};
63
25
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/regions/parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAwE3D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB,GAC1B,SAAS,CA4DX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAaR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAYR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,aAAkB,GAC1B,MAAM,EAAE,CAGV"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/regions/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAElB,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,UAAU,iBAAiB;IACzB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAmCD;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,EACjD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,iBAAiB,CAiEnB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,EACjD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAcpB"}
@@ -1,175 +1,107 @@
1
+ import path from 'node:path';
1
2
  /**
2
- * Region parsing implementation
3
+ * Get the pattern source string from a string or RegExp entry.
3
4
  */
4
- import { getLanguageConfig } from './languages.js';
5
- /**
6
- * Create regex patterns for region markers based on comment syntax
7
- */
8
- function createRegionPatterns(lineComment, blockComment) {
9
- const patterns = [];
10
- // Line comment pattern: // #region name
11
- if (lineComment) {
12
- const escaped = escapeRegex(lineComment);
13
- patterns.push(`^\\s*${escaped}\\s*#region\\s+(\\S+)\\s*$`);
14
- }
15
- // Block comment pattern: <!-- #region name -->
16
- if (blockComment) {
17
- const [start, end] = blockComment.map(escapeRegex);
18
- patterns.push(`^\\s*${start}\\s*#region\\s+(\\S+)\\s*${end}\\s*$`);
19
- }
20
- // Combine patterns
21
- const startPattern = patterns.length > 0
22
- ? new RegExp(patterns.join('|'))
23
- : /^\s*\/\/\s*#region\s+(\S+)\s*$/;
24
- // Create end patterns similarly
25
- const endPatterns = [];
26
- if (lineComment) {
27
- const escaped = escapeRegex(lineComment);
28
- endPatterns.push(`^\\s*${escaped}\\s*#endregion\\s+(\\S+)\\s*$`);
29
- }
30
- if (blockComment) {
31
- const [start, end] = blockComment.map(escapeRegex);
32
- endPatterns.push(`^\\s*${start}\\s*#endregion\\s+(\\S+)\\s*${end}\\s*$`);
33
- }
34
- const endPattern = endPatterns.length > 0
35
- ? new RegExp(endPatterns.join('|'))
36
- : /^\s*\/\/\s*#endregion\s+(\S+)\s*$/;
37
- return { start: startPattern, end: endPattern };
5
+ function patternSource(pattern) {
6
+ return typeof pattern === 'string' ? pattern : pattern.source;
38
7
  }
39
8
  /**
40
- * Escape special regex characters
9
+ * Build the start-pattern regex by substituting {token} with startTag.
41
10
  */
42
- function escapeRegex(str) {
43
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
11
+ function buildStartRegex(pattern, startTag) {
12
+ return new RegExp(patternSource(pattern).replace('{token}', startTag));
44
13
  }
45
14
  /**
46
- * Extract the region ID from a match result.
47
- * Handles multiple capture groups from combined patterns.
15
+ * Build the end-pattern regex by substituting {token} with endTag and
16
+ * making the ID capture group optional (since `// #endregion` with no ID is valid).
17
+ * Supports both `\s+(\w+)` and `\s+([\w-]+)` style ID captures.
48
18
  */
49
- function extractRegionId(match) {
50
- // Find the first non-undefined capture group
51
- for (let i = 1; i < match.length; i++) {
52
- if (match[i] !== undefined) {
53
- return match[i];
54
- }
55
- }
56
- throw new Error('No region ID captured');
19
+ function buildEndRegex(pattern, endTag) {
20
+ const withToken = patternSource(pattern).replace('{token}', endTag);
21
+ const withOptional = withToken
22
+ .replace('\\s+([\\w-]+)', '(?:\\s+([\\w-]+))?')
23
+ .replace('\\s+(\\w+)', '(?:\\s+(\\w+))?');
24
+ return new RegExp(withOptional);
57
25
  }
58
26
  /**
59
- * Parse all #region/#endregion pairs from code.
60
- * Supports nested regions and language-specific comment syntax.
27
+ * Extract region hunks from file content using the provided extension map.
61
28
  *
62
- * @param code - The source code to parse
63
- * @param options - Options including file extension for language detection
64
- * @returns Map of region IDs to their content
65
- * @throws Error on unclosed or mismatched regions
29
+ * Not exported from barrel files used directly in tests and by createGenericRegionParser.
66
30
  *
67
- * @example
68
- * ```typescript
69
- * const regions = parseRegions(tsCode, { extension: 'ts' });
70
- * const setupCode = regions['setup']?.content;
71
- * ```
31
+ * @param content - File content to parse (should be post-frontmatter-strip if applicable)
32
+ * @param fileName - File name (used to derive extension for map lookup)
33
+ * @param extensionMap - Map of extension array of regex pattern strings with {token}
34
+ * @param startTag - Token substituted for region start markers
35
+ * @param endTag - Token substituted for region end markers
36
+ * @returns Extracted hunks and content with region marker lines stripped
72
37
  */
73
- export function parseRegions(code, options = {}) {
74
- const config = getLanguageConfig(options.extension ?? 'ts');
75
- const { start: REGION_START, end: REGION_END } = createRegionPatterns(config.lineComment, config.blockComment);
76
- const lines = code.split('\n');
77
- const regions = {};
38
+ export function extractRegionFromFileContent(content, fileName, extensionMap, startTag, endTag) {
39
+ const ext = path.extname(fileName);
40
+ const patterns = extensionMap[ext];
41
+ if (!patterns || patterns.length === 0) {
42
+ return { hunks: [], parsed: content };
43
+ }
44
+ const startRegexes = patterns.map((p) => buildStartRegex(p, startTag));
45
+ const endRegexes = patterns.map((p) => buildEndRegex(p, endTag));
46
+ const lines = content.split('\n');
47
+ const outputLines = [];
48
+ const hunks = [];
78
49
  const stack = [];
79
50
  for (let i = 0; i < lines.length; i++) {
80
51
  const line = lines[i];
81
- const startMatch = line.match(REGION_START);
82
- if (startMatch) {
83
- const id = extractRegionId(startMatch);
84
- stack.push({ id, startLine: i + 1, startIndex: i });
85
- continue;
52
+ const lineNum = i + 1;
53
+ // Try each start pattern
54
+ let startId;
55
+ for (const regex of startRegexes) {
56
+ const m = line.match(regex);
57
+ if (m?.[1]) {
58
+ startId = m[1];
59
+ break;
60
+ }
61
+ }
62
+ if (startId !== undefined) {
63
+ stack.push({ id: startId, startLine: lineNum, lines: [] });
64
+ continue; // strip marker line from output
86
65
  }
87
- const endMatch = line.match(REGION_END);
88
- if (endMatch) {
89
- const endId = extractRegionId(endMatch);
90
- const openRegion = stack.pop();
91
- if (!openRegion) {
92
- throw new Error(`Unexpected #endregion '${endId}' at line ${i + 1}`);
66
+ // Try each end pattern
67
+ let isEndMarker = false;
68
+ for (const regex of endRegexes) {
69
+ if (regex.test(line)) {
70
+ isEndMarker = true;
71
+ break;
93
72
  }
94
- if (openRegion.id !== endId) {
95
- throw new Error(`Mismatched region: opened '${openRegion.id}' at line ${openRegion.startLine}, closed '${endId}' at line ${i + 1}`);
73
+ }
74
+ if (isEndMarker) {
75
+ const entry = stack.pop();
76
+ if (entry) {
77
+ hunks.push({
78
+ id: entry.id,
79
+ content: entry.lines.join('\n'),
80
+ startLine: entry.startLine,
81
+ endLine: lineNum,
82
+ });
96
83
  }
97
- // Extract content between markers (exclusive)
98
- const contentLines = lines.slice(openRegion.startIndex + 1, i);
99
- // Strip nested region markers from content
100
- const content = stripRegionMarkers(contentLines.join('\n'), options);
101
- regions[openRegion.id] = {
102
- startLine: openRegion.startLine,
103
- endLine: i + 1,
104
- content: content.trim(),
105
- };
84
+ continue; // strip marker line from output
85
+ }
86
+ // Regular line add to output and to any open regions
87
+ outputLines.push(line);
88
+ for (const entry of stack) {
89
+ entry.lines.push(line);
106
90
  }
107
91
  }
108
- if (stack.length > 0) {
109
- const unclosed = stack[stack.length - 1];
110
- throw new Error(`Unclosed region '${unclosed.id}' starting at line ${unclosed.startLine}`);
111
- }
112
- return regions;
113
- }
114
- /**
115
- * Extract a specific region's content by ID.
116
- *
117
- * @param code - The source code to parse
118
- * @param regionId - The ID of the region to extract
119
- * @param options - Options including file extension for language detection
120
- * @returns The region's content
121
- * @throws Error if region not found
122
- *
123
- * @example
124
- * ```typescript
125
- * const setupCode = extractRegion(code, 'setup', { extension: 'py' });
126
- * ```
127
- */
128
- export function extractRegion(code, regionId, options = {}) {
129
- const regions = parseRegions(code, options);
130
- if (!(regionId in regions)) {
131
- const available = Object.keys(regions);
132
- const hint = available.length > 0
133
- ? ` Available regions: ${available.join(', ')}`
134
- : ' No regions found in code.';
135
- throw new Error(`Region '${regionId}' not found.${hint}`);
136
- }
137
- return regions[regionId].content;
92
+ return { hunks, parsed: outputLines.join('\n') };
138
93
  }
139
94
  /**
140
- * Remove all region marker lines from code.
141
- *
142
- * @param code - The source code to clean
143
- * @param options - Options including file extension for language detection
144
- * @returns Code with all region markers removed
145
- *
146
- * @example
147
- * ```typescript
148
- * const cleanCode = stripRegionMarkers(code, { extension: 'ts' });
149
- * ```
150
- */
151
- export function stripRegionMarkers(code, options = {}) {
152
- const config = getLanguageConfig(options.extension ?? 'ts');
153
- const { start: REGION_START, end: REGION_END } = createRegionPatterns(config.lineComment, config.blockComment);
154
- const lines = code.split('\n');
155
- const filtered = lines.filter((line) => !REGION_START.test(line) && !REGION_END.test(line));
156
- return filtered.join('\n');
157
- }
158
- /**
159
- * List all region IDs found in code.
160
- *
161
- * @param code - The source code to scan
162
- * @param options - Options including file extension for language detection
163
- * @returns Array of region IDs
164
- *
165
- * @example
166
- * ```typescript
167
- * const regionIds = listRegions(code, { extension: 'ts' });
168
- * // ['setup', 'main', 'cleanup']
169
- * ```
95
+ * Create a FileContentsParser that extracts region hunks for any extension
96
+ * present in the provided extension map. Used by the scanner for all files.
170
97
  */
171
- export function listRegions(code, options = {}) {
172
- const regions = parseRegions(code, options);
173
- return Object.keys(regions);
98
+ export function createGenericRegionParser(extensionMap, startTag, endTag) {
99
+ return {
100
+ name: 'core-region-parser',
101
+ parse(context) {
102
+ const { hunks, parsed } = extractRegionFromFileContent(context.parsed, context.filePath, extensionMap, startTag, endTag);
103
+ return { ...context, parsed, hunks };
104
+ },
105
+ };
174
106
  }
175
107
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/regions/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/regions/parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAOL,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAA6B,UAAU,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,GAChC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CA4MhC"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAOL,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAA6B,UAAU,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,GAChC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CA+NhC"}
@@ -5,9 +5,10 @@ import { minimatch } from 'minimatch';
5
5
  import * as fs from 'node:fs/promises';
6
6
  import * as path from 'node:path';
7
7
  import { createInitialContext, runParsePipeline } from '../plugins/pipeline.js';
8
+ import { createGenericRegionParser } from '../regions/parser.js';
8
9
  import { validateExampleMetadata } from '../plugins/validation.js';
9
10
  import { createSchemaValidator } from '../schema/validator.js';
10
- import { DefaultMap, iter, } from '../types/index.js';
11
+ import { DefaultMap, iter, ScannedExample, } from '../types/index.js';
11
12
  import { resolveCandidates } from './candidates.js';
12
13
  /**
13
14
  * Scan a directory for examples using the provided extractors.
@@ -73,7 +74,7 @@ export async function scanExamples(config) {
73
74
  const filteredExamples = filterExamplesByConflicts(allExamples, unresolvedConflicts, resolvedConflicts);
74
75
  // Step 5: No post-extraction filtering - include/exclude only affect candidate resolution
75
76
  // Step 6: Convert to ScannedExample (compute displayPath)
76
- const scannedExamples = filteredExamples.map((example) => ({
77
+ const scannedExamples = filteredExamples.map((example) => new ScannedExample({
77
78
  ...example,
78
79
  displayPath: path.relative(root, example.rootPath) || '.',
79
80
  metadata: example.metadata,
@@ -99,16 +100,24 @@ export async function scanExamples(config) {
99
100
  addError(displayPath, 'conflict', `File claimed by multiple extractors: ${conflict.claimants.join(', ')}. Add a pathMapping to resolve.`);
100
101
  }
101
102
  // Step 8: Process file contents through parser pipelines
103
+ const regionConfig = {
104
+ startTag: config.region.startTag,
105
+ endTag: config.region.endTag,
106
+ };
107
+ const genericRegionParser = createGenericRegionParser(config.region.fileExtensionMap, config.region.startTag, config.region.endTag);
102
108
  for (const example of scannedExamples) {
103
109
  for (const file of example.files) {
104
110
  const ext = path.extname(file.absolutePath);
105
- const parsers = registry.getParsersForExtension(ext);
111
+ const pluginParsers = registry.getParsersForExtension(ext);
112
+ const hasRegionPatterns = ext in config.region.fileExtensionMap;
113
+ const parsers = hasRegionPatterns
114
+ ? [...pluginParsers, genericRegionParser]
115
+ : pluginParsers;
106
116
  if (parsers.length > 0) {
107
- // Load file content if not already loaded
108
117
  if (file.raw === undefined) {
109
118
  file.raw = await fs.readFile(file.absolutePath, 'utf-8');
110
119
  }
111
- const ctx = createInitialContext(file.absolutePath, file.raw);
120
+ const ctx = createInitialContext(file.absolutePath, file.raw, regionConfig, file.parsed);
112
121
  const result = await runParsePipeline(ctx, parsers);
113
122
  file.parsed = result.parsed;
114
123
  file.hunks = result.hunks;
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/scanner/scanner.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  * Types are defined in @functional-examples/devkit and re-exported here
5
5
  * for backwards compatibility.
6
6
  */
7
- export type { ValidationError, ValidationResult, BaseMetadata, ExampleMetadata, ExampleMetadataRegistry, ParsedRegion, ExampleFile, Example, ScannedExample, ExtractorError, ExtractorOptions, ExtractorResult, Extractor, ExtractorFactory, FileParseContext, FileContentsParser, Plugin, PluginReference, PluginCommands, PluginSchemas, PluginValidators, PluginRegistryInterface, PluginValidatorEntry, PluginSchemaEntry, Config, ConfigWithRoot, ScanConfig, PathMapping, ConfigValidationError, ResolvedConfig, JSONSchemaObject, GenerateConfig, ExtractorConfig, ExtractorReference, ExtractorConfigOrFunction, } from '@functional-examples/devkit';
7
+ export { ExampleFile, ScannedExample } from '@functional-examples/devkit';
8
+ export type { ValidationError, ValidationResult, BaseMetadata, ExampleMetadata, ExampleMetadataRegistry, ParsedRegion, Example, ExtractorError, ExtractorOptions, ExtractorResult, Extractor, ExtractorFactory, FileParseContext, FileContentsParser, Plugin, PluginReference, PluginCommands, PluginSchemas, PluginValidators, PluginRegistryInterface, PluginValidatorEntry, PluginSchemaEntry, Config, ConfigWithRoot, ScanConfig, PathMapping, ConfigValidationError, ResolvedConfig, JSONSchemaObject, GenerateConfig, ExtractorConfig, ExtractorReference, ExtractorConfigOrFunction, } from '@functional-examples/devkit';
8
9
  export type { TypeGuard } from './guards.js';
9
10
  export { DefaultMap } from './default-map.js';
10
11
  export { asSettled, AsyncExtendedIterable, asyncIter, ExtendedIterable, iter, } from './extended-iterable.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAEV,eAAe,EACf,gBAAgB,EAGhB,YAAY,EACZ,eAAe,EACf,uBAAuB,EAGvB,YAAY,EACZ,WAAW,EACX,OAAO,EACP,cAAc,EAGd,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,gBAAgB,EAGhB,gBAAgB,EAChB,kBAAkB,EAGlB,MAAM,EACN,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EAGjB,MAAM,EACN,cAAc,EACd,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,IAAI,GACL,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG1E,YAAY,EAEV,eAAe,EACf,gBAAgB,EAGhB,YAAY,EACZ,eAAe,EACf,uBAAuB,EAGvB,YAAY,EACZ,OAAO,EAGP,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,gBAAgB,EAGhB,gBAAgB,EAChB,kBAAkB,EAGlB,MAAM,EACN,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EAGjB,MAAM,EACN,cAAc,EACd,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,IAAI,GACL,MAAM,wBAAwB,CAAC"}
@@ -4,6 +4,8 @@
4
4
  * Types are defined in @functional-examples/devkit and re-exported here
5
5
  * for backwards compatibility.
6
6
  */
7
+ // Re-export classes (value + type exports)
8
+ export { ExampleFile, ScannedExample } from '@functional-examples/devkit';
7
9
  // Re-export utility classes (internal to core, NOT in devkit)
8
10
  export { DefaultMap } from './default-map.js';
9
11
  export { asSettled, AsyncExtendedIterable, asyncIter, ExtendedIterable, iter, } from './extended-iterable.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyDH,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,IAAI,GACL,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,2CAA2C;AAC3C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAuD1E,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,SAAS,EACT,gBAAgB,EAChB,IAAI,GACL,MAAM,wBAAwB,CAAC"}