@the_dissidents/libemmm 0.0.3 → 0.0.5
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 +6 -3
- package/dist/index.d.mts +23 -2
- package/dist/index.d.ts +23 -2
- package/dist/index.js +157 -33
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +157 -33
- package/dist/index.mjs.map +1 -1
- package/dist/src/builtin/builtin.d.ts +2 -0
- package/dist/src/builtin/builtin.js +18 -0
- package/dist/src/builtin/builtin.js.map +1 -0
- package/dist/src/builtin/define-modifier.d.ts +12 -0
- package/dist/src/builtin/define-modifier.js +129 -0
- package/dist/src/builtin/define-modifier.js.map +1 -0
- package/dist/src/builtin/define-shorthand.d.ts +14 -0
- package/dist/src/builtin/define-shorthand.js +178 -0
- package/dist/src/builtin/define-shorthand.js.map +1 -0
- package/dist/src/builtin/internal.d.ts +41 -0
- package/dist/src/builtin/internal.js +106 -0
- package/dist/src/builtin/internal.js.map +1 -0
- package/dist/src/builtin/module.d.ts +16 -0
- package/dist/src/builtin/module.js +156 -0
- package/dist/src/builtin/module.js.map +1 -0
- package/dist/src/builtin/slot.d.ts +7 -0
- package/dist/src/builtin/slot.js +136 -0
- package/dist/src/builtin/slot.js.map +1 -0
- package/dist/src/builtin/var.d.ts +12 -0
- package/dist/src/builtin/var.js +103 -0
- package/dist/src/builtin/var.js.map +1 -0
- package/dist/src/debug-print.d.ts +14 -0
- package/dist/src/debug-print.js +113 -0
- package/dist/src/debug-print.js.map +1 -0
- package/dist/src/debug.d.ts +15 -0
- package/dist/src/debug.js +47 -0
- package/dist/src/debug.js.map +1 -0
- package/dist/src/default/bullets.d.ts +4 -0
- package/dist/src/default/bullets.js +39 -0
- package/dist/src/default/bullets.js.map +1 -0
- package/dist/src/default/code.d.ts +6 -0
- package/dist/src/default/code.js +13 -0
- package/dist/src/default/code.js.map +1 -0
- package/dist/src/default/default.d.ts +2 -0
- package/dist/src/default/default.js +20 -0
- package/dist/src/default/default.js.map +1 -0
- package/dist/src/default/headings.d.ts +20 -0
- package/dist/src/default/headings.js +125 -0
- package/dist/src/default/headings.js.map +1 -0
- package/dist/src/default/html-renderer.d.ts +26 -0
- package/dist/src/default/html-renderer.js +108 -0
- package/dist/src/default/html-renderer.js.map +1 -0
- package/dist/src/default/inline-styles.d.ts +4 -0
- package/dist/src/default/inline-styles.js +24 -0
- package/dist/src/default/inline-styles.js.map +1 -0
- package/dist/src/default/misc.d.ts +6 -0
- package/dist/src/default/misc.js +112 -0
- package/dist/src/default/misc.js.map +1 -0
- package/dist/src/default/notes.d.ts +28 -0
- package/dist/src/default/notes.js +109 -0
- package/dist/src/default/notes.js.map +1 -0
- package/dist/src/default/quotes.d.ts +4 -0
- package/dist/src/default/quotes.js +36 -0
- package/dist/src/default/quotes.js.map +1 -0
- package/dist/src/default/vars.d.ts +2 -0
- package/dist/src/default/vars.js +39 -0
- package/dist/src/default/vars.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.js +58 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interface.d.ts +174 -0
- package/dist/src/interface.js +93 -0
- package/dist/src/interface.js.map +1 -0
- package/dist/src/messages.d.ts +165 -0
- package/dist/src/messages.js +279 -0
- package/dist/src/messages.js.map +1 -0
- package/dist/src/modifier-helper.d.ts +6 -0
- package/dist/src/modifier-helper.js +113 -0
- package/dist/src/modifier-helper.js.map +1 -0
- package/dist/src/parser-config.d.ts +44 -0
- package/dist/src/parser-config.js +67 -0
- package/dist/src/parser-config.js.map +1 -0
- package/dist/src/parser.d.ts +3 -0
- package/dist/src/parser.js +652 -0
- package/dist/src/parser.js.map +1 -0
- package/dist/src/renderer.d.ts +49 -0
- package/dist/src/renderer.js +81 -0
- package/dist/src/renderer.js.map +1 -0
- package/dist/src/scanner.d.ts +22 -0
- package/dist/src/scanner.js +50 -0
- package/dist/src/scanner.js.map +1 -0
- package/dist/src/temp.d.ts +1 -0
- package/dist/src/temp.js +108 -0
- package/dist/src/temp.js.map +1 -0
- package/dist/src/typing-helper.d.ts +7 -0
- package/dist/src/typing-helper.js +3 -0
- package/dist/src/typing-helper.js.map +1 -0
- package/dist/src/util.d.ts +29 -0
- package/dist/src/util.js +177 -0
- package/dist/src/util.js.map +1 -0
- package/dist/tests/advanced_syntax.test.d.ts +1 -0
- package/dist/tests/advanced_syntax.test.js +180 -0
- package/dist/tests/advanced_syntax.test.js.map +1 -0
- package/dist/tests/basic_syntax.test.d.ts +1 -0
- package/dist/tests/basic_syntax.test.js +431 -0
- package/dist/tests/basic_syntax.test.js.map +1 -0
- package/dist/tests/default/headings.test.d.ts +1 -0
- package/dist/tests/default/headings.test.js +90 -0
- package/dist/tests/default/headings.test.js.map +1 -0
- package/dist/tests/define_block.test.d.ts +1 -0
- package/dist/tests/define_block.test.js +209 -0
- package/dist/tests/define_block.test.js.map +1 -0
- package/dist/tests/define_inline.test.d.ts +1 -0
- package/dist/tests/define_inline.test.js +289 -0
- package/dist/tests/define_inline.test.js.map +1 -0
- package/dist/tests/modules.test.d.ts +1 -0
- package/dist/tests/modules.test.js +137 -0
- package/dist/tests/modules.test.js.map +1 -0
- package/dist/tests/shorthands.test.d.ts +1 -0
- package/dist/tests/shorthands.test.js +79 -0
- package/dist/tests/shorthands.test.js.map +1 -0
- package/dist/tsup.config.d.ts +2 -0
- package/dist/tsup.config.js +12 -0
- package/dist/tsup.config.js.map +1 -0
- package/dist/vitest.config.d.ts +2 -0
- package/dist/vitest.config.js +17 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# libemmm
|
|
2
2
|
|
|
3
|
-
This package contains the parser and language server for the `emmm` markup language.
|
|
3
|
+
This package contains the parser and language server for the `emmm` markup language.
|
|
4
4
|
|
|
5
5
|
```sh
|
|
6
6
|
npm install @the_dissidents/libemmm
|
|
@@ -164,7 +164,7 @@ A colon before the first argument states explicitly the beginning of that argume
|
|
|
164
164
|
[**-define-inline** *name*:*args...*]
|
|
165
165
|
[**-define-inline** *name*:*args...*:(*slot*)]
|
|
166
166
|
|
|
167
|
-
> Define a new modifier. The first argument is the name. If
|
|
167
|
+
> Define a new modifier. The first argument is the name. If one or more arguments exist, and the last is enclosed in `()`, it is taken as the **slot name** (more on that later). The rest in the middle are names for the arguments.
|
|
168
168
|
>
|
|
169
169
|
> Take content as the definition of the new modifier.
|
|
170
170
|
|
|
@@ -261,6 +261,8 @@ For strange edge cases of the basic syntax and the built-in configuration, see t
|
|
|
261
261
|
|
|
262
262
|
## Diagnostic Messages
|
|
263
263
|
|
|
264
|
+
> Note: 'suggestions' are currently not being implemented
|
|
265
|
+
|
|
264
266
|
|Code|Error|Suggestions|
|
|
265
267
|
|---:|-----|-|
|
|
266
268
|
| 1 | Syntax error: expecting <...>
|
|
@@ -284,4 +286,5 @@ For strange edge cases of the basic syntax and the built-in configuration, see t
|
|
|
284
286
|
| 3 | Content should begin in a new line to avoid confusion | *add a line break*
|
|
285
287
|
| 4 | Modifier already defined, overwriting
|
|
286
288
|
| 5 | Undefined variable, will expand to empty string
|
|
287
|
-
| 6 | Using this module will overwrite: <...>
|
|
289
|
+
| 6 | Using this module will overwrite: <...>
|
|
290
|
+
| 7 | <...> is already defined (as <...>), will be overwritten
|
package/dist/index.d.mts
CHANGED
|
@@ -186,11 +186,21 @@ declare class ModifierBase<TNode, TEntity> {
|
|
|
186
186
|
readonly slotType: ModifierSlotType;
|
|
187
187
|
constructor(name: string, slotType?: ModifierSlotType, args?: Partial<ModifierBase<TNode, TEntity>>);
|
|
188
188
|
roleHint?: string;
|
|
189
|
+
/**
|
|
190
|
+
* If true, any modifier encountered in the content of it will *not* be expanded, *unless* that modifier is `alwaysTryExpand`.
|
|
191
|
+
*/
|
|
189
192
|
delayContentExpansion: boolean;
|
|
193
|
+
/**
|
|
194
|
+
* If true, such a modifier will always be expanded whenever it is encountered, *even if* contained in a modifier with `delayContentExpansion`.
|
|
195
|
+
*/
|
|
190
196
|
alwaysTryExpand: boolean;
|
|
197
|
+
/** Called before the modifier's content is parsed. */
|
|
191
198
|
beforeParseContent?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
199
|
+
/** Called after the modifier's content is parsed. */
|
|
192
200
|
afterParseContent?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
201
|
+
/** Called before reparsing of the expansion. */
|
|
193
202
|
beforeProcessExpansion?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
203
|
+
/** Called before reparsing of the expansion. */
|
|
194
204
|
afterProcessExpansion?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
195
205
|
prepareExpand?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
196
206
|
expand?: (node: TNode, cxt: ParseContext, immediate: boolean) => TEntity[] | undefined;
|
|
@@ -442,6 +452,15 @@ declare class OverwriteDefinitionsMessage implements Message {
|
|
|
442
452
|
readonly severity = MessageSeverity.Warning;
|
|
443
453
|
get info(): string;
|
|
444
454
|
}
|
|
455
|
+
declare class OverwriteSpecialVariableMessage implements Message {
|
|
456
|
+
readonly location: LocationRange;
|
|
457
|
+
private varname;
|
|
458
|
+
private previous;
|
|
459
|
+
constructor(location: LocationRange, varname: string, previous: string);
|
|
460
|
+
readonly code = 6;
|
|
461
|
+
readonly severity = MessageSeverity.Warning;
|
|
462
|
+
get info(): string;
|
|
463
|
+
}
|
|
445
464
|
|
|
446
465
|
type messages_ArgumentCountMismatchMessage = ArgumentCountMismatchMessage;
|
|
447
466
|
declare const messages_ArgumentCountMismatchMessage: typeof ArgumentCountMismatchMessage;
|
|
@@ -471,6 +490,8 @@ type messages_OnlySimpleParagraphsPermittedMessage = OnlySimpleParagraphsPermitt
|
|
|
471
490
|
declare const messages_OnlySimpleParagraphsPermittedMessage: typeof OnlySimpleParagraphsPermittedMessage;
|
|
472
491
|
type messages_OverwriteDefinitionsMessage = OverwriteDefinitionsMessage;
|
|
473
492
|
declare const messages_OverwriteDefinitionsMessage: typeof OverwriteDefinitionsMessage;
|
|
493
|
+
type messages_OverwriteSpecialVariableMessage = OverwriteSpecialVariableMessage;
|
|
494
|
+
declare const messages_OverwriteSpecialVariableMessage: typeof OverwriteSpecialVariableMessage;
|
|
474
495
|
type messages_ReachedRecursionLimitMessage = ReachedRecursionLimitMessage;
|
|
475
496
|
declare const messages_ReachedRecursionLimitMessage: typeof ReachedRecursionLimitMessage;
|
|
476
497
|
type messages_SlotUsedOutsideDefinitionMessage = SlotUsedOutsideDefinitionMessage;
|
|
@@ -484,7 +505,7 @@ declare const messages_UnknownModifierMessage: typeof UnknownModifierMessage;
|
|
|
484
505
|
type messages_UnnecessaryNewlineMessage = UnnecessaryNewlineMessage;
|
|
485
506
|
declare const messages_UnnecessaryNewlineMessage: typeof UnnecessaryNewlineMessage;
|
|
486
507
|
declare namespace messages {
|
|
487
|
-
export { messages_ArgumentCountMismatchMessage as ArgumentCountMismatchMessage, messages_CannotExpandArgumentMessage as CannotExpandArgumentMessage, messages_CannotUseModuleInSelfMessage as CannotUseModuleInSelfMessage, messages_ContentShouldBeOnNewlineMessage as ContentShouldBeOnNewlineMessage, messages_EitherNormalOrPreMessage as EitherNormalOrPreMessage, messages_EntityNotAllowedMessage as EntityNotAllowedMessage, messages_ExpectedMessage as ExpectedMessage, messages_InvalidArgumentMessage as InvalidArgumentMessage, messages_MultipleBlocksNotPermittedMessage as MultipleBlocksNotPermittedMessage, messages_NameAlreadyDefinedMessage as NameAlreadyDefinedMessage, messages_NewBlockShouldBeOnNewlineMessage as NewBlockShouldBeOnNewlineMessage, messages_NoNestedModuleMessage as NoNestedModuleMessage, messages_OnlySimpleParagraphsPermittedMessage as OnlySimpleParagraphsPermittedMessage, messages_OverwriteDefinitionsMessage as OverwriteDefinitionsMessage, messages_ReachedRecursionLimitMessage as ReachedRecursionLimitMessage, messages_SlotUsedOutsideDefinitionMessage as SlotUsedOutsideDefinitionMessage, messages_UnclosedInlineModifierMessage as UnclosedInlineModifierMessage, messages_UndefinedVariableMessage as UndefinedVariableMessage, messages_UnknownModifierMessage as UnknownModifierMessage, messages_UnnecessaryNewlineMessage as UnnecessaryNewlineMessage };
|
|
508
|
+
export { messages_ArgumentCountMismatchMessage as ArgumentCountMismatchMessage, messages_CannotExpandArgumentMessage as CannotExpandArgumentMessage, messages_CannotUseModuleInSelfMessage as CannotUseModuleInSelfMessage, messages_ContentShouldBeOnNewlineMessage as ContentShouldBeOnNewlineMessage, messages_EitherNormalOrPreMessage as EitherNormalOrPreMessage, messages_EntityNotAllowedMessage as EntityNotAllowedMessage, messages_ExpectedMessage as ExpectedMessage, messages_InvalidArgumentMessage as InvalidArgumentMessage, messages_MultipleBlocksNotPermittedMessage as MultipleBlocksNotPermittedMessage, messages_NameAlreadyDefinedMessage as NameAlreadyDefinedMessage, messages_NewBlockShouldBeOnNewlineMessage as NewBlockShouldBeOnNewlineMessage, messages_NoNestedModuleMessage as NoNestedModuleMessage, messages_OnlySimpleParagraphsPermittedMessage as OnlySimpleParagraphsPermittedMessage, messages_OverwriteDefinitionsMessage as OverwriteDefinitionsMessage, messages_OverwriteSpecialVariableMessage as OverwriteSpecialVariableMessage, messages_ReachedRecursionLimitMessage as ReachedRecursionLimitMessage, messages_SlotUsedOutsideDefinitionMessage as SlotUsedOutsideDefinitionMessage, messages_UnclosedInlineModifierMessage as UnclosedInlineModifierMessage, messages_UndefinedVariableMessage as UndefinedVariableMessage, messages_UnknownModifierMessage as UnknownModifierMessage, messages_UnnecessaryNewlineMessage as UnnecessaryNewlineMessage };
|
|
488
509
|
}
|
|
489
510
|
|
|
490
511
|
declare const BuiltinConfiguration: ReadonlyConfiguration;
|
|
@@ -495,7 +516,7 @@ type HTMLRendererOptions = {
|
|
|
495
516
|
headPlugins: HTMLComponentPlugin[];
|
|
496
517
|
headerPlugins: HTMLComponentPlugin[];
|
|
497
518
|
footerPlugins: HTMLComponentPlugin[];
|
|
498
|
-
transformAsset: (
|
|
519
|
+
transformAsset: (id: string) => string | undefined;
|
|
499
520
|
};
|
|
500
521
|
type HTMLRenderType = {
|
|
501
522
|
state: HTMLRenderState;
|
package/dist/index.d.ts
CHANGED
|
@@ -186,11 +186,21 @@ declare class ModifierBase<TNode, TEntity> {
|
|
|
186
186
|
readonly slotType: ModifierSlotType;
|
|
187
187
|
constructor(name: string, slotType?: ModifierSlotType, args?: Partial<ModifierBase<TNode, TEntity>>);
|
|
188
188
|
roleHint?: string;
|
|
189
|
+
/**
|
|
190
|
+
* If true, any modifier encountered in the content of it will *not* be expanded, *unless* that modifier is `alwaysTryExpand`.
|
|
191
|
+
*/
|
|
189
192
|
delayContentExpansion: boolean;
|
|
193
|
+
/**
|
|
194
|
+
* If true, such a modifier will always be expanded whenever it is encountered, *even if* contained in a modifier with `delayContentExpansion`.
|
|
195
|
+
*/
|
|
190
196
|
alwaysTryExpand: boolean;
|
|
197
|
+
/** Called before the modifier's content is parsed. */
|
|
191
198
|
beforeParseContent?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
199
|
+
/** Called after the modifier's content is parsed. */
|
|
192
200
|
afterParseContent?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
201
|
+
/** Called before reparsing of the expansion. */
|
|
193
202
|
beforeProcessExpansion?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
203
|
+
/** Called before reparsing of the expansion. */
|
|
194
204
|
afterProcessExpansion?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
195
205
|
prepareExpand?: (node: TNode, cxt: ParseContext, immediate: boolean) => Message[];
|
|
196
206
|
expand?: (node: TNode, cxt: ParseContext, immediate: boolean) => TEntity[] | undefined;
|
|
@@ -442,6 +452,15 @@ declare class OverwriteDefinitionsMessage implements Message {
|
|
|
442
452
|
readonly severity = MessageSeverity.Warning;
|
|
443
453
|
get info(): string;
|
|
444
454
|
}
|
|
455
|
+
declare class OverwriteSpecialVariableMessage implements Message {
|
|
456
|
+
readonly location: LocationRange;
|
|
457
|
+
private varname;
|
|
458
|
+
private previous;
|
|
459
|
+
constructor(location: LocationRange, varname: string, previous: string);
|
|
460
|
+
readonly code = 6;
|
|
461
|
+
readonly severity = MessageSeverity.Warning;
|
|
462
|
+
get info(): string;
|
|
463
|
+
}
|
|
445
464
|
|
|
446
465
|
type messages_ArgumentCountMismatchMessage = ArgumentCountMismatchMessage;
|
|
447
466
|
declare const messages_ArgumentCountMismatchMessage: typeof ArgumentCountMismatchMessage;
|
|
@@ -471,6 +490,8 @@ type messages_OnlySimpleParagraphsPermittedMessage = OnlySimpleParagraphsPermitt
|
|
|
471
490
|
declare const messages_OnlySimpleParagraphsPermittedMessage: typeof OnlySimpleParagraphsPermittedMessage;
|
|
472
491
|
type messages_OverwriteDefinitionsMessage = OverwriteDefinitionsMessage;
|
|
473
492
|
declare const messages_OverwriteDefinitionsMessage: typeof OverwriteDefinitionsMessage;
|
|
493
|
+
type messages_OverwriteSpecialVariableMessage = OverwriteSpecialVariableMessage;
|
|
494
|
+
declare const messages_OverwriteSpecialVariableMessage: typeof OverwriteSpecialVariableMessage;
|
|
474
495
|
type messages_ReachedRecursionLimitMessage = ReachedRecursionLimitMessage;
|
|
475
496
|
declare const messages_ReachedRecursionLimitMessage: typeof ReachedRecursionLimitMessage;
|
|
476
497
|
type messages_SlotUsedOutsideDefinitionMessage = SlotUsedOutsideDefinitionMessage;
|
|
@@ -484,7 +505,7 @@ declare const messages_UnknownModifierMessage: typeof UnknownModifierMessage;
|
|
|
484
505
|
type messages_UnnecessaryNewlineMessage = UnnecessaryNewlineMessage;
|
|
485
506
|
declare const messages_UnnecessaryNewlineMessage: typeof UnnecessaryNewlineMessage;
|
|
486
507
|
declare namespace messages {
|
|
487
|
-
export { messages_ArgumentCountMismatchMessage as ArgumentCountMismatchMessage, messages_CannotExpandArgumentMessage as CannotExpandArgumentMessage, messages_CannotUseModuleInSelfMessage as CannotUseModuleInSelfMessage, messages_ContentShouldBeOnNewlineMessage as ContentShouldBeOnNewlineMessage, messages_EitherNormalOrPreMessage as EitherNormalOrPreMessage, messages_EntityNotAllowedMessage as EntityNotAllowedMessage, messages_ExpectedMessage as ExpectedMessage, messages_InvalidArgumentMessage as InvalidArgumentMessage, messages_MultipleBlocksNotPermittedMessage as MultipleBlocksNotPermittedMessage, messages_NameAlreadyDefinedMessage as NameAlreadyDefinedMessage, messages_NewBlockShouldBeOnNewlineMessage as NewBlockShouldBeOnNewlineMessage, messages_NoNestedModuleMessage as NoNestedModuleMessage, messages_OnlySimpleParagraphsPermittedMessage as OnlySimpleParagraphsPermittedMessage, messages_OverwriteDefinitionsMessage as OverwriteDefinitionsMessage, messages_ReachedRecursionLimitMessage as ReachedRecursionLimitMessage, messages_SlotUsedOutsideDefinitionMessage as SlotUsedOutsideDefinitionMessage, messages_UnclosedInlineModifierMessage as UnclosedInlineModifierMessage, messages_UndefinedVariableMessage as UndefinedVariableMessage, messages_UnknownModifierMessage as UnknownModifierMessage, messages_UnnecessaryNewlineMessage as UnnecessaryNewlineMessage };
|
|
508
|
+
export { messages_ArgumentCountMismatchMessage as ArgumentCountMismatchMessage, messages_CannotExpandArgumentMessage as CannotExpandArgumentMessage, messages_CannotUseModuleInSelfMessage as CannotUseModuleInSelfMessage, messages_ContentShouldBeOnNewlineMessage as ContentShouldBeOnNewlineMessage, messages_EitherNormalOrPreMessage as EitherNormalOrPreMessage, messages_EntityNotAllowedMessage as EntityNotAllowedMessage, messages_ExpectedMessage as ExpectedMessage, messages_InvalidArgumentMessage as InvalidArgumentMessage, messages_MultipleBlocksNotPermittedMessage as MultipleBlocksNotPermittedMessage, messages_NameAlreadyDefinedMessage as NameAlreadyDefinedMessage, messages_NewBlockShouldBeOnNewlineMessage as NewBlockShouldBeOnNewlineMessage, messages_NoNestedModuleMessage as NoNestedModuleMessage, messages_OnlySimpleParagraphsPermittedMessage as OnlySimpleParagraphsPermittedMessage, messages_OverwriteDefinitionsMessage as OverwriteDefinitionsMessage, messages_OverwriteSpecialVariableMessage as OverwriteSpecialVariableMessage, messages_ReachedRecursionLimitMessage as ReachedRecursionLimitMessage, messages_SlotUsedOutsideDefinitionMessage as SlotUsedOutsideDefinitionMessage, messages_UnclosedInlineModifierMessage as UnclosedInlineModifierMessage, messages_UndefinedVariableMessage as UndefinedVariableMessage, messages_UnknownModifierMessage as UnknownModifierMessage, messages_UnnecessaryNewlineMessage as UnnecessaryNewlineMessage };
|
|
488
509
|
}
|
|
489
510
|
|
|
490
511
|
declare const BuiltinConfiguration: ReadonlyConfiguration;
|
|
@@ -495,7 +516,7 @@ type HTMLRendererOptions = {
|
|
|
495
516
|
headPlugins: HTMLComponentPlugin[];
|
|
496
517
|
headerPlugins: HTMLComponentPlugin[];
|
|
497
518
|
footerPlugins: HTMLComponentPlugin[];
|
|
498
|
-
transformAsset: (
|
|
519
|
+
transformAsset: (id: string) => string | undefined;
|
|
499
520
|
};
|
|
500
521
|
type HTMLRenderType = {
|
|
501
522
|
state: HTMLRenderState;
|
package/dist/index.js
CHANGED
|
@@ -77,11 +77,21 @@ var ModifierBase = class {
|
|
|
77
77
|
if (args) Object.assign(this, args);
|
|
78
78
|
}
|
|
79
79
|
roleHint;
|
|
80
|
+
/**
|
|
81
|
+
* If true, any modifier encountered in the content of it will *not* be expanded, *unless* that modifier is `alwaysTryExpand`.
|
|
82
|
+
*/
|
|
80
83
|
delayContentExpansion = false;
|
|
84
|
+
/**
|
|
85
|
+
* If true, such a modifier will always be expanded whenever it is encountered, *even if* contained in a modifier with `delayContentExpansion`.
|
|
86
|
+
*/
|
|
81
87
|
alwaysTryExpand = false;
|
|
88
|
+
/** Called before the modifier's content is parsed. */
|
|
82
89
|
beforeParseContent;
|
|
90
|
+
/** Called after the modifier's content is parsed. */
|
|
83
91
|
afterParseContent;
|
|
92
|
+
/** Called before reparsing of the expansion. */
|
|
84
93
|
beforeProcessExpansion;
|
|
94
|
+
/** Called before reparsing of the expansion. */
|
|
85
95
|
afterProcessExpansion;
|
|
86
96
|
prepareExpand;
|
|
87
97
|
expand;
|
|
@@ -466,6 +476,7 @@ __export(messages_exports, {
|
|
|
466
476
|
NoNestedModuleMessage: () => NoNestedModuleMessage,
|
|
467
477
|
OnlySimpleParagraphsPermittedMessage: () => OnlySimpleParagraphsPermittedMessage,
|
|
468
478
|
OverwriteDefinitionsMessage: () => OverwriteDefinitionsMessage,
|
|
479
|
+
OverwriteSpecialVariableMessage: () => OverwriteSpecialVariableMessage,
|
|
469
480
|
ReachedRecursionLimitMessage: () => ReachedRecursionLimitMessage,
|
|
470
481
|
SlotUsedOutsideDefinitionMessage: () => SlotUsedOutsideDefinitionMessage,
|
|
471
482
|
UnclosedInlineModifierMessage: () => UnclosedInlineModifierMessage,
|
|
@@ -746,6 +757,18 @@ var OverwriteDefinitionsMessage = class {
|
|
|
746
757
|
return `using this module will overwrite: ${this.what}`;
|
|
747
758
|
}
|
|
748
759
|
};
|
|
760
|
+
var OverwriteSpecialVariableMessage = class {
|
|
761
|
+
constructor(location, varname, previous) {
|
|
762
|
+
this.location = location;
|
|
763
|
+
this.varname = varname;
|
|
764
|
+
this.previous = previous;
|
|
765
|
+
}
|
|
766
|
+
code = 6;
|
|
767
|
+
severity = 1 /* Warning */;
|
|
768
|
+
get info() {
|
|
769
|
+
return `${this.varname} is already defined (as "${this.previous}"), will be overwritten`;
|
|
770
|
+
}
|
|
771
|
+
};
|
|
749
772
|
|
|
750
773
|
// src/parser-config.ts
|
|
751
774
|
var ParseContext = class {
|
|
@@ -2436,30 +2459,79 @@ var BulletBlockRenderersHTML = [
|
|
|
2436
2459
|
];
|
|
2437
2460
|
|
|
2438
2461
|
// src/default/headings.ts
|
|
2462
|
+
var headings = Symbol();
|
|
2463
|
+
function initHeadings(cxt) {
|
|
2464
|
+
cxt.init(headings, {
|
|
2465
|
+
path: []
|
|
2466
|
+
});
|
|
2467
|
+
}
|
|
2468
|
+
function setHeading(cxt, data) {
|
|
2469
|
+
const path = cxt.get(headings).path;
|
|
2470
|
+
while (path.length > 0 && path.at(-1).level >= data.level)
|
|
2471
|
+
path.pop();
|
|
2472
|
+
path.push(data);
|
|
2473
|
+
return [];
|
|
2474
|
+
}
|
|
2475
|
+
function currentHeadingLevel(cxt) {
|
|
2476
|
+
return cxt.get(headings).path.at(-1)?.level;
|
|
2477
|
+
}
|
|
2478
|
+
function currentExplicitHeadingLevel(cxt) {
|
|
2479
|
+
return cxt.get(headings).path.findLast((x) => !x.implicit)?.level;
|
|
2480
|
+
}
|
|
2439
2481
|
var headingBlock = new BlockModifierDefinition(
|
|
2440
2482
|
"heading",
|
|
2441
2483
|
0 /* Normal */,
|
|
2442
2484
|
{
|
|
2443
2485
|
delayContentExpansion: true,
|
|
2444
2486
|
roleHint: "heading",
|
|
2445
|
-
|
|
2487
|
+
beforeParseContent(node, cxt) {
|
|
2446
2488
|
let msgs = checkArguments(node, 0, 1);
|
|
2447
2489
|
if (msgs) return msgs;
|
|
2448
2490
|
msgs = onlyPermitSingleBlock(node);
|
|
2449
2491
|
if (msgs) return msgs;
|
|
2450
2492
|
msgs = onlyPermitSimpleParagraphs(node);
|
|
2451
2493
|
if (msgs) return msgs;
|
|
2494
|
+
node.state = { name: void 0, level: currentHeadingLevel(cxt) ?? 1 };
|
|
2452
2495
|
if (node.arguments.length == 1) {
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
if (isNaN(
|
|
2456
|
-
new InvalidArgumentMessage(
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
node.state =
|
|
2496
|
+
const arg = node.arguments[0];
|
|
2497
|
+
const level = Number.parseInt(arg.expansion);
|
|
2498
|
+
if (isNaN(level) || level < 1 || level > 6)
|
|
2499
|
+
msgs = [new InvalidArgumentMessage(
|
|
2500
|
+
arg.location,
|
|
2501
|
+
"should be a number between 1 and 6"
|
|
2502
|
+
)];
|
|
2503
|
+
else node.state.level = level;
|
|
2461
2504
|
}
|
|
2462
|
-
|
|
2505
|
+
setHeading(cxt, node.state);
|
|
2506
|
+
return msgs ?? [];
|
|
2507
|
+
}
|
|
2508
|
+
}
|
|
2509
|
+
);
|
|
2510
|
+
var implicitHeadingBlock = new BlockModifierDefinition(
|
|
2511
|
+
"implicit-heading",
|
|
2512
|
+
2 /* None */,
|
|
2513
|
+
{
|
|
2514
|
+
roleHint: "heading",
|
|
2515
|
+
beforeParseContent(node, cxt) {
|
|
2516
|
+
let msgs = checkArguments(node, 0, 1);
|
|
2517
|
+
if (msgs) return msgs;
|
|
2518
|
+
node.state = {
|
|
2519
|
+
name: void 0,
|
|
2520
|
+
implicit: true,
|
|
2521
|
+
level: (currentExplicitHeadingLevel(cxt) ?? 0) + 1
|
|
2522
|
+
};
|
|
2523
|
+
if (node.arguments.length == 1) {
|
|
2524
|
+
const arg = node.arguments[0];
|
|
2525
|
+
const level = Number.parseInt(arg.expansion);
|
|
2526
|
+
if (isNaN(level) || level < 1 || level > 6)
|
|
2527
|
+
msgs = [new InvalidArgumentMessage(
|
|
2528
|
+
arg.location,
|
|
2529
|
+
"should be a number between 1 and 6"
|
|
2530
|
+
)];
|
|
2531
|
+
else node.state.level = level;
|
|
2532
|
+
}
|
|
2533
|
+
setHeading(cxt, node.state);
|
|
2534
|
+
return msgs ?? [];
|
|
2463
2535
|
}
|
|
2464
2536
|
}
|
|
2465
2537
|
);
|
|
@@ -2469,41 +2541,49 @@ var numberedHeadingBlock = new BlockModifierDefinition(
|
|
|
2469
2541
|
{
|
|
2470
2542
|
delayContentExpansion: true,
|
|
2471
2543
|
roleHint: "heading",
|
|
2472
|
-
|
|
2544
|
+
beforeParseContent(node, cxt) {
|
|
2473
2545
|
let msgs = checkArguments(node, 1);
|
|
2474
2546
|
if (msgs) return msgs;
|
|
2475
2547
|
msgs = onlyPermitSingleBlock(node);
|
|
2476
2548
|
if (msgs) return msgs;
|
|
2477
2549
|
msgs = onlyPermitSimpleParagraphs(node);
|
|
2478
2550
|
if (msgs) return msgs;
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2551
|
+
node.state = { name: void 0, level: currentHeadingLevel(cxt) ?? 1 };
|
|
2552
|
+
const arg = node.arguments[0];
|
|
2553
|
+
const split = arg.expansion.trim().split(".").filter((x) => x.length > 0);
|
|
2554
|
+
if (split.length == 0 || split.length > 6)
|
|
2555
|
+
msgs = [new InvalidArgumentMessage(
|
|
2556
|
+
arg.location,
|
|
2557
|
+
"should be a number between 1 and 6"
|
|
2558
|
+
)];
|
|
2559
|
+
else node.state = { name: split.join("."), level: split.length };
|
|
2560
|
+
setHeading(cxt, node.state);
|
|
2561
|
+
return msgs ?? [];
|
|
2487
2562
|
}
|
|
2488
2563
|
}
|
|
2489
2564
|
);
|
|
2490
|
-
var HeadingBlocks = [headingBlock, numberedHeadingBlock];
|
|
2565
|
+
var HeadingBlocks = [headingBlock, implicitHeadingBlock, numberedHeadingBlock];
|
|
2491
2566
|
var HeadingBlockRenderersHTML = [
|
|
2492
2567
|
[headingBlock, (node, cxt) => {
|
|
2493
2568
|
if (node.state !== void 0) {
|
|
2494
|
-
|
|
2495
|
-
let tag = "h" + node.state;
|
|
2569
|
+
let tag = "h" + node.state.level;
|
|
2496
2570
|
let para = node.content[0];
|
|
2497
2571
|
return `<${tag}>${cxt.state.render(para.content, cxt)}</${tag}>`;
|
|
2498
2572
|
}
|
|
2499
2573
|
return cxt.state.invalidBlock(node, "Bad format");
|
|
2500
2574
|
}],
|
|
2575
|
+
[implicitHeadingBlock, (node, cxt) => {
|
|
2576
|
+
if (node.state !== void 0) {
|
|
2577
|
+
let tag = "h" + node.state.level;
|
|
2578
|
+
return `<${tag} class='implicit'></${tag}>`;
|
|
2579
|
+
}
|
|
2580
|
+
return cxt.state.invalidBlock(node, "Bad format");
|
|
2581
|
+
}],
|
|
2501
2582
|
[numberedHeadingBlock, (node, cxt) => {
|
|
2502
2583
|
if (node.state !== void 0) {
|
|
2503
|
-
|
|
2504
|
-
let tag = "h" + node.state.length;
|
|
2584
|
+
let tag = "h" + node.state.level;
|
|
2505
2585
|
let para = node.content[0];
|
|
2506
|
-
return `<${tag}><span class='heading-number'>${node.state.
|
|
2586
|
+
return `<${tag}><span class='heading-number'>${node.state.name}</span>${cxt.state.render(para.content, cxt)}</${tag}>`;
|
|
2507
2587
|
}
|
|
2508
2588
|
return cxt.state.invalidBlock(node, "Bad format");
|
|
2509
2589
|
}]
|
|
@@ -2742,6 +2822,35 @@ var linkInline = new InlineModifierDefinition(
|
|
|
2742
2822
|
}
|
|
2743
2823
|
}
|
|
2744
2824
|
);
|
|
2825
|
+
var styleBlock = new BlockModifierDefinition(
|
|
2826
|
+
"style",
|
|
2827
|
+
0 /* Normal */,
|
|
2828
|
+
{
|
|
2829
|
+
prepareExpand(node) {
|
|
2830
|
+
let msgs = checkArguments(node, 1);
|
|
2831
|
+
if (msgs) return msgs;
|
|
2832
|
+
node.state = node.arguments[0].expansion;
|
|
2833
|
+
return [];
|
|
2834
|
+
}
|
|
2835
|
+
}
|
|
2836
|
+
);
|
|
2837
|
+
var breakBlock = new BlockModifierDefinition(
|
|
2838
|
+
"break",
|
|
2839
|
+
2 /* None */
|
|
2840
|
+
);
|
|
2841
|
+
var linkBlock = new BlockModifierDefinition(
|
|
2842
|
+
"link",
|
|
2843
|
+
0 /* Normal */,
|
|
2844
|
+
{
|
|
2845
|
+
roleHint: "link",
|
|
2846
|
+
prepareExpand(node) {
|
|
2847
|
+
let msgs = checkArguments(node, 1);
|
|
2848
|
+
if (msgs) return msgs;
|
|
2849
|
+
node.state = node.arguments[0].expansion;
|
|
2850
|
+
return [];
|
|
2851
|
+
}
|
|
2852
|
+
}
|
|
2853
|
+
);
|
|
2745
2854
|
var imageBlock = new BlockModifierDefinition(
|
|
2746
2855
|
"image",
|
|
2747
2856
|
0 /* Normal */,
|
|
@@ -2754,14 +2863,13 @@ var imageBlock = new BlockModifierDefinition(
|
|
|
2754
2863
|
if (msgs) return msgs;
|
|
2755
2864
|
msgs = onlyPermitSimpleParagraphs(node);
|
|
2756
2865
|
if (msgs) return msgs;
|
|
2757
|
-
|
|
2758
|
-
if (url) node.state = url;
|
|
2866
|
+
node.state = node.arguments.map((x) => x.expansion).join(":");
|
|
2759
2867
|
return [];
|
|
2760
2868
|
}
|
|
2761
2869
|
}
|
|
2762
2870
|
);
|
|
2763
2871
|
var MiscInlines = [rubyInline, linkInline];
|
|
2764
|
-
var MiscBlocks = [imageBlock];
|
|
2872
|
+
var MiscBlocks = [styleBlock, breakBlock, linkBlock, imageBlock];
|
|
2765
2873
|
var MiscInlineRenderersHTML = [
|
|
2766
2874
|
[rubyInline, (node, cxt) => {
|
|
2767
2875
|
if (node.state === void 0)
|
|
@@ -2775,6 +2883,19 @@ var MiscInlineRenderersHTML = [
|
|
|
2775
2883
|
}]
|
|
2776
2884
|
];
|
|
2777
2885
|
var MiscBlockRenderersHTML = [
|
|
2886
|
+
[styleBlock, (node, cxt) => {
|
|
2887
|
+
if (node.state === void 0)
|
|
2888
|
+
return cxt.state.invalidBlock(node, "bad format");
|
|
2889
|
+
return `<div class="${node.state}" style="display:contents">${cxt.state.render(node.content, cxt)}</div>`;
|
|
2890
|
+
}],
|
|
2891
|
+
[breakBlock, () => {
|
|
2892
|
+
return `<hr>`;
|
|
2893
|
+
}],
|
|
2894
|
+
[linkBlock, (node, cxt) => {
|
|
2895
|
+
if (node.state === void 0)
|
|
2896
|
+
return cxt.state.invalidBlock(node, "bad format");
|
|
2897
|
+
return `<a href="${encodeURI(node.state)}">${cxt.state.render(node.content, cxt)}</a>`;
|
|
2898
|
+
}],
|
|
2778
2899
|
[imageBlock, (node, cxt) => {
|
|
2779
2900
|
let transformed;
|
|
2780
2901
|
if (node.state === void 0)
|
|
@@ -2782,9 +2903,9 @@ var MiscBlockRenderersHTML = [
|
|
|
2782
2903
|
try {
|
|
2783
2904
|
transformed = cxt.config.options.transformAsset(node.state);
|
|
2784
2905
|
} catch {
|
|
2785
|
-
return cxt.state.invalidBlock(node, "
|
|
2906
|
+
return cxt.state.invalidBlock(node, "unable to transform asset");
|
|
2786
2907
|
}
|
|
2787
|
-
const img = transformed ? `<img src="${transformed}" data-original-src="${node.state
|
|
2908
|
+
const img = transformed ? `<img src="${transformed}" data-original-src="${node.state}"/>` : `<img src="${node.state}"/>`;
|
|
2788
2909
|
const para = node.content.length == 0 ? "" : "\n<figcaption>" + cxt.state.render(node.content[0].content, cxt) + "</figcaption>";
|
|
2789
2910
|
return `<figure>${img}${para}</figure>`;
|
|
2790
2911
|
}]
|
|
@@ -2798,10 +2919,13 @@ function createWrapper(name, varname) {
|
|
|
2798
2919
|
afterProcessExpansion(node, cxt) {
|
|
2799
2920
|
let msgs = checkArguments(node, 0);
|
|
2800
2921
|
if (msgs) return msgs;
|
|
2801
|
-
|
|
2922
|
+
const result = onlyPermitPlaintextParagraph(node);
|
|
2802
2923
|
if (typeof result !== "string") return result;
|
|
2924
|
+
const previous = cxt.variables.get(varname);
|
|
2925
|
+
if (previous)
|
|
2926
|
+
msgs = [new OverwriteSpecialVariableMessage(node.head, varname, previous)];
|
|
2803
2927
|
cxt.variables.set(varname, result);
|
|
2804
|
-
return [];
|
|
2928
|
+
return msgs ?? [];
|
|
2805
2929
|
}
|
|
2806
2930
|
});
|
|
2807
2931
|
}
|
|
@@ -2821,7 +2945,7 @@ var VarWrappers = [
|
|
|
2821
2945
|
|
|
2822
2946
|
// src/default/default.ts
|
|
2823
2947
|
var config = Configuration.from(BuiltinConfiguration);
|
|
2824
|
-
config.initializers.push(initNotes);
|
|
2948
|
+
config.initializers.push(initNotes, initHeadings);
|
|
2825
2949
|
config.blockModifiers.add(
|
|
2826
2950
|
...HeadingBlocks,
|
|
2827
2951
|
...BulletBlocks,
|