@mlightcad/mtext-parser 1.3.3 → 1.4.1
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/dist/example.js +132 -0
- package/dist/example.js.map +1 -0
- package/dist/parser.js +1740 -0
- package/dist/parser.js.map +1 -0
- package/dist/types/parser.d.ts +10 -0
- package/package.json +10 -15
- package/src/example.ts +151 -0
- package/src/parser.test.ts +1897 -0
- package/src/parser.ts +1998 -0
- package/dist/parser.cjs.js +0 -3
- package/dist/parser.cjs.js.map +0 -1
- package/dist/parser.es.js +0 -1095
- package/dist/parser.es.js.map +0 -1
- package/dist/parser.umd.js +0 -3
- package/dist/parser.umd.js.map +0 -1
package/dist/example.js
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { MTextParser, TokenType, MTextContext } from './parser';
|
|
2
|
+
// Example 1: Basic text with formatting
|
|
3
|
+
const basicExample = `
|
|
4
|
+
This is a test of the MText parser\\P
|
|
5
|
+
\\C1;This text is red\\P
|
|
6
|
+
\\H2x;This text is twice the height\\P
|
|
7
|
+
\\S1/2;This is a fraction\\P
|
|
8
|
+
`;
|
|
9
|
+
// Example 2: Paragraph formatting
|
|
10
|
+
const paragraphExample = `
|
|
11
|
+
\\pi2,l4;This paragraph has indentation\\P
|
|
12
|
+
\\pqc;This paragraph is centered\\P
|
|
13
|
+
\\pqr;This paragraph is right-aligned\\P
|
|
14
|
+
`;
|
|
15
|
+
// Example 3: Text styling
|
|
16
|
+
const stylingExample = `
|
|
17
|
+
\\LThis text is underlined\\l\\P
|
|
18
|
+
\\OThis text has an overline\\o\\P
|
|
19
|
+
\\KThis text is struck through\\k\\P
|
|
20
|
+
\\Q15;This text is oblique\\P
|
|
21
|
+
\\T2;This text has increased tracking\\P
|
|
22
|
+
`;
|
|
23
|
+
// Example 4: Colors and special characters
|
|
24
|
+
const colorExample = `
|
|
25
|
+
\\c16711680;This text is blue (RGB)\\P
|
|
26
|
+
%%c This is a diameter symbol\\P
|
|
27
|
+
%%d This is a degree symbol\\P
|
|
28
|
+
%%p This is a plus-minus symbol\\P
|
|
29
|
+
`;
|
|
30
|
+
// Example 5: Caret encoded characters
|
|
31
|
+
const caretExample = `
|
|
32
|
+
^I This is a tab\\P
|
|
33
|
+
^J This is a line break\\P
|
|
34
|
+
1^ 2 This shows a caret\\P
|
|
35
|
+
`;
|
|
36
|
+
// Example 6: Complex formatting with context
|
|
37
|
+
const complexExample = `
|
|
38
|
+
{\\fArial|b1|i0;
|
|
39
|
+
This text is in Arial Bold\\P
|
|
40
|
+
\\H2.5;This text is larger\\P
|
|
41
|
+
\\H.5x;This text is smaller\\P
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
// Function to process tokens and display their properties
|
|
45
|
+
function processTokens(parser, title) {
|
|
46
|
+
console.log(`\n=== ${title} ===\n`);
|
|
47
|
+
for (const token of parser.parse()) {
|
|
48
|
+
// Print token type and data
|
|
49
|
+
switch (token.type) {
|
|
50
|
+
case TokenType.WORD:
|
|
51
|
+
console.log('Word:', token.data);
|
|
52
|
+
break;
|
|
53
|
+
case TokenType.SPACE:
|
|
54
|
+
console.log('Space');
|
|
55
|
+
break;
|
|
56
|
+
case TokenType.NEW_PARAGRAPH:
|
|
57
|
+
console.log('New Paragraph');
|
|
58
|
+
break;
|
|
59
|
+
case TokenType.STACK: {
|
|
60
|
+
const [numerator, denominator, type] = token.data;
|
|
61
|
+
console.log('Stack:', { numerator, denominator, type });
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case TokenType.PROPERTIES_CHANGED:
|
|
65
|
+
console.log('Properties Changed:', token.data);
|
|
66
|
+
break;
|
|
67
|
+
case TokenType.NBSP:
|
|
68
|
+
console.log('Non-breaking space');
|
|
69
|
+
break;
|
|
70
|
+
case TokenType.TABULATOR:
|
|
71
|
+
console.log('Tab');
|
|
72
|
+
break;
|
|
73
|
+
case TokenType.NEW_COLUMN:
|
|
74
|
+
console.log('New Column');
|
|
75
|
+
break;
|
|
76
|
+
case TokenType.WRAP_AT_DIMLINE:
|
|
77
|
+
console.log('Wrap at dimension line');
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
// Print context properties if they differ from defaults
|
|
81
|
+
const ctx = token.ctx;
|
|
82
|
+
const contextProps = {
|
|
83
|
+
font: ctx.fontFace.family ? ctx.fontFace : undefined,
|
|
84
|
+
color: ctx.color.isRgb
|
|
85
|
+
? `RGB(${ctx.color.rgb.join(',')}) [${ctx.color.rgbValue?.toString(16)}]`
|
|
86
|
+
: ctx.color.aci !== null
|
|
87
|
+
? `ACI(${ctx.color.aci})`
|
|
88
|
+
: undefined,
|
|
89
|
+
height: ctx.capHeight.value !== 1.0
|
|
90
|
+
? `${ctx.capHeight.value}${ctx.capHeight.isRelative ? 'x' : ''}`
|
|
91
|
+
: undefined,
|
|
92
|
+
width: ctx.widthFactor.value !== 1.0
|
|
93
|
+
? `${ctx.widthFactor.value}${ctx.widthFactor.isRelative ? 'x' : ''}`
|
|
94
|
+
: undefined,
|
|
95
|
+
tracking: ctx.charTrackingFactor.value !== 1.0 ? ctx.charTrackingFactor : undefined,
|
|
96
|
+
oblique: ctx.oblique !== 0.0 ? ctx.oblique : undefined,
|
|
97
|
+
underline: ctx.underline ? true : undefined,
|
|
98
|
+
overline: ctx.overline ? true : undefined,
|
|
99
|
+
strikeThrough: ctx.strikeThrough ? true : undefined,
|
|
100
|
+
paragraph: Object.keys(ctx.paragraph).some(key => ctx.paragraph[key] !==
|
|
101
|
+
new MTextContext().paragraph[key])
|
|
102
|
+
? ctx.paragraph
|
|
103
|
+
: undefined,
|
|
104
|
+
};
|
|
105
|
+
// Only print non-default context properties
|
|
106
|
+
const nonDefaultProps = Object.entries(contextProps)
|
|
107
|
+
.filter(([_, value]) => value !== undefined)
|
|
108
|
+
.reduce((obj, [key, value]) => ({ ...obj, [key]: value }), {});
|
|
109
|
+
if (Object.keys(nonDefaultProps).length > 0) {
|
|
110
|
+
console.log('Context:', nonDefaultProps);
|
|
111
|
+
}
|
|
112
|
+
console.log('---');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Process all examples
|
|
116
|
+
processTokens(new MTextParser(basicExample), 'Basic Formatting');
|
|
117
|
+
processTokens(new MTextParser(paragraphExample), 'Paragraph Formatting');
|
|
118
|
+
processTokens(new MTextParser(stylingExample), 'Text Styling');
|
|
119
|
+
processTokens(new MTextParser(colorExample), 'Colors and Special Characters');
|
|
120
|
+
processTokens(new MTextParser(caretExample), 'Caret Encoded Characters');
|
|
121
|
+
processTokens(new MTextParser(complexExample), 'Complex Formatting with Context');
|
|
122
|
+
// Example of using custom context
|
|
123
|
+
const customContext = new MTextContext();
|
|
124
|
+
customContext.capHeight = { value: 2.0, isRelative: false };
|
|
125
|
+
customContext.widthFactor = { value: 1.5, isRelative: true };
|
|
126
|
+
customContext.fontFace = { family: 'Times New Roman', style: 'Italic', weight: 400 };
|
|
127
|
+
const customParser = new MTextParser('Text with custom context', customContext);
|
|
128
|
+
processTokens(customParser, 'Custom Context');
|
|
129
|
+
// Example of parsing with property commands
|
|
130
|
+
const propertyParser = new MTextParser('\\C1;Red Text', undefined, { yieldPropertyCommands: true });
|
|
131
|
+
processTokens(propertyParser, 'Property Commands');
|
|
132
|
+
//# sourceMappingURL=example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example.js","sourceRoot":"","sources":["../src/example.ts"],"names":[],"mappings":"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"}
|