@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.
@@ -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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"}