micromark-extension-sub 1.0.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 +75 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/syntax.d.ts +13 -0
- package/dist/syntax.d.ts.map +1 -0
- package/dist/syntax.js +181 -0
- package/dist/syntax.js.map +1 -0
- package/package.json +37 -0
package/README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# micromark-extension-sub
|
|
2
|
+
|
|
3
|
+
[micromark](https://github.com/micromark/micromark) extension for inline substitution syntax (`:sub[INITIAL]{REPLACEMENT}`).
|
|
4
|
+
|
|
5
|
+
Inline substitution enables progressive disclosure — show brief content initially, reveal full content on activation. Useful for TL;DR summaries, spoilers, and interactive learning. For a complete solution, use [`remark-sub`](https://www.npmjs.com/package/remark-sub).
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install micromark-extension-sub
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
import { micromark } from 'micromark'
|
|
17
|
+
import { sub } from 'micromark-extension-sub'
|
|
18
|
+
|
|
19
|
+
const html = micromark(':sub[initial]{replacement}', {
|
|
20
|
+
extensions: [sub()],
|
|
21
|
+
htmlExtensions: [{
|
|
22
|
+
enter: {
|
|
23
|
+
sub() { this.tag('<span class="sub">') }
|
|
24
|
+
},
|
|
25
|
+
exit: {
|
|
26
|
+
subInitialData(token) {
|
|
27
|
+
this.tag('<span class="initial">')
|
|
28
|
+
this.raw(this.sliceSerialize(token))
|
|
29
|
+
this.tag('</span>')
|
|
30
|
+
},
|
|
31
|
+
subReplacementData(token) {
|
|
32
|
+
this.tag('<span class="replacement">')
|
|
33
|
+
this.raw(this.sliceSerialize(token))
|
|
34
|
+
this.tag('</span>')
|
|
35
|
+
},
|
|
36
|
+
sub() { this.tag('</span>') }
|
|
37
|
+
}
|
|
38
|
+
}]
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
// Output: <p><span class="sub"><span class="initial">initial</span><span class="replacement">replacement</span></span></p>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Note:** This extension only tokenizes the syntax. You must provide an `htmlExtensions` handler to render output, or use [`remark-sub`](https://www.npmjs.com/package/remark-sub) for a complete solution.
|
|
45
|
+
|
|
46
|
+
## Tokens
|
|
47
|
+
|
|
48
|
+
- `sub` — The whole construct
|
|
49
|
+
- `subMarker` — The `:sub[`, `]`, `{`, and `}` markers
|
|
50
|
+
- `subInitialData` — The INITIAL content
|
|
51
|
+
- `subReplacementData` — The REPLACEMENT content
|
|
52
|
+
|
|
53
|
+
## Syntax
|
|
54
|
+
|
|
55
|
+
- Starts with `:sub[` (no whitespace allowed)
|
|
56
|
+
- INITIAL ends with `]` (with bracket balancing)
|
|
57
|
+
- REPLACEMENT is between `{` and `}` (with brace balancing)
|
|
58
|
+
- Cannot span multiple lines
|
|
59
|
+
- Must not be preceded by a word character (a-z, A-Z, 0-9, _)
|
|
60
|
+
|
|
61
|
+
## Escaping
|
|
62
|
+
|
|
63
|
+
**In INITIAL:**
|
|
64
|
+
- `\]` → literal `]` (doesn't close)
|
|
65
|
+
- `\[` → literal `[` (no depth change)
|
|
66
|
+
- `\\` → literal `\`
|
|
67
|
+
|
|
68
|
+
**In REPLACEMENT:**
|
|
69
|
+
- `\}` → literal `}` (doesn't close)
|
|
70
|
+
- `\{` → literal `{` (no depth change)
|
|
71
|
+
- `\\` → literal `\`
|
|
72
|
+
|
|
73
|
+
## License
|
|
74
|
+
|
|
75
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/syntax.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Construct, Extension } from 'micromark-util-types';
|
|
2
|
+
declare module 'micromark-util-types' {
|
|
3
|
+
interface TokenTypeMap {
|
|
4
|
+
sub: 'sub';
|
|
5
|
+
subMarker: 'subMarker';
|
|
6
|
+
subInitialData: 'subInitialData';
|
|
7
|
+
subReplacementData: 'subReplacementData';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
declare const subConstruct: Construct;
|
|
11
|
+
export declare function sub(): Extension;
|
|
12
|
+
export { subConstruct };
|
|
13
|
+
//# sourceMappingURL=syntax.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAET,SAAS,EAIV,MAAM,sBAAsB,CAAA;AAE7B,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,YAAY;QACpB,GAAG,EAAE,KAAK,CAAA;QACV,SAAS,EAAE,WAAW,CAAA;QACtB,cAAc,EAAE,gBAAgB,CAAA;QAChC,kBAAkB,EAAE,oBAAoB,CAAA;KACzC;CACF;AAED,QAAA,MAAM,YAAY,EAAE,SAInB,CAAA;AAiMD,wBAAgB,GAAG,IAAI,SAAS,CAM/B;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
package/dist/syntax.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
const subConstruct = {
|
|
2
|
+
name: 'sub',
|
|
3
|
+
tokenize: tokenizeSub,
|
|
4
|
+
previous: previousSub
|
|
5
|
+
};
|
|
6
|
+
function previousSub(code) {
|
|
7
|
+
// :sub[ must not be preceded by an ASCII word character (a-z, A-Z, 0-9, _)
|
|
8
|
+
if (code === null)
|
|
9
|
+
return true; // start of document
|
|
10
|
+
if ((code >= 97 && code <= 122) || // a-z
|
|
11
|
+
(code >= 65 && code <= 90) || // A-Z
|
|
12
|
+
(code >= 48 && code <= 57) || // 0-9
|
|
13
|
+
code === 95 // _
|
|
14
|
+
) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
function tokenizeSub(effects, ok, nok) {
|
|
20
|
+
let bracketDepth = 0;
|
|
21
|
+
let braceDepth = 0;
|
|
22
|
+
return start;
|
|
23
|
+
function start(code) {
|
|
24
|
+
// Must start with ':'
|
|
25
|
+
if (code !== 58)
|
|
26
|
+
return nok(code); // :
|
|
27
|
+
effects.enter('sub');
|
|
28
|
+
effects.enter('subMarker');
|
|
29
|
+
effects.consume(code);
|
|
30
|
+
return colonConsumed;
|
|
31
|
+
}
|
|
32
|
+
function colonConsumed(code) {
|
|
33
|
+
if (code !== 115)
|
|
34
|
+
return nok(code); // s
|
|
35
|
+
effects.consume(code);
|
|
36
|
+
return s;
|
|
37
|
+
}
|
|
38
|
+
function s(code) {
|
|
39
|
+
if (code !== 117)
|
|
40
|
+
return nok(code); // u
|
|
41
|
+
effects.consume(code);
|
|
42
|
+
return su;
|
|
43
|
+
}
|
|
44
|
+
function su(code) {
|
|
45
|
+
if (code !== 98)
|
|
46
|
+
return nok(code); // b
|
|
47
|
+
effects.consume(code);
|
|
48
|
+
return sub;
|
|
49
|
+
}
|
|
50
|
+
function sub(code) {
|
|
51
|
+
if (code !== 91)
|
|
52
|
+
return nok(code); // [
|
|
53
|
+
effects.consume(code);
|
|
54
|
+
effects.exit('subMarker');
|
|
55
|
+
effects.enter('subInitialData');
|
|
56
|
+
bracketDepth = 0;
|
|
57
|
+
return insideInitialStart;
|
|
58
|
+
}
|
|
59
|
+
function insideInitialStart(code) {
|
|
60
|
+
// Empty initial not allowed - must have at least one char
|
|
61
|
+
if (code === 93)
|
|
62
|
+
return nok(code); // ]
|
|
63
|
+
return insideInitial(code);
|
|
64
|
+
}
|
|
65
|
+
function insideInitial(code) {
|
|
66
|
+
// Cannot span lines
|
|
67
|
+
if (code === null || code === -5 || code === -4 || code === -3 || code === 10 || code === 13) {
|
|
68
|
+
return nok(code);
|
|
69
|
+
}
|
|
70
|
+
// Backslash - potential escape
|
|
71
|
+
if (code === 92) { // \
|
|
72
|
+
effects.consume(code);
|
|
73
|
+
return insideInitialAfterBackslash;
|
|
74
|
+
}
|
|
75
|
+
// Opening bracket - increase depth
|
|
76
|
+
if (code === 91) { // [
|
|
77
|
+
bracketDepth++;
|
|
78
|
+
effects.consume(code);
|
|
79
|
+
return insideInitial;
|
|
80
|
+
}
|
|
81
|
+
// Closing bracket
|
|
82
|
+
if (code === 93) { // ]
|
|
83
|
+
if (bracketDepth > 0) {
|
|
84
|
+
bracketDepth--;
|
|
85
|
+
effects.consume(code);
|
|
86
|
+
return insideInitial;
|
|
87
|
+
}
|
|
88
|
+
// End of initial, expect {
|
|
89
|
+
effects.exit('subInitialData');
|
|
90
|
+
effects.enter('subMarker');
|
|
91
|
+
effects.consume(code);
|
|
92
|
+
return afterInitial;
|
|
93
|
+
}
|
|
94
|
+
effects.consume(code);
|
|
95
|
+
return insideInitial;
|
|
96
|
+
}
|
|
97
|
+
function insideInitialAfterBackslash(code) {
|
|
98
|
+
// Cannot span lines
|
|
99
|
+
if (code === null || code === -5 || code === -4 || code === -3 || code === 10 || code === 13) {
|
|
100
|
+
return nok(code);
|
|
101
|
+
}
|
|
102
|
+
// Escaped chars: ] [ \ - consume without special handling
|
|
103
|
+
if (code === 93 || code === 91 || code === 92) {
|
|
104
|
+
effects.consume(code);
|
|
105
|
+
return insideInitial;
|
|
106
|
+
}
|
|
107
|
+
// Not a special char - go back to insideInitial to handle this char normally
|
|
108
|
+
return insideInitial(code);
|
|
109
|
+
}
|
|
110
|
+
function afterInitial(code) {
|
|
111
|
+
if (code !== 123)
|
|
112
|
+
return nok(code); // {
|
|
113
|
+
effects.consume(code);
|
|
114
|
+
effects.exit('subMarker');
|
|
115
|
+
effects.enter('subReplacementData');
|
|
116
|
+
braceDepth = 0;
|
|
117
|
+
return insideReplacementStart;
|
|
118
|
+
}
|
|
119
|
+
function insideReplacementStart(code) {
|
|
120
|
+
// Empty replacement not allowed - must have at least one char
|
|
121
|
+
if (code === 125)
|
|
122
|
+
return nok(code); // }
|
|
123
|
+
return insideReplacement(code);
|
|
124
|
+
}
|
|
125
|
+
function insideReplacement(code) {
|
|
126
|
+
// Cannot span lines
|
|
127
|
+
if (code === null || code === -5 || code === -4 || code === -3 || code === 10 || code === 13) {
|
|
128
|
+
return nok(code);
|
|
129
|
+
}
|
|
130
|
+
// Backslash - potential escape
|
|
131
|
+
if (code === 92) { // \
|
|
132
|
+
effects.consume(code);
|
|
133
|
+
return insideReplacementAfterBackslash;
|
|
134
|
+
}
|
|
135
|
+
// Opening brace - increase depth
|
|
136
|
+
if (code === 123) { // {
|
|
137
|
+
braceDepth++;
|
|
138
|
+
effects.consume(code);
|
|
139
|
+
return insideReplacement;
|
|
140
|
+
}
|
|
141
|
+
// Closing brace
|
|
142
|
+
if (code === 125) { // }
|
|
143
|
+
if (braceDepth > 0) {
|
|
144
|
+
braceDepth--;
|
|
145
|
+
effects.consume(code);
|
|
146
|
+
return insideReplacement;
|
|
147
|
+
}
|
|
148
|
+
// End of replacement
|
|
149
|
+
effects.exit('subReplacementData');
|
|
150
|
+
effects.enter('subMarker');
|
|
151
|
+
effects.consume(code);
|
|
152
|
+
effects.exit('subMarker');
|
|
153
|
+
effects.exit('sub');
|
|
154
|
+
return ok;
|
|
155
|
+
}
|
|
156
|
+
effects.consume(code);
|
|
157
|
+
return insideReplacement;
|
|
158
|
+
}
|
|
159
|
+
function insideReplacementAfterBackslash(code) {
|
|
160
|
+
// Cannot span lines
|
|
161
|
+
if (code === null || code === -5 || code === -4 || code === -3 || code === 10 || code === 13) {
|
|
162
|
+
return nok(code);
|
|
163
|
+
}
|
|
164
|
+
// Escaped chars: } { \ - consume without special handling
|
|
165
|
+
if (code === 125 || code === 123 || code === 92) {
|
|
166
|
+
effects.consume(code);
|
|
167
|
+
return insideReplacement;
|
|
168
|
+
}
|
|
169
|
+
// Not a special char - go back to insideReplacement to handle this char normally
|
|
170
|
+
return insideReplacement(code);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export function sub() {
|
|
174
|
+
return {
|
|
175
|
+
text: {
|
|
176
|
+
58: subConstruct // :
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export { subConstruct };
|
|
181
|
+
//# sourceMappingURL=syntax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax.js","sourceRoot":"","sources":["../src/syntax.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "micromark-extension-sub",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Micromark extension for inline substitution syntax (:sub[...]{...})",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": ["dist"],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"test": "vitest run",
|
|
18
|
+
"test:watch": "vitest",
|
|
19
|
+
"clean": "rm -rf dist"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"micromark-util-symbol": "^2.0.0",
|
|
23
|
+
"micromark-util-types": "^2.0.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"micromark": "^4.0.0",
|
|
27
|
+
"typescript": "^5.7.0",
|
|
28
|
+
"vitest": "^4.0.16"
|
|
29
|
+
},
|
|
30
|
+
"keywords": ["micromark", "substitution", "inline", "toggle"],
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/weavepage/remark-sub.git",
|
|
35
|
+
"directory": "packages/micromark-extension-sub"
|
|
36
|
+
}
|
|
37
|
+
}
|