@enkidevs/curriculum-ast-validators

4.3.3 • Public • Published

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"
}

Package Sidebar

Install

npm i @enkidevs/curriculum-ast-validators

Weekly Downloads

1

Version

4.3.3

License

MIT

Unpacked Size

12.1 kB

Total Files

11

Last publish

Collaborators

  • kapnobatai137
  • spypsy
  • mathieudutour
  • lukem512
  • stefanoeb
  • loopiezlol
  • nem035
  • oliviaoddo
  • pedromdrp
  • lizthedeveloper
  • sourabhv
  • milesflo
  • mihaiberq
  • enkici