@enkidevs/curriculum-ast-validators
v4.3.3
Published
Validators for Enki Curriculum AST
Downloads
31
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"
}