@erudit-js/prose 4.1.1 → 4.2.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/appElement.d.ts +7 -6
- package/dist/app/appElement.js +1 -1
- package/dist/app/composables/anchor.d.ts +7 -7
- package/dist/app/composables/appElement.d.ts +4 -4
- package/dist/app/composables/appElement.js +3 -3
- package/dist/app/composables/context.d.ts +3 -2
- package/dist/app/composables/elementIcon.d.ts +2 -2
- package/dist/app/composables/elementIcon.js +1 -1
- package/dist/app/composables/language.d.ts +2 -2
- package/dist/app/composables/language.js +1 -1
- package/dist/app/composables/storage.d.ts +4 -4
- package/dist/app/composables/storage.js +0 -4
- package/dist/app/default/Mix.vue +2 -2
- package/dist/app/default/Text.vue +2 -2
- package/dist/app/shared/Prose.vue +3 -3
- package/dist/app/shared/Render.vue +5 -14
- package/dist/app/shared/block/AsideMenu.vue +2 -2
- package/dist/app/shared/block/AsideMenuCopyLink.vue +1 -1
- package/dist/app/shared/block/Block.vue +4 -4
- package/dist/app/shared/inliner/Inliner.vue +2 -2
- package/dist/coreElement.d.ts +25 -7
- package/dist/coreElement.js +2 -2
- package/dist/elements/accent/Accent.vue +4 -4
- package/dist/elements/accent/AccentColumnSection.vue +2 -2
- package/dist/elements/accent/AccentRowSections.vue +2 -2
- package/dist/elements/accent/app.d.ts +3 -3
- package/dist/elements/accent/app.js +2 -2
- package/dist/elements/accent/core.d.ts +61 -300
- package/dist/elements/accent/core.js +83 -68
- package/dist/elements/callout/Callout.vue +4 -4
- package/dist/elements/callout/app.d.ts +1 -8
- package/dist/elements/callout/app.js +2 -2
- package/dist/elements/callout/core.d.ts +21 -59
- package/dist/elements/callout/core.js +18 -17
- package/dist/elements/caption/Caption.vue +3 -3
- package/dist/elements/caption/app.d.ts +1 -8
- package/dist/elements/caption/app.js +2 -2
- package/dist/elements/caption/core.d.ts +21 -99
- package/dist/elements/caption/core.js +18 -22
- package/dist/elements/details/Details.vue +3 -3
- package/dist/elements/details/app.d.ts +1 -8
- package/dist/elements/details/app.js +2 -2
- package/dist/elements/details/core.d.ts +18 -61
- package/dist/elements/details/core.js +16 -11
- package/dist/elements/diagram/Diagram.vue +14 -11
- package/dist/elements/diagram/app.d.ts +1 -29
- package/dist/elements/diagram/app.js +2 -2
- package/dist/elements/diagram/core.d.ts +14 -177
- package/dist/elements/diagram/core.js +5 -8
- package/dist/elements/emphasis/Emphasis.vue +3 -3
- package/dist/elements/emphasis/app.d.ts +1 -8
- package/dist/elements/emphasis/app.js +2 -2
- package/dist/elements/emphasis/core.d.ts +13 -76
- package/dist/elements/emphasis/core.js +8 -9
- package/dist/elements/flex/Flex.vue +3 -3
- package/dist/elements/flex/app.d.ts +1 -8
- package/dist/elements/flex/app.js +2 -2
- package/dist/elements/flex/core.d.ts +16 -58
- package/dist/elements/flex/core.js +6 -7
- package/dist/elements/gallery/Gallery.vue +3 -3
- package/dist/elements/gallery/app.d.ts +1 -22
- package/dist/elements/gallery/app.js +2 -2
- package/dist/elements/gallery/core.d.ts +11 -132
- package/dist/elements/gallery/core.js +4 -5
- package/dist/elements/heading/Heading.vue +3 -3
- package/dist/elements/heading/_global.d.ts +2 -2
- package/dist/elements/heading/app.d.ts +1 -8
- package/dist/elements/heading/app.js +2 -2
- package/dist/elements/heading/core.d.ts +13 -97
- package/dist/elements/heading/core.js +8 -8
- package/dist/elements/horizontalLine/app.d.ts +1 -8
- package/dist/elements/horizontalLine/app.js +2 -2
- package/dist/elements/horizontalLine/core.d.ts +9 -47
- package/dist/elements/horizontalLine/core.js +4 -5
- package/dist/elements/image/Image.vue +3 -3
- package/dist/elements/image/ImageElement.vue +4 -4
- package/dist/elements/image/app.d.ts +1 -15
- package/dist/elements/image/app.js +2 -2
- package/dist/elements/image/core.d.ts +29 -108
- package/dist/elements/image/core.js +12 -19
- package/dist/elements/image/storage.d.ts +1 -1
- package/dist/elements/image/storage.js +6 -6
- package/dist/elements/lineBreak/app.d.ts +1 -8
- package/dist/elements/lineBreak/app.js +2 -2
- package/dist/elements/lineBreak/core.d.ts +9 -47
- package/dist/elements/lineBreak/core.js +4 -5
- package/dist/elements/link/BlockLink.vue +4 -6
- package/dist/elements/link/Link.vue +4 -4
- package/dist/elements/link/core.d.ts +6 -6
- package/dist/elements/link/core.js +4 -3
- package/dist/elements/link/dependency/app.d.ts +1 -15
- package/dist/elements/link/dependency/app.js +3 -3
- package/dist/elements/link/dependency/core.d.ts +27 -105
- package/dist/elements/link/dependency/core.js +6 -8
- package/dist/elements/link/hook.d.ts +12 -0
- package/dist/elements/link/hook.js +45 -0
- package/dist/elements/link/reference/app.d.ts +1 -15
- package/dist/elements/link/reference/app.js +3 -3
- package/dist/elements/link/reference/core.d.ts +24 -103
- package/dist/elements/link/reference/core.js +6 -8
- package/dist/elements/link/storage.js +1 -1
- package/dist/elements/list/List.vue +7 -5
- package/dist/elements/list/_global.d.ts +3 -3
- package/dist/elements/list/app.d.ts +1 -15
- package/dist/elements/list/app.js +2 -2
- package/dist/elements/list/core.d.ts +33 -155
- package/dist/elements/list/core.js +20 -18
- package/dist/elements/math/app.d.ts +1 -15
- package/dist/elements/math/app.js +3 -3
- package/dist/elements/math/block.d.ts +31 -43
- package/dist/elements/math/block.js +10 -9
- package/dist/elements/math/components/BlockMath.vue +4 -4
- package/dist/elements/math/components/InlinerMath.vue +4 -4
- package/dist/elements/math/core.d.ts +25 -53
- package/dist/elements/math/core.js +3 -11
- package/dist/elements/math/inliner.d.ts +24 -36
- package/dist/elements/math/inliner.js +10 -12
- package/dist/elements/paragraph/Paragraph.vue +3 -3
- package/dist/elements/paragraph/app.d.ts +1 -8
- package/dist/elements/paragraph/app.js +2 -2
- package/dist/elements/paragraph/core.d.ts +12 -53
- package/dist/elements/paragraph/core.js +6 -7
- package/dist/elements/problem/app.d.ts +1 -29
- package/dist/elements/problem/app.js +4 -4
- package/dist/elements/problem/components/Problem.vue +3 -3
- package/dist/elements/problem/components/ProblemContent.vue +15 -21
- package/dist/elements/problem/components/ProblemExpanderSection.vue +2 -2
- package/dist/elements/problem/components/Problems.vue +11 -7
- package/dist/elements/problem/components/SubProblem.vue +3 -4
- package/dist/elements/problem/components/expanders/Check.vue +3 -3
- package/dist/elements/problem/components/expanders/Checks.vue +6 -3
- package/dist/elements/problem/components/expanders/DefaultPlusSections.vue +3 -7
- package/dist/elements/problem/components/expanders/Hint.vue +3 -3
- package/dist/elements/problem/composables/problemScript.d.ts +2 -2
- package/dist/elements/problem/core.d.ts +63 -299
- package/dist/elements/problem/core.js +9 -11
- package/dist/elements/problem/hook.d.ts +1 -0
- package/dist/elements/problem/hook.js +14 -0
- package/dist/elements/problem/problem.d.ts +20 -77
- package/dist/elements/problem/problem.js +6 -6
- package/dist/elements/problem/problemCheck.d.ts +33 -83
- package/dist/elements/problem/problemCheck.js +16 -10
- package/dist/elements/problem/problemContent.d.ts +54 -401
- package/dist/elements/problem/problemContent.js +47 -56
- package/dist/elements/problem/problemScript.d.ts +18 -10
- package/dist/elements/problem/problemScript.js +15 -26
- package/dist/elements/problem/problems.d.ts +29 -188
- package/dist/elements/problem/problems.js +11 -15
- package/dist/elements/problem/storage.d.ts +1 -1
- package/dist/elements/problem/storage.js +2 -3
- package/dist/elements/table/Table.vue +3 -3
- package/dist/elements/table/app.d.ts +1 -29
- package/dist/elements/table/app.js +2 -2
- package/dist/elements/table/core.d.ts +28 -309
- package/dist/elements/table/core.js +17 -29
- package/dist/elements/video/Video.vue +4 -4
- package/dist/elements/video/app.d.ts +1 -15
- package/dist/elements/video/app.js +2 -2
- package/dist/elements/video/core.d.ts +26 -106
- package/dist/elements/video/core.js +11 -16
- package/dist/elements/video/storage.d.ts +1 -1
- package/dist/elements/video/storage.js +2 -3
- package/dist/error.d.ts +3 -0
- package/dist/error.js +6 -0
- package/dist/include.d.ts +4 -4
- package/dist/include.js +6 -12
- package/dist/index.d.ts +11 -11
- package/dist/index.js +11 -11
- package/dist/rawElement.d.ts +9 -6
- package/dist/rawElement.js +4 -0
- package/dist/rawToProse/countSchemas.d.ts +1 -0
- package/dist/rawToProse/countSchemas.js +11 -0
- package/dist/rawToProse/hook.d.ts +39 -0
- package/dist/rawToProse/hook.js +6 -0
- package/dist/rawToProse/index.d.ts +34 -0
- package/dist/rawToProse/index.js +92 -0
- package/dist/rawToProse/uniqueTitles.d.ts +1 -0
- package/dist/rawToProse/uniqueTitles.js +11 -0
- package/dist/shared/filePath.js +2 -2
- package/dist/shared/paragraphWrap.d.ts +3 -3
- package/dist/shared/paragraphWrap.js +7 -12
- package/dist/slugify/index.d.ts +3 -1
- package/dist/slugify/index.js +5 -6
- package/dist/slugify/languages/en.js +1 -1
- package/dist/slugify/languages/ru.js +1 -1
- package/dist/snippet.d.ts +39 -33
- package/dist/snippet.js +139 -73
- package/dist/tag.d.ts +22 -19
- package/dist/tag.js +19 -15
- package/dist/toc.d.ts +12 -18
- package/dist/toc.js +120 -42
- package/package.json +7 -6
- package/dist/app/default/Inliners.vue +0 -11
- package/dist/context.d.ts +0 -4
- package/dist/context.js +0 -1
- package/dist/elements/link/step.d.ts +0 -16
- package/dist/elements/link/step.js +0 -36
- package/dist/elements/problem/step.d.ts +0 -5
- package/dist/elements/problem/step.js +0 -13
- package/dist/resolve.d.ts +0 -21
- package/dist/resolve.js +0 -102
- package/dist/resolveStep.d.ts +0 -9
- package/dist/resolveStep.js +0 -3
- package/dist/title.d.ts +0 -8
- package/dist/title.js +0 -6
- package/dist/utils/docs.d.ts +0 -1
- package/dist/utils/docs.js +0 -22
- package/types.d.ts +0 -4
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import type { XOR } from 'ts-xor';
|
|
2
|
+
import { type OptionalChildren, type Schema } from 'tsprose';
|
|
2
3
|
export interface ProblemCheckInfo {
|
|
3
4
|
label?: string;
|
|
4
5
|
hint?: string;
|
|
@@ -7,113 +8,59 @@ export interface ProblemCheckInfo {
|
|
|
7
8
|
export type ProblemCheckData = ProblemCheckInfo & {
|
|
8
9
|
serializedValidator: any;
|
|
9
10
|
};
|
|
10
|
-
export
|
|
11
|
+
export interface ProblemCheckSchema extends Schema {
|
|
11
12
|
name: 'problemCheck';
|
|
12
13
|
type: 'block';
|
|
13
14
|
linkable: false;
|
|
14
15
|
Data: ProblemCheckData;
|
|
15
16
|
Storage: undefined;
|
|
16
17
|
Children: ProblemCheckSchema[] | undefined;
|
|
17
|
-
}
|
|
18
|
-
export declare const problemCheckSchema:
|
|
19
|
-
|
|
20
|
-
type: "block";
|
|
21
|
-
linkable: false;
|
|
22
|
-
Data: ProblemCheckData;
|
|
23
|
-
Storage: undefined;
|
|
24
|
-
Children: ProblemCheckSchema[] | undefined;
|
|
25
|
-
};
|
|
26
|
-
type UndefinedOnly<T> = {
|
|
27
|
-
[K in keyof T]?: undefined;
|
|
28
|
-
};
|
|
29
|
-
type OneOf<T extends Record<string, any>> = {
|
|
30
|
-
[K in keyof T]: Pick<T, K> & UndefinedOnly<Omit<T, K>>;
|
|
31
|
-
}[keyof T];
|
|
32
|
-
export declare const ProblemCheck: import("@jsprose/core").Tag<"ProblemCheck", {
|
|
33
|
-
name: "problemCheck";
|
|
34
|
-
type: "block";
|
|
35
|
-
linkable: false;
|
|
36
|
-
Data: ProblemCheckData;
|
|
37
|
-
Storage: undefined;
|
|
38
|
-
Children: ProblemCheckSchema[] | undefined;
|
|
39
|
-
}, ({
|
|
18
|
+
}
|
|
19
|
+
export declare const problemCheckSchema: ProblemCheckSchema;
|
|
20
|
+
export declare const ProblemCheck: import("../../tag.js").ToEruditTag<ProblemCheckSchema, "ProblemCheck", {
|
|
40
21
|
label?: string;
|
|
41
22
|
hint?: string;
|
|
42
23
|
placeholder?: string;
|
|
43
|
-
} & (
|
|
24
|
+
} & (XOR<{
|
|
44
25
|
yes: true;
|
|
26
|
+
}, {
|
|
45
27
|
no: true;
|
|
46
|
-
|
|
28
|
+
}, {
|
|
29
|
+
boolean: boolean;
|
|
30
|
+
}, {
|
|
31
|
+
answer: ProblemCheckValue | ProblemCheckValue[];
|
|
32
|
+
}, {
|
|
47
33
|
answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[] | {
|
|
48
34
|
ordered?: boolean;
|
|
49
35
|
separator?: string;
|
|
50
36
|
values: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
|
|
51
37
|
};
|
|
52
|
-
script: string;
|
|
53
|
-
}> & (TagChildren | NoTagChildren))) & {}>;
|
|
54
|
-
export declare const problemCheckRegistryItem: import("@jsprose/core").RegistryItem<{
|
|
55
|
-
name: "problemCheck";
|
|
56
|
-
type: "block";
|
|
57
|
-
linkable: false;
|
|
58
|
-
Data: ProblemCheckData;
|
|
59
|
-
Storage: undefined;
|
|
60
|
-
Children: ProblemCheckSchema[] | undefined;
|
|
61
38
|
}, {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Storage: undefined;
|
|
68
|
-
Children: ProblemCheckSchema[] | undefined;
|
|
69
|
-
}, ({
|
|
39
|
+
script: string;
|
|
40
|
+
}> & OptionalChildren)>;
|
|
41
|
+
export declare const problemCheckCoreElement: {
|
|
42
|
+
readonly schema: ProblemCheckSchema;
|
|
43
|
+
readonly tags: [import("../../tag.js").ToEruditTag<ProblemCheckSchema, "ProblemCheck", {
|
|
70
44
|
label?: string;
|
|
71
45
|
hint?: string;
|
|
72
46
|
placeholder?: string;
|
|
73
|
-
} & (
|
|
47
|
+
} & (XOR<{
|
|
74
48
|
yes: true;
|
|
49
|
+
}, {
|
|
75
50
|
no: true;
|
|
76
|
-
|
|
51
|
+
}, {
|
|
52
|
+
boolean: boolean;
|
|
53
|
+
}, {
|
|
54
|
+
answer: ProblemCheckValue | ProblemCheckValue[];
|
|
55
|
+
}, {
|
|
77
56
|
answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[] | {
|
|
78
57
|
ordered?: boolean;
|
|
79
58
|
separator?: string;
|
|
80
59
|
values: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
|
|
81
60
|
};
|
|
82
|
-
script: string;
|
|
83
|
-
}> & (TagChildren | NoTagChildren))) & {}>;
|
|
84
|
-
}, undefined>;
|
|
85
|
-
export declare const problemCheckCoreElement: {
|
|
86
|
-
registryItem: import("@jsprose/core").RegistryItem<{
|
|
87
|
-
name: "problemCheck";
|
|
88
|
-
type: "block";
|
|
89
|
-
linkable: false;
|
|
90
|
-
Data: ProblemCheckData;
|
|
91
|
-
Storage: undefined;
|
|
92
|
-
Children: ProblemCheckSchema[] | undefined;
|
|
93
61
|
}, {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
type: "block";
|
|
97
|
-
linkable: false;
|
|
98
|
-
Data: ProblemCheckData;
|
|
99
|
-
Storage: undefined;
|
|
100
|
-
Children: ProblemCheckSchema[] | undefined;
|
|
101
|
-
}, ({
|
|
102
|
-
label?: string;
|
|
103
|
-
hint?: string;
|
|
104
|
-
placeholder?: string;
|
|
105
|
-
} & (OneOf<{
|
|
106
|
-
yes: true;
|
|
107
|
-
no: true;
|
|
108
|
-
answer: ProblemCheckValue;
|
|
109
|
-
answers: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[] | {
|
|
110
|
-
ordered?: boolean;
|
|
111
|
-
separator?: string;
|
|
112
|
-
values: (ProblemCheckValueDefined | ProblemCheckValueDefined[])[];
|
|
113
|
-
};
|
|
114
|
-
script: string;
|
|
115
|
-
}> & (TagChildren | NoTagChildren))) & {}>;
|
|
116
|
-
}, undefined>;
|
|
62
|
+
script: string;
|
|
63
|
+
}> & OptionalChildren)>];
|
|
117
64
|
};
|
|
118
65
|
export interface ProblemCheckValidatorBoolean {
|
|
119
66
|
type: 'boolean';
|
|
@@ -123,7 +70,7 @@ export type ProblemCheckValue = undefined | number | string | RegExp;
|
|
|
123
70
|
export type ProblemCheckValueDefined = Exclude<ProblemCheckValue, undefined>;
|
|
124
71
|
export interface ProblemCheckValidatorValue {
|
|
125
72
|
type: 'value';
|
|
126
|
-
answer: ProblemCheckValue;
|
|
73
|
+
answer: ProblemCheckValue | ProblemCheckValue[];
|
|
127
74
|
}
|
|
128
75
|
export interface ProblemCheckValidatorArray {
|
|
129
76
|
type: 'array';
|
|
@@ -142,7 +89,11 @@ export declare function toSerializableValidator(validator: ProblemCheckValidator
|
|
|
142
89
|
readonly type: "regexp";
|
|
143
90
|
readonly source: string;
|
|
144
91
|
readonly flags: string;
|
|
145
|
-
} |
|
|
92
|
+
} | (string | number | {
|
|
93
|
+
readonly type: "regexp";
|
|
94
|
+
readonly source: string;
|
|
95
|
+
readonly flags: string;
|
|
96
|
+
} | undefined)[] | undefined;
|
|
146
97
|
ordered?: undefined;
|
|
147
98
|
separator?: undefined;
|
|
148
99
|
answers?: undefined;
|
|
@@ -163,4 +114,3 @@ export declare function toSerializableValidator(validator: ProblemCheckValidator
|
|
|
163
114
|
};
|
|
164
115
|
export declare function fromSerializableValidator(serializedValidator: any): ProblemCheckValidator;
|
|
165
116
|
export declare function checkProblemAnswer(answer: string, yesRegexp: RegExp, noRegexp: RegExp, validator: ProblemCheckValidator): boolean;
|
|
166
|
-
export {};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineSchema, ensureTagChildren } from "tsprose";
|
|
2
2
|
import { defineEruditTag } from "../../tag.js";
|
|
3
|
-
import {
|
|
3
|
+
import { defineProseCoreElement } from "../../coreElement.js";
|
|
4
|
+
import { EruditProseError } from "../../error.js";
|
|
4
5
|
export const problemCheckSchema = defineSchema({
|
|
5
6
|
name: "problemCheck",
|
|
6
7
|
type: "block",
|
|
7
8
|
linkable: false
|
|
8
|
-
})
|
|
9
|
+
});
|
|
9
10
|
export const ProblemCheck = defineEruditTag({
|
|
10
11
|
tagName: "ProblemCheck",
|
|
11
12
|
schema: problemCheckSchema
|
|
@@ -39,6 +40,11 @@ export const ProblemCheck = defineEruditTag({
|
|
|
39
40
|
type: "boolean",
|
|
40
41
|
answer: false
|
|
41
42
|
};
|
|
43
|
+
} else if ("boolean" in props) {
|
|
44
|
+
validator = {
|
|
45
|
+
type: "boolean",
|
|
46
|
+
answer: !!props.boolean
|
|
47
|
+
};
|
|
42
48
|
} else if ("answer" in props) {
|
|
43
49
|
validator = {
|
|
44
50
|
type: "value",
|
|
@@ -73,11 +79,10 @@ export const ProblemCheck = defineEruditTag({
|
|
|
73
79
|
serializedValidator: toSerializableValidator(validator)
|
|
74
80
|
};
|
|
75
81
|
});
|
|
76
|
-
export const
|
|
82
|
+
export const problemCheckCoreElement = defineProseCoreElement({
|
|
77
83
|
schema: problemCheckSchema,
|
|
78
84
|
tags: [ProblemCheck]
|
|
79
85
|
});
|
|
80
|
-
export const problemCheckCoreElement = defineEruditProseCoreElement({ registryItem: problemCheckRegistryItem });
|
|
81
86
|
export function toSerializableValidator(validator) {
|
|
82
87
|
if (validator.type === "boolean") {
|
|
83
88
|
return validator;
|
|
@@ -95,7 +100,7 @@ export function toSerializableValidator(validator) {
|
|
|
95
100
|
if (validator.type === "value") {
|
|
96
101
|
return {
|
|
97
102
|
type: "value",
|
|
98
|
-
answer: toSerializableValue(validator.answer)
|
|
103
|
+
answer: Array.isArray(validator.answer) ? validator.answer.map(toSerializableValue) : toSerializableValue(validator.answer)
|
|
99
104
|
};
|
|
100
105
|
}
|
|
101
106
|
if (validator.type === "array") {
|
|
@@ -129,7 +134,7 @@ export function fromSerializableValidator(serializedValidator) {
|
|
|
129
134
|
if (serializedValidator.type === "value") {
|
|
130
135
|
return {
|
|
131
136
|
type: "value",
|
|
132
|
-
answer: fromSerializableValue(serializedValidator.answer)
|
|
137
|
+
answer: Array.isArray(serializedValidator.answer) ? serializedValidator.answer.map(fromSerializableValue) : fromSerializableValue(serializedValidator.answer)
|
|
133
138
|
};
|
|
134
139
|
}
|
|
135
140
|
if (serializedValidator.type === "array") {
|
|
@@ -164,13 +169,14 @@ export function checkProblemAnswer(answer, yesRegexp, noRegexp, validator) {
|
|
|
164
169
|
return answer === String(expected);
|
|
165
170
|
};
|
|
166
171
|
const checkAnswer = (expect, answer) => {
|
|
167
|
-
if (expect === undefined) {
|
|
172
|
+
if (expect === undefined || expect === null) {
|
|
168
173
|
return answer.trim() === "";
|
|
169
174
|
}
|
|
170
175
|
return checkDefinedAnswer(expect, answer);
|
|
171
176
|
};
|
|
172
177
|
if (validator.type === "value") {
|
|
173
|
-
|
|
178
|
+
const anyOf = Array.isArray(validator.answer) ? validator.answer : [validator.answer];
|
|
179
|
+
return anyOf.some((expect) => checkAnswer(expect, answer));
|
|
174
180
|
}
|
|
175
181
|
if (validator.type === "array") {
|
|
176
182
|
const separatorRegexp = new RegExp(`\\s*${validator.separator.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s*`, "g");
|
|
@@ -199,5 +205,5 @@ export function checkProblemAnswer(answer, yesRegexp, noRegexp, validator) {
|
|
|
199
205
|
}
|
|
200
206
|
return true;
|
|
201
207
|
}
|
|
202
|
-
throw new
|
|
208
|
+
throw new EruditProseError(`"checkProblemAnswer" not implemented for type "${validator.type}"!`);
|
|
203
209
|
}
|