remark-speech 0.0.1 → 0.10.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 +104 -0
- package/dist/block/from-markdown.d.ts +4 -0
- package/dist/block/from-markdown.d.ts.map +1 -0
- package/dist/block/from-markdown.js +39 -0
- package/dist/block/from-markdown.js.map +1 -0
- package/dist/block/syntax.d.ts +4 -0
- package/dist/block/syntax.d.ts.map +1 -0
- package/dist/block/syntax.js +144 -0
- package/dist/block/syntax.js.map +1 -0
- package/dist/block/to-markdown.d.ts +4 -0
- package/dist/block/to-markdown.d.ts.map +1 -0
- package/dist/block/to-markdown.js +56 -0
- package/dist/block/to-markdown.js.map +1 -0
- package/dist/block/types.d.ts +74 -0
- package/dist/block/types.d.ts.map +1 -0
- package/dist/{logic → block}/types.js.map +1 -1
- package/dist/index.d.ts +16 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -7
- package/dist/index.js.map +1 -1
- package/dist/inline/from-markdown.d.ts +4 -0
- package/dist/inline/from-markdown.d.ts.map +1 -0
- package/dist/inline/from-markdown.js +40 -0
- package/dist/inline/from-markdown.js.map +1 -0
- package/dist/inline/syntax.d.ts +4 -0
- package/dist/inline/syntax.d.ts.map +1 -0
- package/dist/{logic → inline}/syntax.js +61 -13
- package/dist/inline/syntax.js.map +1 -0
- package/dist/inline/to-markdown.d.ts +4 -0
- package/dist/inline/to-markdown.d.ts.map +1 -0
- package/dist/{logic → inline}/to-markdown.js +12 -8
- package/dist/inline/to-markdown.js.map +1 -0
- package/dist/{logic → inline}/types.d.ts +25 -16
- package/dist/inline/types.d.ts.map +1 -0
- package/dist/inline/types.js +2 -0
- package/dist/inline/types.js.map +1 -0
- package/package.json +2 -2
- package/dist/logic/from-markdown.d.ts +0 -3
- package/dist/logic/from-markdown.d.ts.map +0 -1
- package/dist/logic/from-markdown.js +0 -30
- package/dist/logic/from-markdown.js.map +0 -1
- package/dist/logic/syntax.d.ts +0 -4
- package/dist/logic/syntax.d.ts.map +0 -1
- package/dist/logic/syntax.js.map +0 -1
- package/dist/logic/to-markdown.d.ts +0 -4
- package/dist/logic/to-markdown.d.ts.map +0 -1
- package/dist/logic/to-markdown.js.map +0 -1
- package/dist/logic/types.d.ts.map +0 -1
- /package/dist/{logic → block}/types.js +0 -0
package/README.md
CHANGED
|
@@ -30,3 +30,107 @@ console.log(String(file));
|
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
Input and output keep the same direct-speech block syntax, while the plugin adds AST support for working with speaker metadata.
|
|
33
|
+
|
|
34
|
+
## Block speech
|
|
35
|
+
|
|
36
|
+
The above is used for _"normal"_ direct speech that is used in most texts. The plugin also supports block speech, which is used for longer speeches or monologues. These
|
|
37
|
+
can contain multiple paragraphs and generally all block elements. The syntax for block speech is similar to the block quote syntax and is as follows:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Dann holte er aus und begann zu sprechen:
|
|
41
|
+
| [[Johnathan]]
|
|
42
|
+
| Veränderung ist wie der Wind: Manchmal spürt man sie kaum, und doch bewegt sie ganze
|
|
43
|
+
| Bäume. Sie kommt leise, aber ihre Wirkung ist unaufhaltsam. Wer sich ihr widersetzt,
|
|
44
|
+
| wird irgendwann gebrochen. Wer sie annimmt, lernt zu fliegen. Die Frage ist nicht, ob
|
|
45
|
+
| wir uns ändern können, sondern ob wir den Mut haben, uns zu ändern – bevor das Leben es
|
|
46
|
+
| für uns tut.
|
|
47
|
+
|
|
|
48
|
+
| Ein einzelnes Licht kann die Dunkelheit erhellen, aber viele Lichter zusammen schaffen
|
|
49
|
+
| eine Sonne. Gemeinschaft bedeutet nicht, dass wir alle gleich sind, sondern dass
|
|
50
|
+
| wir uns gegenseitig stärken – in Schwäche, in Zweifel, in Freude. Denn niemand von
|
|
51
|
+
| uns ist so stark wie wir alle zusammen.
|
|
52
|
+
|
|
|
53
|
+
| …
|
|
54
|
+
|
|
55
|
+
Sein Redefluss sollte noch viele Stunden ungebrochen weitergehen,
|
|
56
|
+
und doch war es nur ein Anfang.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The marker is configurable, depending on the context it may be more appropriate
|
|
60
|
+
to use a different marker than `|` for block speech.
|
|
61
|
+
The default is `|`, but if your markdown formatter complains you could go to `>`.
|
|
62
|
+
|
|
63
|
+
## Configuration
|
|
64
|
+
|
|
65
|
+
Both inline and block speech support a `requireSpeaker` option.
|
|
66
|
+
|
|
67
|
+
### Inline options
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
import { remarkDirectSpeech } from "remark-speech";
|
|
71
|
+
|
|
72
|
+
unified().use(remarkDirectSpeech, {
|
|
73
|
+
spoken: {
|
|
74
|
+
quote: '"',
|
|
75
|
+
closingQuote: '"',
|
|
76
|
+
requireSpeaker: "optional", // "always" | "never" | "optional"
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Block options
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
import { remarkDirectSpeechBlock } from "remark-speech";
|
|
85
|
+
|
|
86
|
+
unified().use(remarkDirectSpeechBlock, {
|
|
87
|
+
spoken: {
|
|
88
|
+
marker: "|",
|
|
89
|
+
requireSpeaker: "optional", // "always" | "never" | "optional"
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### requireSpeaker behavior
|
|
95
|
+
|
|
96
|
+
- `always`: a speaker in `[[...]]` is required.
|
|
97
|
+
- `never`: a speaker in `[[...]]` is not allowed.
|
|
98
|
+
- `optional`: both forms are allowed.
|
|
99
|
+
|
|
100
|
+
If `requireSpeaker` is omitted, the default is `optional`.
|
|
101
|
+
|
|
102
|
+
When a node has an empty speaker, serialization omits `[[...]]`.
|
|
103
|
+
|
|
104
|
+
## Error Reporting
|
|
105
|
+
|
|
106
|
+
The plugin validates speaker rules during processing and emits parser-visible diagnostics on the VFile.
|
|
107
|
+
|
|
108
|
+
- Violations are added to `file.messages`.
|
|
109
|
+
- Messages are marked as fatal (`message.fatal = true`) so consuming programs can treat them as errors.
|
|
110
|
+
- This is structured diagnostics, not log-only warnings.
|
|
111
|
+
|
|
112
|
+
Example:
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
import { unified } from "unified";
|
|
116
|
+
import remarkParse from "remark-parse";
|
|
117
|
+
import remarkStringify from "remark-stringify";
|
|
118
|
+
import { remarkDirectSpeech } from "remark-speech";
|
|
119
|
+
|
|
120
|
+
const file = unified()
|
|
121
|
+
.use(remarkParse)
|
|
122
|
+
.use(remarkDirectSpeech, {
|
|
123
|
+
spoken: {
|
|
124
|
+
quote: '"',
|
|
125
|
+
requireSpeaker: "always",
|
|
126
|
+
},
|
|
127
|
+
})
|
|
128
|
+
.use(remarkStringify)
|
|
129
|
+
.processSync('"No speaker"');
|
|
130
|
+
|
|
131
|
+
if (file.messages.length > 0) {
|
|
132
|
+
for (const message of file.messages) {
|
|
133
|
+
console.error(String(message));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
```
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Extension as FromMarkdownExtension } from "mdast-util-from-markdown";
|
|
2
|
+
import type { DirectSpeechBlockOptions } from "./types.js";
|
|
3
|
+
export declare function directSpeechBlockFromMarkdown(options: DirectSpeechBlockOptions): FromMarkdownExtension;
|
|
4
|
+
//# sourceMappingURL=from-markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-markdown.d.ts","sourceRoot":"","sources":["../../src/block/from-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,IAAI,qBAAqB,EAEnC,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAqB,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE9E,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,wBAAwB,GAChC,qBAAqB,CAqDvB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function directSpeechBlockFromMarkdown(options) {
|
|
2
|
+
const enterDirectSpeechBlock = function enterDirectSpeechBlock(token) {
|
|
3
|
+
this.enter({
|
|
4
|
+
type: "directSpeechBlock",
|
|
5
|
+
speaker: "",
|
|
6
|
+
speechType: "",
|
|
7
|
+
children: [],
|
|
8
|
+
}, token);
|
|
9
|
+
};
|
|
10
|
+
const enterQuoteMarker = function enterQuoteMarker(token) {
|
|
11
|
+
const quoteMarker = this.sliceSerialize(token);
|
|
12
|
+
const speechType = Object.entries(options ?? {}).find(([_, { marker }]) => marker === quoteMarker)?.[0] ?? "spoken";
|
|
13
|
+
const node = this.stack[this.stack.length - 1];
|
|
14
|
+
if (node.type === "directSpeechBlock") {
|
|
15
|
+
node.speechType = speechType;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const exitDirectSpeechBlock = function exitDirectSpeechBlock(token) {
|
|
19
|
+
this.exit(token);
|
|
20
|
+
};
|
|
21
|
+
const exitDirectSpeechBlockSpeaker = function exitDirectSpeechBlockSpeaker(token) {
|
|
22
|
+
const speaker = this.sliceSerialize(token);
|
|
23
|
+
const node = this.stack[this.stack.length - 1];
|
|
24
|
+
if (node.type === "directSpeechBlock") {
|
|
25
|
+
node.speaker = speaker;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
enter: {
|
|
30
|
+
directSpeechBlock: enterDirectSpeechBlock,
|
|
31
|
+
directSpeechBlockQuoteMarker: enterQuoteMarker,
|
|
32
|
+
},
|
|
33
|
+
exit: {
|
|
34
|
+
directSpeechBlock: exitDirectSpeechBlock,
|
|
35
|
+
directSpeechBlockSpeaker: exitDirectSpeechBlockSpeaker,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=from-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-markdown.js","sourceRoot":"","sources":["../../src/block/from-markdown.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,6BAA6B,CAC3C,OAAiC;IAEjC,MAAM,sBAAsB,GAC1B,SAAS,sBAAsB,CAAC,KAAK;QACnC,IAAI,CAAC,KAAK,CACR;YACE,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACQ,EACtB,KAAK,CACN,CAAC;IACJ,CAAC,CAAC;IAEJ,MAAM,gBAAgB,GAAuB,SAAS,gBAAgB,CACpE,KAAK;QAEL,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GACd,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAChC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,CAC5C,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,qBAAqB,GACzB,SAAS,qBAAqB,CAAC,KAAK;QAClC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEJ,MAAM,4BAA4B,GAChC,SAAS,4BAA4B,CAAC,KAAK;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEJ,OAAO;QACL,KAAK,EAAE;YACL,iBAAiB,EAAE,sBAAsB;YACzC,4BAA4B,EAAE,gBAAgB;SAC/C;QACD,IAAI,EAAE;YACJ,iBAAiB,EAAE,qBAAqB;YACxC,wBAAwB,EAAE,4BAA4B;SACvD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../src/block/syntax.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,SAAS,EAGV,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,SAAS,CAyBX"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { markdownLineEnding, markdownSpace } from "micromark-util-character";
|
|
2
|
+
export function directSpeechBlock(options) {
|
|
3
|
+
const document = Object.fromEntries(Object.entries(options).map(([speechType, { marker }]) => {
|
|
4
|
+
const markerCode = marker.charCodeAt(0);
|
|
5
|
+
const construct = {
|
|
6
|
+
name: "directSpeechBlock",
|
|
7
|
+
tokenize: createDirectSpeechBlockTokenizer(markerCode),
|
|
8
|
+
continuation: {
|
|
9
|
+
tokenize: createDirectSpeechBlockContinuationTokenizer(markerCode),
|
|
10
|
+
},
|
|
11
|
+
exit: exitDirectSpeechBlock,
|
|
12
|
+
};
|
|
13
|
+
return [
|
|
14
|
+
markerCode,
|
|
15
|
+
{
|
|
16
|
+
add: "before",
|
|
17
|
+
...construct,
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
}));
|
|
21
|
+
return {
|
|
22
|
+
document: document,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const exitDirectSpeechBlock = function (effects) {
|
|
26
|
+
effects.exit("directSpeechBlock");
|
|
27
|
+
};
|
|
28
|
+
function createDirectSpeechBlockTokenizer(markerCode) {
|
|
29
|
+
return function tokenizeDirectSpeechBlock(effects, ok, nok) {
|
|
30
|
+
const state = this.containerState ?? {};
|
|
31
|
+
this.containerState = state;
|
|
32
|
+
let hasSpeakerContent = false;
|
|
33
|
+
return start;
|
|
34
|
+
function start(code) {
|
|
35
|
+
if (code !== markerCode) {
|
|
36
|
+
return nok(code);
|
|
37
|
+
}
|
|
38
|
+
effects.enter("directSpeechBlock", { _container: true });
|
|
39
|
+
state["open"] = true;
|
|
40
|
+
effects.enter("directSpeechBlockQuoteMarker");
|
|
41
|
+
effects.consume(code);
|
|
42
|
+
effects.exit("directSpeechBlockQuoteMarker");
|
|
43
|
+
return afterMarker;
|
|
44
|
+
}
|
|
45
|
+
function afterMarker(code) {
|
|
46
|
+
if (markdownSpace(code)) {
|
|
47
|
+
effects.enter("directSpeechBlockPrefixWhitespace");
|
|
48
|
+
effects.consume(code);
|
|
49
|
+
effects.exit("directSpeechBlockPrefixWhitespace");
|
|
50
|
+
return afterMarker;
|
|
51
|
+
}
|
|
52
|
+
if (code === null || markdownLineEnding(code)) {
|
|
53
|
+
return ok(code);
|
|
54
|
+
}
|
|
55
|
+
if (code === 91) {
|
|
56
|
+
// [
|
|
57
|
+
effects.enter("directSpeechBlockMarkerStart");
|
|
58
|
+
effects.consume(code);
|
|
59
|
+
return openSpeakerMarker;
|
|
60
|
+
}
|
|
61
|
+
return nok(code);
|
|
62
|
+
}
|
|
63
|
+
function openSpeakerMarker(code) {
|
|
64
|
+
if (code !== 91) {
|
|
65
|
+
// [
|
|
66
|
+
return nok(code);
|
|
67
|
+
}
|
|
68
|
+
effects.consume(code);
|
|
69
|
+
effects.exit("directSpeechBlockMarkerStart");
|
|
70
|
+
effects.enter("directSpeechBlockSpeaker");
|
|
71
|
+
return speaker;
|
|
72
|
+
}
|
|
73
|
+
function speaker(code) {
|
|
74
|
+
if (code === null || markdownLineEnding(code)) {
|
|
75
|
+
return nok(code);
|
|
76
|
+
}
|
|
77
|
+
if (code === 93) {
|
|
78
|
+
// ]
|
|
79
|
+
if (!hasSpeakerContent) {
|
|
80
|
+
return nok(code);
|
|
81
|
+
}
|
|
82
|
+
effects.exit("directSpeechBlockSpeaker");
|
|
83
|
+
effects.enter("directSpeechBlockMarkerEnd");
|
|
84
|
+
effects.consume(code);
|
|
85
|
+
return closeSpeakerMarker;
|
|
86
|
+
}
|
|
87
|
+
hasSpeakerContent = true;
|
|
88
|
+
effects.consume(code);
|
|
89
|
+
return speaker;
|
|
90
|
+
}
|
|
91
|
+
function closeSpeakerMarker(code) {
|
|
92
|
+
if (code !== 93) {
|
|
93
|
+
// ]
|
|
94
|
+
return nok(code);
|
|
95
|
+
}
|
|
96
|
+
effects.consume(code);
|
|
97
|
+
effects.exit("directSpeechBlockMarkerEnd");
|
|
98
|
+
return afterSpeaker;
|
|
99
|
+
}
|
|
100
|
+
function afterSpeaker(code) {
|
|
101
|
+
// Consume anything else on the first line (trailing whitespace, etc.)
|
|
102
|
+
if (code === null || markdownLineEnding(code)) {
|
|
103
|
+
// End of first line — do NOT exit directSpeechBlock here.
|
|
104
|
+
// micromark calls the `exit` exiter when the block ends.
|
|
105
|
+
return ok(code);
|
|
106
|
+
}
|
|
107
|
+
effects.consume(code);
|
|
108
|
+
return afterSpeaker;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function createDirectSpeechBlockContinuationTokenizer(markerCode) {
|
|
113
|
+
return function tokenizeDirectSpeechBlockContinuation(effects, ok, nok) {
|
|
114
|
+
return contStart;
|
|
115
|
+
function contStart(code) {
|
|
116
|
+
if (code !== markerCode) {
|
|
117
|
+
return nok(code);
|
|
118
|
+
}
|
|
119
|
+
effects.enter("directSpeechBlockQuoteMarker");
|
|
120
|
+
effects.consume(code);
|
|
121
|
+
effects.exit("directSpeechBlockQuoteMarker");
|
|
122
|
+
return afterMarker;
|
|
123
|
+
}
|
|
124
|
+
function afterMarker(code) {
|
|
125
|
+
// Consume optional single space after the marker
|
|
126
|
+
if (markdownSpace(code)) {
|
|
127
|
+
effects.enter("directSpeechBlockPrefixWhitespace");
|
|
128
|
+
effects.consume(code);
|
|
129
|
+
effects.exit("directSpeechBlockPrefixWhitespace");
|
|
130
|
+
return ok;
|
|
131
|
+
}
|
|
132
|
+
return ok(code);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
function getMarker(value, fallback) {
|
|
137
|
+
const resolved = value ?? fallback;
|
|
138
|
+
const symbols = Array.from(resolved);
|
|
139
|
+
if (symbols.length !== 1) {
|
|
140
|
+
throw new Error(`Direct speech block marker must be a single character, received ${JSON.stringify(resolved)}.`);
|
|
141
|
+
}
|
|
142
|
+
return resolved;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=syntax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../src/block/syntax.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Options as ToMarkdownExtension } from "mdast-util-to-markdown";
|
|
2
|
+
import type { DirectSpeechBlockOptions } from "./types.js";
|
|
3
|
+
export declare function directSpeechBlockToMarkdown(options: DirectSpeechBlockOptions): ToMarkdownExtension;
|
|
4
|
+
//# sourceMappingURL=to-markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-markdown.d.ts","sourceRoot":"","sources":["../../src/block/to-markdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,OAAO,IAAI,mBAAmB,EAG/B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAqB,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE9E,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,wBAAwB,GAChC,mBAAmB,CA6BrB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export function directSpeechBlockToMarkdown(options) {
|
|
2
|
+
const marker_to_type = {};
|
|
3
|
+
const type_to_marker = {};
|
|
4
|
+
for (const [speechType, { marker }] of Object.entries(options)) {
|
|
5
|
+
marker_to_type[marker] = speechType;
|
|
6
|
+
type_to_marker[speechType] = marker;
|
|
7
|
+
}
|
|
8
|
+
return {
|
|
9
|
+
handlers: {
|
|
10
|
+
directSpeechBlock: ((node, parent, state, info) => {
|
|
11
|
+
return handleDirectSpeechBlock(node, parent, state, info, {
|
|
12
|
+
marker_to_type,
|
|
13
|
+
type_to_marker,
|
|
14
|
+
});
|
|
15
|
+
}),
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function handleDirectSpeechBlock(node, _parent, state, info, marker_mapping) {
|
|
20
|
+
const tracker = state.createTracker(info);
|
|
21
|
+
const marker = marker_mapping.type_to_marker[node.speechType];
|
|
22
|
+
const markerStr = `${marker} `;
|
|
23
|
+
const speakerPrefix = node.speaker.length > 0 ? ` [[${node.speaker}]]` : "";
|
|
24
|
+
// Start with marker and speaker
|
|
25
|
+
let value = tracker.move(`${marker}${speakerPrefix}`);
|
|
26
|
+
// If there are children, render them with marker prefix on each line
|
|
27
|
+
if (node.children && node.children.length > 0) {
|
|
28
|
+
value += "\n";
|
|
29
|
+
// Render block content
|
|
30
|
+
const flowInfo = {
|
|
31
|
+
...tracker.current(),
|
|
32
|
+
before: value,
|
|
33
|
+
after: "\n",
|
|
34
|
+
};
|
|
35
|
+
const content = state.containerFlow(node, flowInfo);
|
|
36
|
+
// Prefix each line of content with marker
|
|
37
|
+
const lines = content.split("\n");
|
|
38
|
+
const prefixedLines = lines.map((line) => {
|
|
39
|
+
if (line.length === 0) {
|
|
40
|
+
// Empty lines (paragraph separators) get just the marker, no trailing space
|
|
41
|
+
return marker;
|
|
42
|
+
}
|
|
43
|
+
return markerStr + line;
|
|
44
|
+
});
|
|
45
|
+
value += prefixedLines.join("\n");
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
function getSingleCharacter(value, fallback) {
|
|
50
|
+
const resolved = value ?? fallback;
|
|
51
|
+
if (Array.from(resolved).length !== 1) {
|
|
52
|
+
throw new Error(`Direct speech block marker must be a single character, received ${JSON.stringify(resolved)}.`);
|
|
53
|
+
}
|
|
54
|
+
return resolved;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=to-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-markdown.js","sourceRoot":"","sources":["../../src/block/to-markdown.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,2BAA2B,CACzC,OAAiC;IAEjC,MAAM,cAAc,GAA2B,EAAE,CAAC;IAClD,MAAM,cAAc,GAA2B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,cAAc,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;QACpC,cAAc,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;IACtC,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,iBAAiB,EAAE,CAAC,CAClB,IAAa,EACb,MAAe,EACf,KAAY,EACZ,IAAU,EACV,EAAE;gBACF,OAAO,uBAAuB,CAC5B,IAAyB,EACzB,MAA6B,EAC7B,KAAK,EACL,IAAI,EACJ;oBACE,cAAc;oBACd,cAAc;iBACf,CACF,CAAC;YACJ,CAAC,CAAW;SACb;KACF,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAuB,EACvB,OAA4B,EAC5B,KAAY,EACZ,IAAU,EACV,cAGC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,GAAG,MAAM,GAAG,CAAC;IAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5E,gCAAgC;IAChC,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,aAAa,EAAE,CAAC,CAAC;IAEtD,qEAAqE;IACrE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9C,KAAK,IAAI,IAAI,CAAC;QAEd,uBAAuB;QACvB,MAAM,QAAQ,GAAG;YACf,GAAG,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,IAAI;SACZ,CAAC;QAEF,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEpD,0CAA0C;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,4EAA4E;gBAC5E,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAyB,EACzB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC;IAEnC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,mEAAmE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { BlockContent, DefinitionContent, Parent } from "mdast";
|
|
2
|
+
/**
|
|
3
|
+
* mdast node
|
|
4
|
+
*
|
|
5
|
+
* | [[Fay]]
|
|
6
|
+
* | Hallo **Welt**
|
|
7
|
+
*/
|
|
8
|
+
export interface DirectSpeechBlock extends Parent {
|
|
9
|
+
type: "directSpeechBlock";
|
|
10
|
+
/**
|
|
11
|
+
* Name of the speaker within [[...]]
|
|
12
|
+
*/
|
|
13
|
+
speaker: string;
|
|
14
|
+
/**
|
|
15
|
+
* Type of the direct speech, might be thought, spoken, or other.
|
|
16
|
+
*/
|
|
17
|
+
speechType: string;
|
|
18
|
+
children: Array<BlockContent | DefinitionContent>;
|
|
19
|
+
}
|
|
20
|
+
declare module "mdast" {
|
|
21
|
+
interface FlowContentMap {
|
|
22
|
+
directSpeechBlock: DirectSpeechBlock;
|
|
23
|
+
}
|
|
24
|
+
interface RootContentMap {
|
|
25
|
+
directSpeechBlock: DirectSpeechBlock;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Options of the micromark Extension
|
|
30
|
+
*/
|
|
31
|
+
export type DirectSpeechBlockOptions = {
|
|
32
|
+
[speechType: string]: {
|
|
33
|
+
/**
|
|
34
|
+
* Character that is prepended to the speech, similar to blockquotes.
|
|
35
|
+
*
|
|
36
|
+
* Example:
|
|
37
|
+
*
|
|
38
|
+
* | [[Fay]]
|
|
39
|
+
* | Hello
|
|
40
|
+
* ^
|
|
41
|
+
*/
|
|
42
|
+
marker: string;
|
|
43
|
+
/**
|
|
44
|
+
* Whether the speaker is required or not. If true, the speaker must be provided in the [[...]] syntax.
|
|
45
|
+
*/
|
|
46
|
+
requireSpeaker?: "always" | "never" | "optional";
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
declare module "micromark-util-types" {
|
|
50
|
+
interface TokenTypeMap {
|
|
51
|
+
directSpeechBlock: "directSpeechBlock";
|
|
52
|
+
/**
|
|
53
|
+
* [[Fay]]
|
|
54
|
+
*/
|
|
55
|
+
directSpeechBlockSpeaker: "directSpeechBlockSpeaker";
|
|
56
|
+
/**
|
|
57
|
+
* [[
|
|
58
|
+
*/
|
|
59
|
+
directSpeechBlockMarkerStart: "directSpeechBlockMarkerStart";
|
|
60
|
+
/**
|
|
61
|
+
* ]]
|
|
62
|
+
*/
|
|
63
|
+
directSpeechBlockMarkerEnd: "directSpeechBlockMarkerEnd";
|
|
64
|
+
/**
|
|
65
|
+
* default blockquote marker, e.g. |
|
|
66
|
+
*/
|
|
67
|
+
directSpeechBlockQuoteMarker: "directSpeechBlockQuoteMarker";
|
|
68
|
+
/**
|
|
69
|
+
* Optional space after the marker
|
|
70
|
+
*/
|
|
71
|
+
directSpeechBlockPrefixWhitespace: "directSpeechBlockPrefixWhitespace";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/block/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAErE;;;;;GAKG;AACH,MAAM,WAAW,iBAAkB,SAAQ,MAAM;IAC/C,IAAI,EAAE,mBAAmB,CAAC;IAE1B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,YAAY,GAAG,iBAAiB,CAAC,CAAC;CACnD;AAED,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,cAAc;QACtB,iBAAiB,EAAE,iBAAiB,CAAC;KACtC;IAED,UAAU,cAAc;QACtB,iBAAiB,EAAE,iBAAiB,CAAC;KACtC;CACF;AAED;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,CAAC,UAAU,EAAE,MAAM,GAAG;QACpB;;;;;;;;WAQG;QACH,MAAM,EAAE,MAAM,CAAC;QAEf;;WAEG;QACH,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;KAClD,CAAC;CACH,CAAC;AAEF,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,YAAY;QACpB,iBAAiB,EAAE,mBAAmB,CAAC;QAEvC;;WAEG;QACH,wBAAwB,EAAE,0BAA0B,CAAC;QAErD;;WAEG;QACH,4BAA4B,EAAE,8BAA8B,CAAC;QAE7D;;WAEG;QACH,0BAA0B,EAAE,4BAA4B,CAAC;QAEzD;;WAEG;QACH,4BAA4B,EAAE,8BAA8B,CAAC;QAE7D;;WAEG;QACH,iCAAiC,EAAE,mCAAmC,CAAC;KACxE;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/block/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import type { Plugin } from "unified";
|
|
2
2
|
import "remark-stringify";
|
|
3
3
|
import "remark-parse";
|
|
4
|
-
import { directSpeechFromMarkdown } from "./
|
|
5
|
-
import { directSpeech } from "./
|
|
6
|
-
import { directSpeechToMarkdown } from "./
|
|
7
|
-
import type { DirectSpeechOptions } from "./
|
|
4
|
+
import { directSpeechFromMarkdown } from "./inline/from-markdown.js";
|
|
5
|
+
import { directSpeech } from "./inline/syntax.js";
|
|
6
|
+
import { directSpeechToMarkdown } from "./inline/to-markdown.js";
|
|
7
|
+
import type { DirectSpeechOptions } from "./inline/types.js";
|
|
8
|
+
import { directSpeechBlockFromMarkdown } from "./block/from-markdown.js";
|
|
9
|
+
import { directSpeechBlock } from "./block/syntax.js";
|
|
10
|
+
import { directSpeechBlockToMarkdown } from "./block/to-markdown.js";
|
|
11
|
+
import type { DirectSpeechBlockOptions } from "./block/types.js";
|
|
8
12
|
export declare const remarkDirectSpeech: Plugin<[
|
|
9
13
|
(DirectSpeechOptions | null | undefined)?
|
|
10
14
|
]>;
|
|
15
|
+
export declare const remarkDirectSpeechBlock: Plugin<[
|
|
16
|
+
(DirectSpeechBlockOptions | null | undefined)?
|
|
17
|
+
]>;
|
|
11
18
|
export { directSpeechFromMarkdown };
|
|
12
19
|
export { directSpeech };
|
|
13
20
|
export { directSpeechToMarkdown };
|
|
14
|
-
export
|
|
21
|
+
export { directSpeechBlockFromMarkdown };
|
|
22
|
+
export { directSpeechBlock };
|
|
23
|
+
export { directSpeechBlockToMarkdown };
|
|
24
|
+
export type { DirectSpeechInline, DirectSpeechOptions, } from "./inline/types.js";
|
|
25
|
+
export type { DirectSpeechBlock, DirectSpeechBlockOptions, } from "./block/types.js";
|
|
15
26
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAItC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAEV,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAwB1B,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC;IAAC,CAAC,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAAC,CA8C5C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C;IAAC,CAAC,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAAC,CAiDjD,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,OAAO,EAAE,6BAA6B,EAAE,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC7B,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAEvC,YAAY,EACV,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,86 @@
|
|
|
1
|
+
import { visit } from "unist-util-visit";
|
|
1
2
|
import "remark-stringify";
|
|
2
3
|
import "remark-parse";
|
|
3
|
-
import { directSpeechFromMarkdown } from "./
|
|
4
|
-
import { directSpeech } from "./
|
|
5
|
-
import { directSpeechToMarkdown } from "./
|
|
6
|
-
|
|
4
|
+
import { directSpeechFromMarkdown } from "./inline/from-markdown.js";
|
|
5
|
+
import { directSpeech } from "./inline/syntax.js";
|
|
6
|
+
import { directSpeechToMarkdown } from "./inline/to-markdown.js";
|
|
7
|
+
import { directSpeechBlockFromMarkdown } from "./block/from-markdown.js";
|
|
8
|
+
import { directSpeechBlock } from "./block/syntax.js";
|
|
9
|
+
import { directSpeechBlockToMarkdown } from "./block/to-markdown.js";
|
|
10
|
+
function normalizeRequireSpeaker(mode) {
|
|
11
|
+
return mode ?? "optional";
|
|
12
|
+
}
|
|
13
|
+
function reportValidationIssue(file, reason, place) {
|
|
14
|
+
if (typeof file.message === "function") {
|
|
15
|
+
const message = file.message(reason, place, "remark-speech");
|
|
16
|
+
message.fatal = true;
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
throw new Error(reason);
|
|
20
|
+
}
|
|
21
|
+
export const remarkDirectSpeech = function remarkDirectSpeech(options) {
|
|
22
|
+
const resolvedOptions = options ?? {
|
|
23
|
+
spoken: {
|
|
24
|
+
quote: '"',
|
|
25
|
+
closingQuote: '"',
|
|
26
|
+
},
|
|
27
|
+
};
|
|
7
28
|
const data = this.data();
|
|
8
29
|
data.micromarkExtensions = data.micromarkExtensions ?? [];
|
|
9
30
|
data.fromMarkdownExtensions = data.fromMarkdownExtensions ?? [];
|
|
10
31
|
data.toMarkdownExtensions = data.toMarkdownExtensions ?? [];
|
|
11
|
-
data.micromarkExtensions.push(directSpeech(
|
|
12
|
-
data.fromMarkdownExtensions.push(directSpeechFromMarkdown());
|
|
13
|
-
data.toMarkdownExtensions.push(directSpeechToMarkdown(
|
|
32
|
+
data.micromarkExtensions.push(directSpeech(resolvedOptions));
|
|
33
|
+
data.fromMarkdownExtensions.push(directSpeechFromMarkdown(resolvedOptions));
|
|
34
|
+
data.toMarkdownExtensions.push(directSpeechToMarkdown(resolvedOptions));
|
|
35
|
+
return (tree, file) => {
|
|
36
|
+
visit(tree, "directSpeechInline", (node) => {
|
|
37
|
+
const directSpeechNode = node;
|
|
38
|
+
const speechType = directSpeechNode.speechType;
|
|
39
|
+
const speechOptions = resolvedOptions[speechType];
|
|
40
|
+
const requireSpeaker = normalizeRequireSpeaker(speechOptions?.requireSpeaker);
|
|
41
|
+
if (requireSpeaker === "always" &&
|
|
42
|
+
directSpeechNode.speaker.length === 0) {
|
|
43
|
+
reportValidationIssue(file, `Direct speech of type "${speechType}" requires a speaker in [[...]].`, directSpeechNode.position);
|
|
44
|
+
}
|
|
45
|
+
if (requireSpeaker === "never" && directSpeechNode.speaker.length > 0) {
|
|
46
|
+
reportValidationIssue(file, `Direct speech of type "${speechType}" does not allow a speaker in [[...]].`, directSpeechNode.position);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export const remarkDirectSpeechBlock = function remarkDirectSpeechBlock(options) {
|
|
52
|
+
const resolvedOptions = options ?? {
|
|
53
|
+
spoken: {
|
|
54
|
+
marker: "|",
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
const data = this.data();
|
|
58
|
+
data.micromarkExtensions = data.micromarkExtensions ?? [];
|
|
59
|
+
data.fromMarkdownExtensions = data.fromMarkdownExtensions ?? [];
|
|
60
|
+
data.toMarkdownExtensions = data.toMarkdownExtensions ?? [];
|
|
61
|
+
data.micromarkExtensions.push(directSpeechBlock(resolvedOptions));
|
|
62
|
+
data.fromMarkdownExtensions.push(directSpeechBlockFromMarkdown(resolvedOptions));
|
|
63
|
+
data.toMarkdownExtensions.push(directSpeechBlockToMarkdown(resolvedOptions));
|
|
64
|
+
return (tree, file) => {
|
|
65
|
+
visit(tree, "directSpeechBlock", (node) => {
|
|
66
|
+
const directSpeechNode = node;
|
|
67
|
+
const speechType = directSpeechNode.speechType;
|
|
68
|
+
const speechOptions = resolvedOptions[speechType];
|
|
69
|
+
const requireSpeaker = normalizeRequireSpeaker(speechOptions?.requireSpeaker);
|
|
70
|
+
if (requireSpeaker === "always" &&
|
|
71
|
+
directSpeechNode.speaker.length === 0) {
|
|
72
|
+
reportValidationIssue(file, `Direct speech block of type "${speechType}" requires a speaker in [[...]].`, directSpeechNode.position);
|
|
73
|
+
}
|
|
74
|
+
if (requireSpeaker === "never" && directSpeechNode.speaker.length > 0) {
|
|
75
|
+
reportValidationIssue(file, `Direct speech block of type "${speechType}" does not allow a speaker in [[...]].`, directSpeechNode.position);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
};
|
|
14
79
|
};
|
|
15
80
|
export { directSpeechFromMarkdown };
|
|
16
81
|
export { directSpeech };
|
|
17
82
|
export { directSpeechToMarkdown };
|
|
83
|
+
export { directSpeechBlockFromMarkdown };
|
|
84
|
+
export { directSpeechBlock };
|
|
85
|
+
export { directSpeechBlockToMarkdown };
|
|
18
86
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Extension as FromMarkdownExtension } from "mdast-util-from-markdown";
|
|
2
|
+
import type { DirectSpeechOptions } from "./types.js";
|
|
3
|
+
export declare function directSpeechFromMarkdown(options: DirectSpeechOptions): FromMarkdownExtension;
|
|
4
|
+
//# sourceMappingURL=from-markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-markdown.d.ts","sourceRoot":"","sources":["../../src/inline/from-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,IAAI,qBAAqB,EAEnC,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE1E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,mBAAmB,GAC3B,qBAAqB,CAsDvB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export function directSpeechFromMarkdown(options) {
|
|
2
|
+
const enterDirectSpeech = function enterDirectSpeech(token) {
|
|
3
|
+
this.enter({
|
|
4
|
+
type: "directSpeechInline",
|
|
5
|
+
speaker: "",
|
|
6
|
+
speechType: "",
|
|
7
|
+
children: [],
|
|
8
|
+
}, token);
|
|
9
|
+
};
|
|
10
|
+
const enterQuoteMarkerStart = function enterQuoteMarkerStart(token) {
|
|
11
|
+
const qutoeMarker = this.sliceSerialize(token);
|
|
12
|
+
const speechType = Object.entries(options ?? {}).find(([_, { quote }]) => quote === qutoeMarker)?.[0] ?? "spoken";
|
|
13
|
+
const node = this.stack[this.stack.length - 1];
|
|
14
|
+
if (node.type === "directSpeechInline") {
|
|
15
|
+
node.speechType = speechType;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const exitDirectSpeech = function exitDirectSpeech(token) {
|
|
19
|
+
this.exit(token);
|
|
20
|
+
};
|
|
21
|
+
const exitDirectSpeechSpeaker = function exitDirectSpeechSpeaker(token) {
|
|
22
|
+
const speaker = this.sliceSerialize(token);
|
|
23
|
+
const node = this.stack[this.stack.length - 1];
|
|
24
|
+
if (node.type === "directSpeechInline") {
|
|
25
|
+
node.speaker = speaker;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
canContainEols: ["directSpeechInline"],
|
|
30
|
+
enter: {
|
|
31
|
+
directSpeech: enterDirectSpeech,
|
|
32
|
+
directSpeechQuoteMarkerStart: enterQuoteMarkerStart,
|
|
33
|
+
},
|
|
34
|
+
exit: {
|
|
35
|
+
directSpeech: exitDirectSpeech,
|
|
36
|
+
directSpeechSpeaker: exitDirectSpeechSpeaker,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=from-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"from-markdown.js","sourceRoot":"","sources":["../../src/inline/from-markdown.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,wBAAwB,CACtC,OAA4B;IAE5B,MAAM,iBAAiB,GAAuB,SAAS,iBAAiB,CACtE,KAAK;QAEL,IAAI,CAAC,KAAK,CACR;YACE,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACS,EACvB,KAAK,CACN,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,qBAAqB,GACzB,SAAS,qBAAqB,CAAC,KAAK;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,UAAU,GACd,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAChC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,CAC1C,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;IAEJ,MAAM,gBAAgB,GAAuB,SAAS,gBAAgB,CACpE,KAAK;QAEL,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAC3B,SAAS,uBAAuB,CAAC,KAAK;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IACJ,OAAO;QACL,cAAc,EAAE,CAAC,oBAAoB,CAAC;QACtC,KAAK,EAAE;YACL,YAAY,EAAE,iBAAiB;YAC/B,4BAA4B,EAAE,qBAAqB;SACpD;QACD,IAAI,EAAE;YACJ,YAAY,EAAE,gBAAgB;YAC9B,mBAAmB,EAAE,uBAAuB;SAC7C;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../src/inline/syntax.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,SAAS,EAAoB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtD,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAkBpE"}
|
|
@@ -2,24 +2,54 @@ import { markdownLineEndingOrSpace } from "micromark-util-character";
|
|
|
2
2
|
const leftSquareBracket = 91;
|
|
3
3
|
const rightSquareBracket = 93;
|
|
4
4
|
const doubleQuote = 34;
|
|
5
|
-
export function directSpeech(options
|
|
6
|
-
const
|
|
7
|
-
const
|
|
5
|
+
export function directSpeech(options) {
|
|
6
|
+
const tokenizer = createDirectSpeechTokenizer(options);
|
|
7
|
+
const openingQuoteCodePoints = new Set(Object.values(options).map(({ quote }) => getSingleCodePoint(quote, '"')));
|
|
8
|
+
const textConstructs = {};
|
|
9
|
+
for (const codePoint of [leftSquareBracket, ...openingQuoteCodePoints]) {
|
|
10
|
+
textConstructs[codePoint] = {
|
|
11
|
+
add: "before",
|
|
12
|
+
name: "directSpeech",
|
|
13
|
+
tokenize: tokenizer,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
8
16
|
return {
|
|
9
|
-
text:
|
|
10
|
-
[leftSquareBracket]: {
|
|
11
|
-
add: "before",
|
|
12
|
-
name: "directSpeech",
|
|
13
|
-
tokenize: createDirectSpeechTokenizer(quote, closingQuote),
|
|
14
|
-
},
|
|
15
|
-
},
|
|
17
|
+
text: textConstructs,
|
|
16
18
|
};
|
|
17
19
|
}
|
|
18
|
-
function createDirectSpeechTokenizer(
|
|
20
|
+
function createDirectSpeechTokenizer(options) {
|
|
21
|
+
const type_to_opening_quote_code_point = Object.fromEntries(Object.entries(options).map(([speechType, { quote }]) => [
|
|
22
|
+
speechType,
|
|
23
|
+
getSingleCodePoint(quote, '"'),
|
|
24
|
+
]));
|
|
25
|
+
const type_to_closing_quote_code_point = Object.fromEntries(Object.entries(options).map(([speechType, { closingQuote, quote }]) => [
|
|
26
|
+
speechType,
|
|
27
|
+
getSingleCodePoint(closingQuote, quote ?? '"'),
|
|
28
|
+
]));
|
|
29
|
+
const opening_quote_code_points = new Set(Object.values(type_to_opening_quote_code_point));
|
|
30
|
+
const closing_quote_code_point_to_speech_type = Object.fromEntries(Object.entries(type_to_closing_quote_code_point).map(([speechType, closingQuoteCodePoint]) => [
|
|
31
|
+
closingQuoteCodePoint,
|
|
32
|
+
speechType,
|
|
33
|
+
]));
|
|
34
|
+
const opening_quote_code_point_to_speech_type = Object.fromEntries(Object.entries(type_to_opening_quote_code_point).map(([speechType, openingQuoteCodePoint]) => [
|
|
35
|
+
openingQuoteCodePoint,
|
|
36
|
+
speechType,
|
|
37
|
+
]));
|
|
38
|
+
const type_to_require_speaker = Object.fromEntries(Object.entries(options).map(([speechType, { requireSpeaker }]) => [
|
|
39
|
+
speechType,
|
|
40
|
+
requireSpeaker ?? "optional",
|
|
41
|
+
]));
|
|
19
42
|
return function tokenizeDirectSpeech(effects, ok, nok) {
|
|
20
43
|
let hasSpeakerContent = false;
|
|
44
|
+
let speechType;
|
|
45
|
+
const previous = this.previous;
|
|
21
46
|
return start;
|
|
22
47
|
function start(code) {
|
|
48
|
+
if (code !== null &&
|
|
49
|
+
opening_quote_code_points.has(code) &&
|
|
50
|
+
(previous === null || markdownLineEndingOrSpace(previous))) {
|
|
51
|
+
return quoteStart(code);
|
|
52
|
+
}
|
|
23
53
|
if (code !== leftSquareBracket) {
|
|
24
54
|
/* v8 ignore next */
|
|
25
55
|
return nok(code);
|
|
@@ -63,6 +93,23 @@ function createDirectSpeechTokenizer(quote, closingQuote) {
|
|
|
63
93
|
effects.exit("directSpeechSpeakerMarkerEnd");
|
|
64
94
|
return beforeQuote;
|
|
65
95
|
}
|
|
96
|
+
function quoteStart(code) {
|
|
97
|
+
if (code === null || !opening_quote_code_points.has(code)) {
|
|
98
|
+
return nok(code);
|
|
99
|
+
}
|
|
100
|
+
speechType = opening_quote_code_point_to_speech_type[code];
|
|
101
|
+
if (!speechType) {
|
|
102
|
+
return nok(code);
|
|
103
|
+
}
|
|
104
|
+
effects.enter("directSpeech");
|
|
105
|
+
effects.enter("directSpeechQuoteMarkerStart");
|
|
106
|
+
effects.consume(code);
|
|
107
|
+
effects.exit("directSpeechQuoteMarkerStart");
|
|
108
|
+
effects.enter("directSpeechContent", {
|
|
109
|
+
contentType: "text",
|
|
110
|
+
});
|
|
111
|
+
return content;
|
|
112
|
+
}
|
|
66
113
|
function beforeQuote(code) {
|
|
67
114
|
if (code === null) {
|
|
68
115
|
/* v8 ignore next */
|
|
@@ -74,9 +121,10 @@ function createDirectSpeechTokenizer(quote, closingQuote) {
|
|
|
74
121
|
effects.exit("whitespace");
|
|
75
122
|
return beforeQuote;
|
|
76
123
|
}
|
|
77
|
-
if (code
|
|
124
|
+
if (!opening_quote_code_points.has(code)) {
|
|
78
125
|
return nok(code);
|
|
79
126
|
}
|
|
127
|
+
speechType = opening_quote_code_point_to_speech_type[code];
|
|
80
128
|
effects.enter("directSpeechQuoteMarkerStart");
|
|
81
129
|
effects.consume(code);
|
|
82
130
|
effects.exit("directSpeechQuoteMarkerStart");
|
|
@@ -89,7 +137,7 @@ function createDirectSpeechTokenizer(quote, closingQuote) {
|
|
|
89
137
|
if (code === null) {
|
|
90
138
|
return nok(code);
|
|
91
139
|
}
|
|
92
|
-
if (code ===
|
|
140
|
+
if (code === type_to_closing_quote_code_point[speechType]) {
|
|
93
141
|
effects.exit("directSpeechContent");
|
|
94
142
|
effects.enter("directSpeechQuoteMarkerEnd");
|
|
95
143
|
effects.consume(code);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../src/inline/syntax.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Options as ToMarkdownExtension } from "mdast-util-to-markdown";
|
|
2
|
+
import type { DirectSpeechOptions } from "./types.js";
|
|
3
|
+
export declare function directSpeechToMarkdown(options: DirectSpeechOptions): ToMarkdownExtension;
|
|
4
|
+
//# sourceMappingURL=to-markdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-markdown.d.ts","sourceRoot":"","sources":["../../src/inline/to-markdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,OAAO,IAAI,mBAAmB,EAG/B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,YAAY,CAAC;AAE1E,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,mBAAmB,GAC3B,mBAAmB,CAyBrB"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
export function directSpeechToMarkdown(options
|
|
2
|
-
const quote = getSingleCharacter(options.quote, '"');
|
|
3
|
-
const closingQuote = getSingleCharacter(options.closingQuote, quote);
|
|
1
|
+
export function directSpeechToMarkdown(options) {
|
|
4
2
|
return {
|
|
5
3
|
unsafe: [
|
|
6
4
|
{
|
|
@@ -9,15 +7,21 @@ export function directSpeechToMarkdown(options = {}) {
|
|
|
9
7
|
},
|
|
10
8
|
],
|
|
11
9
|
handlers: {
|
|
12
|
-
directSpeechInline(node, parent, state, info) {
|
|
13
|
-
return handleDirectSpeechInline(node, parent, state, info,
|
|
14
|
-
},
|
|
10
|
+
directSpeechInline: ((node, parent, state, info) => {
|
|
11
|
+
return handleDirectSpeechInline(node, parent, state, info, options);
|
|
12
|
+
}),
|
|
15
13
|
},
|
|
16
14
|
};
|
|
17
15
|
}
|
|
18
|
-
function handleDirectSpeechInline(node, _parent, state, info,
|
|
16
|
+
function handleDirectSpeechInline(node, _parent, state, info, options) {
|
|
17
|
+
if (options[node.speechType] === undefined) {
|
|
18
|
+
throw new Error(`Direct speech type "${node.speechType}" is not defined in the options ${JSON.stringify(options)}.`);
|
|
19
|
+
}
|
|
20
|
+
const quote = getSingleCharacter(options[node.speechType].quote, '"');
|
|
21
|
+
const closingQuote = getSingleCharacter(options[node.speechType].closingQuote, quote);
|
|
19
22
|
const tracker = state.createTracker(info);
|
|
20
|
-
|
|
23
|
+
const speakerPrefix = node.speaker.length > 0 ? `[[${node.speaker}]]` : "";
|
|
24
|
+
let value = tracker.move(`${speakerPrefix}${quote}`);
|
|
21
25
|
value += state.containerPhrasing(node, {
|
|
22
26
|
...tracker.current(),
|
|
23
27
|
before: value,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-markdown.js","sourceRoot":"","sources":["../../src/inline/to-markdown.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,sBAAsB,CACpC,OAA4B;IAE5B,OAAO;QACL,MAAM,EAAE;YACN;gBACE,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,UAAU;aACxB;SACF;QACD,QAAQ,EAAE;YACR,kBAAkB,EAAE,CAAC,CACnB,IAAa,EACb,MAAe,EACf,KAAY,EACZ,IAAU,EACV,EAAE;gBACF,OAAO,wBAAwB,CAC7B,IAA0B,EAC1B,MAA6B,EAC7B,KAAK,EACL,IAAI,EACJ,OAAO,CACR,CAAC;YACJ,CAAC,CAAW;SACb;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAwB,EACxB,OAA4B,EAC5B,KAAY,EACZ,IAAU,EACV,OAA4B;IAE5B,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,CAAC,UAAU,mCAAmC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CACpG,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,kBAAkB,CACrC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,EACrC,KAAK,CACN,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,GAAG,KAAK,EAAE,CAAC,CAAC;IAErD,KAAK,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE;QACrC,GAAG,OAAO,CAAC,OAAO,EAAE;QACpB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IAEH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEpC,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,kBAAkB,CACzB,KAAyB,EACzB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC;IAEnC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,oBAAoB;QACpB,MAAM,IAAI,KAAK,CACb,6DAA6D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CACzF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -10,6 +10,10 @@ export interface DirectSpeechInline extends Parent {
|
|
|
10
10
|
* Name of the speaker within [[...]]
|
|
11
11
|
*/
|
|
12
12
|
speaker: string;
|
|
13
|
+
/**
|
|
14
|
+
* Type of the direct speech, might be thought, spoken, or other.
|
|
15
|
+
*/
|
|
16
|
+
speechType: string;
|
|
13
17
|
children: PhrasingContent[];
|
|
14
18
|
}
|
|
15
19
|
declare module "mdast" {
|
|
@@ -23,25 +27,30 @@ declare module "mdast" {
|
|
|
23
27
|
/**
|
|
24
28
|
* Options of the micromark Extension
|
|
25
29
|
*/
|
|
26
|
-
export
|
|
27
|
-
/**
|
|
28
|
-
* Character that opens the speech.
|
|
29
|
-
*
|
|
30
|
-
* Example:
|
|
31
|
-
*
|
|
32
|
-
* [[Fay]]"Hello"
|
|
33
|
-
* ^
|
|
34
|
-
*/
|
|
35
|
-
quote?: string;
|
|
36
|
-
/**
|
|
37
|
-
* Character that closes the speech. If not provided, the opening quote will be used.
|
|
38
|
-
*/
|
|
39
|
-
closingQuote?: string;
|
|
30
|
+
export type DirectSpeechOptions = {
|
|
40
31
|
/**
|
|
41
32
|
* The type of DirectSpeech, might be thought, spoken, or other.
|
|
42
33
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
34
|
+
[speechType: string]: {
|
|
35
|
+
/**
|
|
36
|
+
* Character that opens the speech.
|
|
37
|
+
*
|
|
38
|
+
* Example:
|
|
39
|
+
*
|
|
40
|
+
* [[Fay]]"Hello"
|
|
41
|
+
* ^
|
|
42
|
+
*/
|
|
43
|
+
quote?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Character that closes the speech. If not provided, the opening quote will be used.
|
|
46
|
+
*/
|
|
47
|
+
closingQuote?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Whether the speaker is required or not. If true, the speaker must be provided in the [[...]] syntax.
|
|
50
|
+
*/
|
|
51
|
+
requireSpeaker?: "always" | "never" | "optional";
|
|
52
|
+
};
|
|
53
|
+
};
|
|
45
54
|
declare module "micromark-util-types" {
|
|
46
55
|
interface TokenTypeMap {
|
|
47
56
|
directSpeech: "directSpeech";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/inline/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,kBAAmB,SAAQ,MAAM;IAChD,IAAI,EAAE,oBAAoB,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,kBAAkB;QAC1B,kBAAkB,EAAE,kBAAkB,CAAC;KACxC;IAED,UAAU,cAAc;QACtB,kBAAkB,EAAE,kBAAkB,CAAC;KACxC;CACF;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC;;OAEG;IACH,CAAC,UAAU,EAAE,MAAM,GAAG;QACpB;;;;;;;WAOG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QAEf;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB;;WAEG;QACH,cAAc,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;KAClD,CAAC;CACH,CAAC;AAEF,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,YAAY;QACpB,YAAY,EAAE,cAAc,CAAC;QAE7B;;WAEG;QACH,mBAAmB,EAAE,qBAAqB,CAAC;QAE3C;;WAEG;QACH,mBAAmB,EAAE,qBAAqB,CAAC;QAE3C;;WAEG;QACH,8BAA8B,EAAE,gCAAgC,CAAC;QAEjE;;WAEG;QACH,4BAA4B,EAAE,8BAA8B,CAAC;QAE7D;;WAEG;QACH,4BAA4B,EAAE,8BAA8B,CAAC;QAE7D;;WAEG;QACH,0BAA0B,EAAE,4BAA4B,CAAC;KAC1D;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/inline/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remark-speech",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Remark plugin to add direct speech with metadata for speaker element in markdown",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
},
|
|
88
88
|
"sideEffects": false,
|
|
89
89
|
"typeCoverage": {
|
|
90
|
-
"atLeast":
|
|
90
|
+
"atLeast": 100,
|
|
91
91
|
"detail": true,
|
|
92
92
|
"ignoreAsAssertion": true,
|
|
93
93
|
"ignoreNonNullAssertion": true,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"from-markdown.d.ts","sourceRoot":"","sources":["../../src/logic/from-markdown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,IAAI,qBAAqB,EAEnC,MAAM,0BAA0B,CAAC;AAIlC,wBAAgB,wBAAwB,IAAI,qBAAqB,CAWhE"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export function directSpeechFromMarkdown() {
|
|
2
|
-
return {
|
|
3
|
-
canContainEols: ["directSpeechInline"],
|
|
4
|
-
enter: {
|
|
5
|
-
directSpeech: enterDirectSpeech,
|
|
6
|
-
},
|
|
7
|
-
exit: {
|
|
8
|
-
directSpeech: exitDirectSpeech,
|
|
9
|
-
directSpeechSpeaker: exitDirectSpeechSpeaker,
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
const enterDirectSpeech = function enterDirectSpeech(token) {
|
|
14
|
-
this.enter({
|
|
15
|
-
type: "directSpeechInline",
|
|
16
|
-
speaker: "",
|
|
17
|
-
children: [],
|
|
18
|
-
}, token);
|
|
19
|
-
};
|
|
20
|
-
const exitDirectSpeech = function exitDirectSpeech(token) {
|
|
21
|
-
this.exit(token);
|
|
22
|
-
};
|
|
23
|
-
const exitDirectSpeechSpeaker = function exitDirectSpeechSpeaker(token) {
|
|
24
|
-
const speaker = this.sliceSerialize(token);
|
|
25
|
-
const node = this.stack[this.stack.length - 1];
|
|
26
|
-
if (node.type === "directSpeechInline") {
|
|
27
|
-
node.speaker = speaker;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=from-markdown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"from-markdown.js","sourceRoot":"","sources":["../../src/logic/from-markdown.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,cAAc,EAAE,CAAC,oBAAoB,CAAC;QACtC,KAAK,EAAE;YACL,YAAY,EAAE,iBAAiB;SAChC;QACD,IAAI,EAAE;YACJ,YAAY,EAAE,gBAAgB;YAC9B,mBAAmB,EAAE,uBAAuB;SAC7C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAuB,SAAS,iBAAiB,CACtE,KAAK;IAEL,IAAI,CAAC,KAAK,CACR;QACE,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;KACS,EACvB,KAAK,CACN,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAuB,SAAS,gBAAgB,CAAC,KAAK;IAC1E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAC3B,SAAS,uBAAuB,CAAC,KAAK;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;AACH,CAAC,CAAC"}
|
package/dist/logic/syntax.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../src/logic/syntax.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,SAAS,EAAoB,MAAM,sBAAsB,CAAC;AAE9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtD,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,SAAS,CAgBzE"}
|
package/dist/logic/syntax.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../src/logic/syntax.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAKrE,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,MAAM,UAAU,YAAY,CAAC,UAA+B,EAAE;IAC5D,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,kBAAkB,CACrC,OAAO,CAAC,YAAY,EACpB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAC5B,CAAC;IAEF,OAAO;QACL,IAAI,EAAE;YACJ,CAAC,iBAAiB,CAAC,EAAE;gBACnB,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,2BAA2B,CAAC,KAAK,EAAE,YAAY,CAAC;aAC3D;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAa,EACb,YAAoB;IAEpB,OAAO,SAAS,oBAAoB,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG;QACnD,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAE9B,OAAO,KAAK,CAAC;QAEb,SAAS,KAAK,CAAC,IAAU;YACvB,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBAC/B,oBAAoB;gBACpB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAChD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,SAAS,iBAAiB,CAAC,IAAU;YACnC,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBAC/B,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,SAAS,OAAO,CAAC,IAAU;YACzB,IAAI,IAAI,KAAK,IAAI,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACvB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAC9C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,kBAAkB,CAAC;YAC5B,CAAC;YAED,iBAAiB,GAAG,IAAI,CAAC;YACzB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,SAAS,kBAAkB,CAAC,IAAU;YACpC,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAChC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,SAAS,WAAW,CAAC,IAAU;YAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,oBAAoB;gBACpB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED,IAAI,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC5B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3B,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC9C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBACnC,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,SAAS,OAAO,CAAC,IAAU;YACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBAC5C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC7B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAyB,EACzB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,6DAA6D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CACzF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;AAClD,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { Options as ToMarkdownExtension } from "mdast-util-to-markdown";
|
|
2
|
-
import type { DirectSpeechOptions } from "./types.js";
|
|
3
|
-
export declare function directSpeechToMarkdown(options?: DirectSpeechOptions): ToMarkdownExtension;
|
|
4
|
-
//# sourceMappingURL=to-markdown.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-markdown.d.ts","sourceRoot":"","sources":["../../src/logic/to-markdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,OAAO,IAAI,mBAAmB,EAE/B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,YAAY,CAAC;AAE1E,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,mBAAwB,GAChC,mBAAmB,CAwBrB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-markdown.js","sourceRoot":"","sources":["../../src/logic/to-markdown.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,sBAAsB,CACpC,UAA+B,EAAE;IAEjC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAErE,OAAO;QACL,MAAM,EAAE;YACN;gBACE,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,UAAU;aACxB;SACF;QACD,QAAQ,EAAE;YACR,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI;gBAC1C,OAAO,wBAAwB,CAC7B,IAA0B,EAC1B,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,YAAY,CACb,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAwB,EACxB,OAA4B,EAC5B,KAAY,EACZ,IAAU,EACV,KAAa,EACb,YAAoB;IAEpB,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;IAExD,KAAK,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE;QACrC,GAAG,OAAO,CAAC,OAAO,EAAE;QACpB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IAEH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEpC,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,kBAAkB,CACzB,KAAyB,EACzB,QAAgB;IAEhB,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC;IAEnC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,oBAAoB;QACpB,MAAM,IAAI,KAAK,CACb,6DAA6D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CACzF,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/logic/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,kBAAmB,SAAQ,MAAM;IAChD,IAAI,EAAE,oBAAoB,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,OAAO,QAAQ,OAAO,CAAC;IACrB,UAAU,kBAAkB;QAC1B,kBAAkB,EAAE,kBAAkB,CAAC;KACxC;IAED,UAAU,cAAc;QACtB,kBAAkB,EAAE,kBAAkB,CAAC;KACxC;CACF;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,YAAY;QACpB,YAAY,EAAE,cAAc,CAAC;QAE7B;;WAEG;QACH,mBAAmB,EAAE,qBAAqB,CAAC;QAE3C;;WAEG;QACH,mBAAmB,EAAE,qBAAqB,CAAC;QAE3C;;WAEG;QACH,8BAA8B,EAAE,gCAAgC,CAAC;QAEjE;;WAEG;QACH,4BAA4B,EAAE,8BAA8B,CAAC;QAE7D;;WAEG;QACH,4BAA4B,EAAE,8BAA8B,CAAC;QAE7D;;WAEG;QACH,0BAA0B,EAAE,4BAA4B,CAAC;KAC1D;CACF"}
|
|
File without changes
|