@airtasker/form-schema-compiler
Version:
a form schema compiler
51 lines (36 loc) • 1.62 kB
JavaScript
;
exports.__esModule = true;
exports.parseTwoWayBindingString = exports.parseExpressionString = exports.parseTemplateString = undefined;
var _parseExpressionTokenStream = require("./parseExpressionTokenStream");
var _parseExpressionTokenStream2 = _interopRequireDefault(_parseExpressionTokenStream);
var _tokenizers = require("../tokenizers");
var _flowRight = require("lodash/flowRight");
var _flowRight2 = _interopRequireDefault(_flowRight);
var _const = require("../const");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
var parse = (0, _flowRight2["default"])(_parseExpressionTokenStream2["default"], _tokenizers.createExpressionTokenStream, _tokenizers.createInputStream);
/**
* parse template string
* @param templateString:string
*/
var parseTemplateString = exports.parseTemplateString = function parseTemplateString(templateString) {
return parse("`".concat(templateString, "`"));
};
/**
* parse expression string
* @param expressionString:string
*/
var parseExpressionString = exports.parseExpressionString = parse;
/**
* parse two way binding string
* Will throw error if TwoWayBinding is not a identifier.
* @param expressionString
*/
var parseTwoWayBindingString = exports.parseTwoWayBindingString = function parseTwoWayBindingString(expressionString) {
var ast = parse(expressionString);
var id = ast.body[0];
if (id && id.type !== _const.TYPES.Identifier) {
throw new Error("data binding type have to be Identifier instead of ".concat(ast.type, "(").concat(expressionString, ")"));
}
return ast;
};