@enkidevs/curriculum-ast-validators
v4.3.4
Published
Validators for Enki Curriculum AST
Downloads
52
Readme
Enki Curriculum AST Validators
Validates Enki Curriculum AST.
See Enki curriculum processors for more details.
Rules
Headline
There can only be 1 Headline node per Insight. This is checked by the headline validator.
YAML
There can only be 1 YAML metadata node per Insight. This is checked by the yaml validator.
Insight Section
The section name must be one of the following:
- Content
- Footnotes
- Revision
- Practice
- Quiz
Insight Question Gap
The insight question must have at least 1 question gap.
Insight Question Answers
The insight question must have answers and the number of question gaps must match the number of correct answers
API
const { contentTypes } = require('@enkidevs/curriculum-helpers');
const { getParser } = require('@enkidevs/curriculum-parser-markdown');
const {
getValidator,
getSafeValidator,
validate,
validateSafe,
} = require('@enkidevs/curriculum-ast-validators');
const ast = getParser(contentTypes.INSIGHT).parseSync('# Missing YAML config');
// safely validate any insight property
const error = getSafeValidator(contentTypes.INSIGHT).yaml(ast);
console.error(`${error.message}\n\n`);
// "Must have exactly 1 yaml configuration but found 0 instead"
// safely validate an entire insight
const errors = validateSafe(contentTypes.INSIGHT)(ast);
console.error(`[${errors.map(e => e.message)}]\n\n`);
// ["Must have exactly 1 yaml configuration but found 0 instead"]
// strictly validate any insight property
try {
getValidator(contentTypes.INSIGHT).yaml(ast);
} catch (e) {
console.error(`${e.message}\n\n`);
// "Must have exactly 1 yaml configuration but found 0 instead"
}
// strictly validate an entire insight
try {
validate(contentTypes.INSIGHT)(ast);
} catch (e) {
console.error(`${e.message}\n\n`);
// "Must have exactly 1 yaml configuration but found 0 instead"
}
