chameleon-linter
Version: 
cml规范校验工具
37 lines (29 loc) • 729 B
JavaScript
const jsonlint = require('json-lint');
const config = require('../config/parser-config');
const parse = require('@babel/parser').parse;
module.exports = async (part) => {
  let messages = [];
  let result = jsonlint(part.content, {
    comments: false
  });
  if (result.error) {
    messages.push({
      line: result.line,
      column: result.character,
      token: result.c,
      msg: result.error
    });
  }
  const opts = config.script;
  let obj = null;
  try {
    obj = (new Function('return ' + part.content.replace(/^\n*/g, '') + ';'))();
  }
  catch (e) {}
  return {
    start: part.line,
    ast: result.error ? null : parse('module.exports = \n' + part.content, opts),
    obj: obj,
    messages
  };
};