remark-speech 0.0.1 → 0.9.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.
Files changed (49) hide show
  1. package/README.md +29 -0
  2. package/dist/block/from-markdown.d.ts +4 -0
  3. package/dist/block/from-markdown.d.ts.map +1 -0
  4. package/dist/block/from-markdown.js +39 -0
  5. package/dist/block/from-markdown.js.map +1 -0
  6. package/dist/block/syntax.d.ts +4 -0
  7. package/dist/block/syntax.d.ts.map +1 -0
  8. package/dist/block/syntax.js +141 -0
  9. package/dist/block/syntax.js.map +1 -0
  10. package/dist/block/to-markdown.d.ts +4 -0
  11. package/dist/block/to-markdown.d.ts.map +1 -0
  12. package/dist/block/to-markdown.js +55 -0
  13. package/dist/block/to-markdown.js.map +1 -0
  14. package/dist/block/types.d.ts +70 -0
  15. package/dist/block/types.d.ts.map +1 -0
  16. package/dist/{logic → block}/types.js.map +1 -1
  17. package/dist/index.d.ts +16 -5
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +33 -7
  20. package/dist/index.js.map +1 -1
  21. package/dist/inline/from-markdown.d.ts +4 -0
  22. package/dist/inline/from-markdown.d.ts.map +1 -0
  23. package/dist/inline/from-markdown.js +40 -0
  24. package/dist/inline/from-markdown.js.map +1 -0
  25. package/dist/inline/syntax.d.ts +4 -0
  26. package/dist/inline/syntax.d.ts.map +1 -0
  27. package/dist/{logic → inline}/syntax.js +24 -7
  28. package/dist/inline/syntax.js.map +1 -0
  29. package/dist/inline/to-markdown.d.ts +4 -0
  30. package/dist/inline/to-markdown.d.ts.map +1 -0
  31. package/dist/{logic → inline}/to-markdown.js +10 -7
  32. package/dist/inline/to-markdown.js.map +1 -0
  33. package/dist/{logic → inline}/types.d.ts +21 -16
  34. package/dist/inline/types.d.ts.map +1 -0
  35. package/dist/inline/types.js +2 -0
  36. package/dist/inline/types.js.map +1 -0
  37. package/package.json +2 -2
  38. package/dist/logic/from-markdown.d.ts +0 -3
  39. package/dist/logic/from-markdown.d.ts.map +0 -1
  40. package/dist/logic/from-markdown.js +0 -30
  41. package/dist/logic/from-markdown.js.map +0 -1
  42. package/dist/logic/syntax.d.ts +0 -4
  43. package/dist/logic/syntax.d.ts.map +0 -1
  44. package/dist/logic/syntax.js.map +0 -1
  45. package/dist/logic/to-markdown.d.ts +0 -4
  46. package/dist/logic/to-markdown.d.ts.map +0 -1
  47. package/dist/logic/to-markdown.js.map +0 -1
  48. package/dist/logic/types.d.ts.map +0 -1
  49. /package/dist/{logic → block}/types.js +0 -0
package/README.md CHANGED
@@ -30,3 +30,32 @@ 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 `|`, bot if your markdown formatter complains you could go to `>`.
@@ -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,4 @@
1
+ import type { Extension } from "micromark-util-types";
2
+ import type { DirectSpeechBlockOptions } from "./types.js";
3
+ export declare function directSpeechBlock(options: DirectSpeechBlockOptions): Extension;
4
+ //# sourceMappingURL=syntax.d.ts.map
@@ -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,141 @@
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 === 91) {
53
+ // [
54
+ effects.enter("directSpeechBlockMarkerStart");
55
+ effects.consume(code);
56
+ return openSpeakerMarker;
57
+ }
58
+ return nok(code);
59
+ }
60
+ function openSpeakerMarker(code) {
61
+ if (code !== 91) {
62
+ // [
63
+ return nok(code);
64
+ }
65
+ effects.consume(code);
66
+ effects.exit("directSpeechBlockMarkerStart");
67
+ effects.enter("directSpeechBlockSpeaker");
68
+ return speaker;
69
+ }
70
+ function speaker(code) {
71
+ if (code === null || markdownLineEnding(code)) {
72
+ return nok(code);
73
+ }
74
+ if (code === 93) {
75
+ // ]
76
+ if (!hasSpeakerContent) {
77
+ return nok(code);
78
+ }
79
+ effects.exit("directSpeechBlockSpeaker");
80
+ effects.enter("directSpeechBlockMarkerEnd");
81
+ effects.consume(code);
82
+ return closeSpeakerMarker;
83
+ }
84
+ hasSpeakerContent = true;
85
+ effects.consume(code);
86
+ return speaker;
87
+ }
88
+ function closeSpeakerMarker(code) {
89
+ if (code !== 93) {
90
+ // ]
91
+ return nok(code);
92
+ }
93
+ effects.consume(code);
94
+ effects.exit("directSpeechBlockMarkerEnd");
95
+ return afterSpeaker;
96
+ }
97
+ function afterSpeaker(code) {
98
+ // Consume anything else on the first line (trailing whitespace, etc.)
99
+ if (code === null || markdownLineEnding(code)) {
100
+ // End of first line — do NOT exit directSpeechBlock here.
101
+ // micromark calls the `exit` exiter when the block ends.
102
+ return ok(code);
103
+ }
104
+ effects.consume(code);
105
+ return afterSpeaker;
106
+ }
107
+ };
108
+ }
109
+ function createDirectSpeechBlockContinuationTokenizer(markerCode) {
110
+ return function tokenizeDirectSpeechBlockContinuation(effects, ok, nok) {
111
+ return contStart;
112
+ function contStart(code) {
113
+ if (code !== markerCode) {
114
+ return nok(code);
115
+ }
116
+ effects.enter("directSpeechBlockQuoteMarker");
117
+ effects.consume(code);
118
+ effects.exit("directSpeechBlockQuoteMarker");
119
+ return afterMarker;
120
+ }
121
+ function afterMarker(code) {
122
+ // Consume optional single space after the marker
123
+ if (markdownSpace(code)) {
124
+ effects.enter("directSpeechBlockPrefixWhitespace");
125
+ effects.consume(code);
126
+ effects.exit("directSpeechBlockPrefixWhitespace");
127
+ return ok;
128
+ }
129
+ return ok(code);
130
+ }
131
+ };
132
+ }
133
+ function getMarker(value, fallback) {
134
+ const resolved = value ?? fallback;
135
+ const symbols = Array.from(resolved);
136
+ if (symbols.length !== 1) {
137
+ throw new Error(`Direct speech block marker must be a single character, received ${JSON.stringify(resolved)}.`);
138
+ }
139
+ return resolved;
140
+ }
141
+ //# 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,55 @@
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
+ // Start with marker and speaker
24
+ let value = tracker.move(`${marker} [[${node.speaker}]]`);
25
+ // If there are children, render them with marker prefix on each line
26
+ if (node.children && node.children.length > 0) {
27
+ value += "\n";
28
+ // Render block content
29
+ const flowInfo = {
30
+ ...tracker.current(),
31
+ before: value,
32
+ after: "\n",
33
+ };
34
+ const content = state.containerFlow(node, flowInfo);
35
+ // Prefix each line of content with marker
36
+ const lines = content.split("\n");
37
+ const prefixedLines = lines.map((line) => {
38
+ if (line.length === 0) {
39
+ // Empty lines (paragraph separators) get just the marker, no trailing space
40
+ return marker;
41
+ }
42
+ return markerStr + line;
43
+ });
44
+ value += prefixedLines.join("\n");
45
+ }
46
+ return value;
47
+ }
48
+ function getSingleCharacter(value, fallback) {
49
+ const resolved = value ?? fallback;
50
+ if (Array.from(resolved).length !== 1) {
51
+ throw new Error(`Direct speech block marker must be a single character, received ${JSON.stringify(resolved)}.`);
52
+ }
53
+ return resolved;
54
+ }
55
+ //# 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;IAE/B,gCAAgC;IAChC,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IAE1D,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,70 @@
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
+ };
45
+ declare module "micromark-util-types" {
46
+ interface TokenTypeMap {
47
+ directSpeechBlock: "directSpeechBlock";
48
+ /**
49
+ * [[Fay]]
50
+ */
51
+ directSpeechBlockSpeaker: "directSpeechBlockSpeaker";
52
+ /**
53
+ * [[
54
+ */
55
+ directSpeechBlockMarkerStart: "directSpeechBlockMarkerStart";
56
+ /**
57
+ * ]]
58
+ */
59
+ directSpeechBlockMarkerEnd: "directSpeechBlockMarkerEnd";
60
+ /**
61
+ * default blockquote marker, e.g. |
62
+ */
63
+ directSpeechBlockQuoteMarker: "directSpeechBlockQuoteMarker";
64
+ /**
65
+ * Optional space after the marker
66
+ */
67
+ directSpeechBlockPrefixWhitespace: "directSpeechBlockPrefixWhitespace";
68
+ }
69
+ }
70
+ //# 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;KAChB,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/logic/types.ts"],"names":[],"mappings":""}
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 "./logic/from-markdown.js";
5
- import { directSpeech } from "./logic/syntax.js";
6
- import { directSpeechToMarkdown } from "./logic/to-markdown.js";
7
- import type { DirectSpeechOptions } from "./logic/types.js";
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 type { DirectSpeechInline, DirectSpeechOptions } from "./logic/types.js";
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
@@ -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;AAEtC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC;IAAC,CAAC,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAAC,CAU5C,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAElC,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,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,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,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,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC;IAAC,CAAC,mBAAmB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAAC,CAgB5C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAC1C;IAAC,CAAC,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAAC,CAmBjD,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,44 @@
1
1
  import "remark-stringify";
2
2
  import "remark-parse";
3
- import { directSpeechFromMarkdown } from "./logic/from-markdown.js";
4
- import { directSpeech } from "./logic/syntax.js";
5
- import { directSpeechToMarkdown } from "./logic/to-markdown.js";
6
- export const remarkDirectSpeech = function remarkDirectSpeech(options = {}) {
3
+ import { directSpeechFromMarkdown } from "./inline/from-markdown.js";
4
+ import { directSpeech } from "./inline/syntax.js";
5
+ import { directSpeechToMarkdown } from "./inline/to-markdown.js";
6
+ import { directSpeechBlockFromMarkdown } from "./block/from-markdown.js";
7
+ import { directSpeechBlock } from "./block/syntax.js";
8
+ import { directSpeechBlockToMarkdown } from "./block/to-markdown.js";
9
+ export const remarkDirectSpeech = function remarkDirectSpeech(options) {
10
+ const resolvedOptions = options ?? {
11
+ spoken: {
12
+ quote: '"',
13
+ closingQuote: '"',
14
+ },
15
+ };
7
16
  const data = this.data();
8
17
  data.micromarkExtensions = data.micromarkExtensions ?? [];
9
18
  data.fromMarkdownExtensions = data.fromMarkdownExtensions ?? [];
10
19
  data.toMarkdownExtensions = data.toMarkdownExtensions ?? [];
11
- data.micromarkExtensions.push(directSpeech(options ?? {}));
12
- data.fromMarkdownExtensions.push(directSpeechFromMarkdown());
13
- data.toMarkdownExtensions.push(directSpeechToMarkdown(options ?? {}));
20
+ data.micromarkExtensions.push(directSpeech(resolvedOptions));
21
+ data.fromMarkdownExtensions.push(directSpeechFromMarkdown(resolvedOptions));
22
+ data.toMarkdownExtensions.push(directSpeechToMarkdown(resolvedOptions));
23
+ };
24
+ export const remarkDirectSpeechBlock = function remarkDirectSpeechBlock(options) {
25
+ const resolvedOptions = options ?? {
26
+ spoken: {
27
+ marker: "|",
28
+ },
29
+ };
30
+ const data = this.data();
31
+ data.micromarkExtensions = data.micromarkExtensions ?? [];
32
+ data.fromMarkdownExtensions = data.fromMarkdownExtensions ?? [];
33
+ data.toMarkdownExtensions = data.toMarkdownExtensions ?? [];
34
+ data.micromarkExtensions.push(directSpeechBlock(resolvedOptions));
35
+ data.fromMarkdownExtensions.push(directSpeechBlockFromMarkdown(resolvedOptions));
36
+ data.toMarkdownExtensions.push(directSpeechBlockToMarkdown(resolvedOptions));
14
37
  };
15
38
  export { directSpeechFromMarkdown };
16
39
  export { directSpeech };
17
40
  export { directSpeechToMarkdown };
41
+ export { directSpeechBlockFromMarkdown };
42
+ export { directSpeechBlock };
43
+ export { directSpeechBlockToMarkdown };
18
44
  //# 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":"AAEA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,MAAM,CAAC,MAAM,kBAAkB,GAE3B,SAAS,kBAAkB,CAAC,OAAO,GAAG,EAAE;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC;IAE5D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,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;AAGjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAGrE,MAAM,CAAC,MAAM,kBAAkB,GAE3B,SAAS,kBAAkB,CAAC,OAAoC;IAClE,MAAM,eAAe,GAAwB,OAAO,IAAI;QACtD,MAAM,EAAE;YACN,KAAK,EAAE,GAAG;YACV,YAAY,EAAE,GAAG;SAClB;KACF,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC;IAE5D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAEhC,SAAS,uBAAuB,CAClC,OAAyC;IAEzC,MAAM,eAAe,GAA6B,OAAO,IAAI;QAC3D,MAAM,EAAE;YACN,MAAM,EAAE,GAAG;SACZ;KACF,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC;IAE5D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAC9B,6BAA6B,CAAC,eAAe,CAAC,CAC/C,CAAC;IACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,CAAC,CAAC;AAC/E,CAAC,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"}
@@ -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,4 @@
1
+ import type { Extension } from "micromark-util-types";
2
+ import type { DirectSpeechOptions } from "./types.js";
3
+ export declare function directSpeech(options: DirectSpeechOptions): Extension;
4
+ //# sourceMappingURL=syntax.d.ts.map
@@ -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,CAUpE"}
@@ -2,22 +2,38 @@ 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 quote = getSingleCodePoint(options.quote, '"');
7
- const closingQuote = getSingleCodePoint(options.closingQuote, String.fromCodePoint(quote));
5
+ export function directSpeech(options) {
8
6
  return {
9
7
  text: {
10
8
  [leftSquareBracket]: {
11
9
  add: "before",
12
10
  name: "directSpeech",
13
- tokenize: createDirectSpeechTokenizer(quote, closingQuote),
11
+ tokenize: createDirectSpeechTokenizer(options),
14
12
  },
15
13
  },
16
14
  };
17
15
  }
18
- function createDirectSpeechTokenizer(quote, closingQuote) {
16
+ function createDirectSpeechTokenizer(options) {
17
+ const type_to_opening_quote_code_point = Object.fromEntries(Object.entries(options).map(([speechType, { quote }]) => [
18
+ speechType,
19
+ getSingleCodePoint(quote, '"'),
20
+ ]));
21
+ const type_to_closing_quote_code_point = Object.fromEntries(Object.entries(options).map(([speechType, { closingQuote, quote }]) => [
22
+ speechType,
23
+ getSingleCodePoint(closingQuote, quote ?? '"'),
24
+ ]));
25
+ const opening_quote_code_points = new Set(Object.values(type_to_opening_quote_code_point));
26
+ const closing_quote_code_point_to_speech_type = Object.fromEntries(Object.entries(type_to_closing_quote_code_point).map(([speechType, closingQuoteCodePoint]) => [
27
+ closingQuoteCodePoint,
28
+ speechType,
29
+ ]));
30
+ const opening_quote_code_point_to_speech_type = Object.fromEntries(Object.entries(type_to_opening_quote_code_point).map(([speechType, openingQuoteCodePoint]) => [
31
+ openingQuoteCodePoint,
32
+ speechType,
33
+ ]));
19
34
  return function tokenizeDirectSpeech(effects, ok, nok) {
20
35
  let hasSpeakerContent = false;
36
+ let speechType;
21
37
  return start;
22
38
  function start(code) {
23
39
  if (code !== leftSquareBracket) {
@@ -74,9 +90,10 @@ function createDirectSpeechTokenizer(quote, closingQuote) {
74
90
  effects.exit("whitespace");
75
91
  return beforeQuote;
76
92
  }
77
- if (code !== quote) {
93
+ if (!opening_quote_code_points.has(code)) {
78
94
  return nok(code);
79
95
  }
96
+ speechType = opening_quote_code_point_to_speech_type[code];
80
97
  effects.enter("directSpeechQuoteMarkerStart");
81
98
  effects.consume(code);
82
99
  effects.exit("directSpeechQuoteMarkerStart");
@@ -89,7 +106,7 @@ function createDirectSpeechTokenizer(quote, closingQuote) {
89
106
  if (code === null) {
90
107
  return nok(code);
91
108
  }
92
- if (code === closingQuote) {
109
+ if (code === type_to_closing_quote_code_point[speechType]) {
93
110
  effects.exit("directSpeechContent");
94
111
  effects.enter("directSpeechQuoteMarkerEnd");
95
112
  effects.consume(code);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../src/inline/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,OAA4B;IACvD,OAAO;QACL,IAAI,EAAE;YACJ,CAAC,iBAAiB,CAAC,EAAE;gBACnB,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,cAAc;gBACpB,QAAQ,EAAE,2BAA2B,CAAC,OAAO,CAAC;aAC/C;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,OAA4B;IAC/D,MAAM,gCAAgC,GAAG,MAAM,CAAC,WAAW,CACzD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACvD,UAAU;QACV,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC;KAC/B,CAAC,CACH,CAAC;IACF,MAAM,gCAAgC,GAAG,MAAM,CAAC,WAAW,CACzD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QACrE,UAAU;QACV,kBAAkB,CAAC,YAAY,EAAE,KAAK,IAAI,GAAG,CAAC;KAC/C,CAAC,CACH,CAAC;IAEF,MAAM,yBAAyB,GAAG,IAAI,GAAG,CACvC,MAAM,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAChD,CAAC;IAEF,MAAM,uCAAuC,GAAG,MAAM,CAAC,WAAW,CAChE,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAAE,EAAE,CAAC;QACvC,qBAAqB;QACrB,UAAU;KACX,CACF,CACF,CAAC;IACF,MAAM,uCAAuC,GAAG,MAAM,CAAC,WAAW,CAChE,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,CAClD,CAAC,CAAC,UAAU,EAAE,qBAAqB,CAAC,EAAE,EAAE,CAAC;QACvC,qBAAqB;QACrB,UAAU;KACX,CACF,CACF,CAAC;IAEF,OAAO,SAAS,oBAAoB,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG;QACnD,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,UAA8B,CAAC;QAEnC,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,CAAC,yBAAyB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,UAAU,GAAG,uCAAuC,CAAC,IAAI,CAAC,CAAC;YAE3D,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,gCAAgC,CAAC,UAAW,CAAC,EAAE,CAAC;gBAC3D,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"}
@@ -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,13 +7,18 @@ export function directSpeechToMarkdown(options = {}) {
9
7
  },
10
8
  ],
11
9
  handlers: {
12
- directSpeechInline(node, parent, state, info) {
13
- return handleDirectSpeechInline(node, parent, state, info, quote, closingQuote);
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, quote, closingQuote) {
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
  let value = tracker.move(`[[${node.speaker}]]${quote}`);
21
24
  value += state.containerPhrasing(node, {
@@ -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,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"}
@@ -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,26 @@ declare module "mdast" {
23
27
  /**
24
28
  * Options of the micromark Extension
25
29
  */
26
- export interface DirectSpeechOptions {
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
- type?: string;
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
+ };
45
50
  declare module "micromark-util-types" {
46
51
  interface TokenTypeMap {
47
52
  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;KACvB,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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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.1",
3
+ "version": "0.9.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": 99,
90
+ "atLeast": 100,
91
91
  "detail": true,
92
92
  "ignoreAsAssertion": true,
93
93
  "ignoreNonNullAssertion": true,
@@ -1,3 +0,0 @@
1
- import type { Extension as FromMarkdownExtension } from "mdast-util-from-markdown";
2
- export declare function directSpeechFromMarkdown(): FromMarkdownExtension;
3
- //# sourceMappingURL=from-markdown.d.ts.map
@@ -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"}
@@ -1,4 +0,0 @@
1
- import type { Extension } from "micromark-util-types";
2
- import type { DirectSpeechOptions } from "./types.js";
3
- export declare function directSpeech(options?: DirectSpeechOptions): Extension;
4
- //# sourceMappingURL=syntax.d.ts.map
@@ -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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../src/logic/syntax.ts"],"names":[],"mappings":"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"}
@@ -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