4.3.3 • Published 3 years ago

@enkidevs/curriculum-ast-validators v4.3.3

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

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

3 years ago

4.3.3

3 years ago

4.3.0

3 years ago

4.2.0

3 years ago

4.1.0

4 years ago

4.0.2

4 years ago

4.0.1

4 years ago

4.0.0

4 years ago

3.0.0

4 years ago

2.2.0

4 years ago

2.1.2

4 years ago