curriculum-ast-validators
v2.0.2
Published
Validators for Enki Curriculum AST
Downloads
3
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"
}