legal-markdown-js 2.2.0 → 2.4.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.
package/README.md CHANGED
@@ -5,8 +5,8 @@
5
5
  > feature parity.
6
6
 
7
7
  Process markdown with YAML front matter, conditional clauses
8
- `[text]{condition}`, cross-references `|variable|`, imports `@import`, and
9
- generate professional PDFs ready to be shared.
8
+ `[text]{condition}`, cross-references `|reference|`, mixins `{{variable}}`,
9
+ imports `@import`, and generate professional PDFs ready to be shared.
10
10
 
11
11
  ![Legal Markdown JS Example](docs/legal-markdown-js-example.png)
12
12
 
@@ -84,8 +84,7 @@ All original Legal Markdown features are fully implemented:
84
84
  `lll.`)
85
85
  - **Optional Clauses**: Boolean, equality, and logical operations
86
86
  (`[text]{condition}`)
87
- - **Cross-References**: All reference types including special date handling
88
- (`|reference|`)
87
+ - **Cross-References**: Internal section references using (`|reference|`) syntax
89
88
  - **Partial Imports**: File inclusion with path resolution (`@import`)
90
89
  - **Metadata Export**: YAML and JSON export with custom paths
91
90
 
@@ -93,7 +92,8 @@ All original Legal Markdown features are fully implemented:
93
92
 
94
93
  Additional features available only in the Node.js version:
95
94
 
96
- - **Mixins System**: Template substitution with `{{variable}}` syntax
95
+ - **Mixins System**: Template substitution and helpers with `{{variable}}`
96
+ syntax
97
97
  - **PDF Generation**: Professional PDF output with styling and field
98
98
  highlighting
99
99
  - **HTML Generation**: Custom HTML output with CSS support
@@ -1 +1 @@
1
- {"version":3,"file":"mixin-processor.d.ts","sourceRoot":"","sources":["../../../src/core/processors/mixin-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAmB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAqUR"}
1
+ {"version":3,"file":"mixin-processor.d.ts","sourceRoot":"","sources":["../../../src/core/processors/mixin-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAmB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,OAAO,GAAE,oBAAyB,GACjC,MAAM,CA0UR"}
@@ -134,6 +134,10 @@ function processMixins(content, metadata, options = {}) {
134
134
  * ```
135
135
  */
136
136
  function resolvePath(obj, path) {
137
+ // Handle special case for current item in template loops
138
+ if (path === '.') {
139
+ return obj?.['.'];
140
+ }
137
141
  return path.split('.').reduce((current, part) => {
138
142
  // Handle array indices like parties.0.name
139
143
  const match = part.match(/^(\w+)\[(\d+)\]$/);
@@ -392,7 +396,7 @@ function processMixins(content, metadata, options = {}) {
392
396
  });
393
397
  }
394
398
  // First process template loops, then regular mixins
395
- const loopProcessedContent = (0, template_loops_1.processTemplateLoops)(content, metadata, undefined, options.enableFieldTrackingInMarkdown);
399
+ const loopProcessedContent = (0, template_loops_1.processTemplateLoops)(content, metadata, undefined, options.enableFieldTrackingInMarkdown || false);
396
400
  return replaceMixins(loopProcessedContent);
397
401
  }
398
402
  //# sourceMappingURL=mixin-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mixin-processor.js","sourceRoot":"","sources":["../../../src/core/processors/mixin-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mixin-processor.js","sourceRoot":"","sources":["../../../src/core/processors/mixin-processor.ts"],"names":[],"mappings":"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"}
@@ -1,115 +1,69 @@
1
1
  /**
2
2
  * @fileoverview Cross-Reference Processing Module for Legal Markdown Documents
3
3
  *
4
- * This module provides functionality to process cross-references in Legal Markdown
5
- * documents, replacing reference placeholders with actual values from metadata.
6
- * It supports various formatting options including date formatting, currency
7
- * formatting, and nested metadata access through dot notation.
4
+ * This module provides functionality to process internal cross-references in Legal Markdown
5
+ * documents, allowing sections to reference other sections by their keys.
6
+ * Based on the original Ruby Legal Markdown specification.
8
7
  *
9
8
  * Features:
10
- * - Cross-reference syntax: |reference_key|
11
- * - Date reference processing with @today support
12
- * - Automatic currency formatting for amount fields
13
- * - Nested metadata value access with dot notation
14
- * - Type-aware value formatting (dates, numbers, strings)
15
- * - Fallback to original reference if value not found
16
- * - Integration with date-processor for date handling
9
+ * - Internal cross-reference syntax: |reference_key|
10
+ * - Automatic section numbering and reference resolution
11
+ * - Reference capture from headers with |key| syntax
12
+ * - Section reference replacement throughout the document
13
+ * - Compatible with legal document numbering (l., ll., lll.)
17
14
  *
18
15
  * @example
19
16
  * ```typescript
20
17
  * import { processCrossReferences } from './reference-processor';
21
18
  *
22
19
  * const content = `
23
- * This agreement is between |client.name| and |provider.name|.
24
- * The total amount is |contract.amount| due on |contract.due_date|.
25
- * Document generated on |@today|.
26
- * `;
20
+ * l. **Definitions** |definitions|
21
+ *
22
+ * Terms defined in |definitions| apply throughout this agreement.
27
23
  *
28
- * const metadata = {
29
- * client: { name: "Acme Corp" },
30
- * provider: { name: "Service Ltd" },
31
- * contract: {
32
- * amount: 25000,
33
- * due_date: new Date("2024-12-31")
34
- * },
35
- * payment_currency: "USD"
36
- * };
24
+ * l. **Payment Terms** |payment|
37
25
  *
38
- * const processed = processCrossReferences(content, metadata);
26
+ * As outlined in |payment|, payment is due within 30 days.
27
+ * Reference to |definitions| for term meanings.
28
+ * `;
29
+ *
30
+ * const processed = processCrossReferences(content, {});
39
31
  * console.log(processed);
40
32
  * // Output:
41
- * // This agreement is between Acme Corp and Service Ltd.
42
- * // The total amount is $25,000.00 due on 2024-12-31.
43
- * // Document generated on 2024-01-15.
33
+ * // Article 1. **Definitions**
34
+ * //
35
+ * // Terms defined in Article 1 apply throughout this agreement.
36
+ * //
37
+ * // Article 2. **Payment Terms**
38
+ * //
39
+ * // As outlined in Article 2, payment is due within 30 days.
40
+ * // Reference to Article 1 for term meanings.
44
41
  * ```
45
42
  */
46
43
  /**
47
- * Processes cross-references in a LegalMarkdown document
44
+ * Processes internal cross-references in a Legal Markdown document
48
45
  *
49
- * This is the main function that processes cross-references using the |reference_key|
50
- * syntax. It first processes date references, then handles regular cross-references
51
- * with automatic formatting based on value type and field names.
46
+ * This function implements a hybrid approach:
47
+ * 1. First tries to resolve |key| as internal section references (Ruby spec)
48
+ * 2. Falls back to metadata values for backward compatibility
52
49
  *
53
50
  * @param {string} content - The document content containing cross-references
54
- * @param {Record<string, any>} metadata - Document metadata with reference values
55
- * @returns {string} Processed content with references replaced by their values
51
+ * @param {Record<string, any>} metadata - Document metadata (used for level formatting and fallback)
52
+ * @returns {string} Processed content with internal references resolved
56
53
  * @example
57
54
  * ```typescript
58
- * // Basic reference processing
59
- * const content = "Payment due: |payment.amount| on |payment.date|";
60
- * const metadata = {
61
- * payment: {
62
- * amount: 1500,
63
- * date: new Date("2024-03-15")
64
- * },
65
- * payment_currency: "EUR"
66
- * };
67
- *
68
- * const result = processCrossReferences(content, metadata);
69
- * // Output: "Payment due: €1,500.00 on 2024-03-15"
55
+ * const content = `
56
+ * l. **Contract Terms** |terms|
70
57
  *
71
- * // Nested reference access
72
- * const content2 = "Contact: |client.contact.email| (|client.contact.phone|)";
73
- * const metadata2 = {
74
- * client: {
75
- * contact: {
76
- * email: "info@client.com",
77
- * phone: "+1-555-0123"
78
- * }
79
- * }
80
- * };
58
+ * As specified in |terms|, this agreement is binding.
59
+ * Reference to |client_name| from metadata.
60
+ * `;
81
61
  *
82
- * const result2 = processCrossReferences(content2, metadata2);
83
- * // Output: "Contact: info@client.com (+1-555-0123)"
62
+ * const metadata = { client_name: "ACME Corp" };
63
+ * const result = processCrossReferences(content, metadata);
64
+ * // |terms| -> "Article 1." (internal reference)
65
+ * // |client_name| -> "ACME Corp" (metadata fallback)
84
66
  * ```
85
67
  */
86
68
  export declare function processCrossReferences(content: string, metadata: Record<string, any>): string;
87
- /**
88
- * Processes special reference formats like dates and currency amounts
89
- *
90
- * Applies appropriate formatting to reference values based on their type and
91
- * optional format specifiers. Handles dates, currency amounts, and falls back
92
- * to string conversion for other types.
93
- *
94
- * @param {any} value - The reference value to format
95
- * @param {string} [format] - Optional format specifier (e.g., "currency:USD:en-US")
96
- * @returns {string} Formatted value as string
97
- * @example
98
- * ```typescript
99
- * // Date formatting
100
- * const date = new Date("2024-03-15");
101
- * console.log(formatReferenceValue(date)); // "2024-03-15"
102
- * console.log(formatReferenceValue(date, "long")); // "March 15, 2024"
103
- * console.log(formatReferenceValue(date, "short")); // "3/15/2024"
104
- *
105
- * // Currency formatting
106
- * console.log(formatReferenceValue(1500, "currency:USD")); // "$1,500.00"
107
- * console.log(formatReferenceValue(1500, "currency:EUR:de-DE")); // "1.500,00 €"
108
- *
109
- * // Default string conversion
110
- * console.log(formatReferenceValue("Hello World")); // "Hello World"
111
- * console.log(formatReferenceValue(12345)); // "12345"
112
- * ```
113
- */
114
- export declare function formatReferenceValue(value: any, format?: string): string;
115
69
  //# sourceMappingURL=reference-processor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-processor.d.ts","sourceRoot":"","sources":["../../../src/core/processors/reference-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CA4B7F;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAgBxE"}
1
+ {"version":3,"file":"reference-processor.d.ts","sourceRoot":"","sources":["../../../src/core/processors/reference-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAWH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAM7F"}