UNPKG

json-string-mapper

Version:

transform json string to key value pair map

542 lines (540 loc) 20.1 kB
/** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); import { isBlank } from '../facade/lang'; var ParserError = (function () { function ParserError(message, input, errLocation, ctxLocation) { this.input = input; this.errLocation = errLocation; this.ctxLocation = ctxLocation; this.message = "Parser Error: " + message + " " + errLocation + " [" + input + "] in " + ctxLocation; } return ParserError; }()); export { ParserError }; var ParseSpan = (function () { function ParseSpan(start, end) { this.start = start; this.end = end; } return ParseSpan; }()); export { ParseSpan }; var AST = (function () { function AST(span) { this.span = span; } AST.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return null; }; AST.prototype.toString = function () { return 'AST'; }; return AST; }()); export { AST }; /** * Represents a quoted expression of the form: * * quote = prefix `:` uninterpretedExpression * prefix = identifier * uninterpretedExpression = arbitrary string * * A quoted expression is meant to be pre-processed by an AST transformer that * converts it into another AST that no longer contains quoted expressions. * It is meant to allow third-party developers to extend Angular template * expression language. The `uninterpretedExpression` part of the quote is * therefore not interpreted by the Angular's own expression parser. */ var Quote = (function (_super) { __extends(Quote, _super); function Quote(span, prefix, uninterpretedExpression, location) { var _this = _super.call(this, span) || this; _this.prefix = prefix; _this.uninterpretedExpression = uninterpretedExpression; _this.location = location; return _this; } Quote.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitQuote(this, context); }; Quote.prototype.toString = function () { return 'Quote'; }; return Quote; }(AST)); export { Quote }; var EmptyExpr = (function (_super) { __extends(EmptyExpr, _super); function EmptyExpr() { return _super !== null && _super.apply(this, arguments) || this; } EmptyExpr.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } // do nothing }; return EmptyExpr; }(AST)); export { EmptyExpr }; var ImplicitReceiver = (function (_super) { __extends(ImplicitReceiver, _super); function ImplicitReceiver() { return _super !== null && _super.apply(this, arguments) || this; } ImplicitReceiver.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitImplicitReceiver(this, context); }; return ImplicitReceiver; }(AST)); export { ImplicitReceiver }; /** * Multiple expressions separated by a semicolon. */ var Chain = (function (_super) { __extends(Chain, _super); function Chain(span, expressions) { var _this = _super.call(this, span) || this; _this.expressions = expressions; return _this; } Chain.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitChain(this, context); }; return Chain; }(AST)); export { Chain }; var Conditional = (function (_super) { __extends(Conditional, _super); function Conditional(span, condition, trueExp, falseExp) { var _this = _super.call(this, span) || this; _this.condition = condition; _this.trueExp = trueExp; _this.falseExp = falseExp; return _this; } Conditional.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitConditional(this, context); }; return Conditional; }(AST)); export { Conditional }; var PropertyRead = (function (_super) { __extends(PropertyRead, _super); function PropertyRead(span, receiver, name) { var _this = _super.call(this, span) || this; _this.receiver = receiver; _this.name = name; return _this; } PropertyRead.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitPropertyRead(this, context); }; return PropertyRead; }(AST)); export { PropertyRead }; var PropertyWrite = (function (_super) { __extends(PropertyWrite, _super); function PropertyWrite(span, receiver, name, value) { var _this = _super.call(this, span) || this; _this.receiver = receiver; _this.name = name; _this.value = value; return _this; } PropertyWrite.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitPropertyWrite(this, context); }; return PropertyWrite; }(AST)); export { PropertyWrite }; var SafePropertyRead = (function (_super) { __extends(SafePropertyRead, _super); function SafePropertyRead(span, receiver, name) { var _this = _super.call(this, span) || this; _this.receiver = receiver; _this.name = name; return _this; } SafePropertyRead.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitSafePropertyRead(this, context); }; return SafePropertyRead; }(AST)); export { SafePropertyRead }; var KeyedRead = (function (_super) { __extends(KeyedRead, _super); function KeyedRead(span, obj, key) { var _this = _super.call(this, span) || this; _this.obj = obj; _this.key = key; return _this; } KeyedRead.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitKeyedRead(this, context); }; return KeyedRead; }(AST)); export { KeyedRead }; var KeyedWrite = (function (_super) { __extends(KeyedWrite, _super); function KeyedWrite(span, obj, key, value) { var _this = _super.call(this, span) || this; _this.obj = obj; _this.key = key; _this.value = value; return _this; } KeyedWrite.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitKeyedWrite(this, context); }; return KeyedWrite; }(AST)); export { KeyedWrite }; var BindingPipe = (function (_super) { __extends(BindingPipe, _super); function BindingPipe(span, exp, name, args) { var _this = _super.call(this, span) || this; _this.exp = exp; _this.name = name; _this.args = args; return _this; } BindingPipe.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitPipe(this, context); }; return BindingPipe; }(AST)); export { BindingPipe }; var LiteralPrimitive = (function (_super) { __extends(LiteralPrimitive, _super); function LiteralPrimitive(span, value) { var _this = _super.call(this, span) || this; _this.value = value; return _this; } LiteralPrimitive.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitLiteralPrimitive(this, context); }; return LiteralPrimitive; }(AST)); export { LiteralPrimitive }; var LiteralArray = (function (_super) { __extends(LiteralArray, _super); function LiteralArray(span, expressions) { var _this = _super.call(this, span) || this; _this.expressions = expressions; return _this; } LiteralArray.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitLiteralArray(this, context); }; return LiteralArray; }(AST)); export { LiteralArray }; var LiteralMap = (function (_super) { __extends(LiteralMap, _super); function LiteralMap(span, keys, values) { var _this = _super.call(this, span) || this; _this.keys = keys; _this.values = values; return _this; } LiteralMap.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitLiteralMap(this, context); }; return LiteralMap; }(AST)); export { LiteralMap }; var Interpolation = (function (_super) { __extends(Interpolation, _super); function Interpolation(span, strings, expressions) { var _this = _super.call(this, span) || this; _this.strings = strings; _this.expressions = expressions; return _this; } Interpolation.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitInterpolation(this, context); }; return Interpolation; }(AST)); export { Interpolation }; var Binary = (function (_super) { __extends(Binary, _super); function Binary(span, operation, left, right) { var _this = _super.call(this, span) || this; _this.operation = operation; _this.left = left; _this.right = right; return _this; } Binary.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitBinary(this, context); }; return Binary; }(AST)); export { Binary }; var PrefixNot = (function (_super) { __extends(PrefixNot, _super); function PrefixNot(span, expression) { var _this = _super.call(this, span) || this; _this.expression = expression; return _this; } PrefixNot.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitPrefixNot(this, context); }; return PrefixNot; }(AST)); export { PrefixNot }; var MethodCall = (function (_super) { __extends(MethodCall, _super); function MethodCall(span, receiver, name, args) { var _this = _super.call(this, span) || this; _this.receiver = receiver; _this.name = name; _this.args = args; return _this; } MethodCall.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitMethodCall(this, context); }; return MethodCall; }(AST)); export { MethodCall }; var SafeMethodCall = (function (_super) { __extends(SafeMethodCall, _super); function SafeMethodCall(span, receiver, name, args) { var _this = _super.call(this, span) || this; _this.receiver = receiver; _this.name = name; _this.args = args; return _this; } SafeMethodCall.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitSafeMethodCall(this, context); }; return SafeMethodCall; }(AST)); export { SafeMethodCall }; var FunctionCall = (function (_super) { __extends(FunctionCall, _super); function FunctionCall(span, target, args) { var _this = _super.call(this, span) || this; _this.target = target; _this.args = args; return _this; } FunctionCall.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return visitor.visitFunctionCall(this, context); }; return FunctionCall; }(AST)); export { FunctionCall }; var ASTWithSource = (function (_super) { __extends(ASTWithSource, _super); function ASTWithSource(ast, source, location, errors) { var _this = _super.call(this, new ParseSpan(0, isBlank(source) ? 0 : source.length)) || this; _this.ast = ast; _this.source = source; _this.location = location; _this.errors = errors; return _this; } ASTWithSource.prototype.visit = function (visitor, context) { if (context === void 0) { context = null; } return this.ast.visit(visitor, context); }; ASTWithSource.prototype.toString = function () { return this.source + " in " + this.location; }; return ASTWithSource; }(AST)); export { ASTWithSource }; var TemplateBinding = (function () { function TemplateBinding(span, key, keyIsVar, name, expression) { this.span = span; this.key = key; this.keyIsVar = keyIsVar; this.name = name; this.expression = expression; } return TemplateBinding; }()); export { TemplateBinding }; var RecursiveAstVisitor = (function () { function RecursiveAstVisitor() { } RecursiveAstVisitor.prototype.visitBinary = function (ast, context) { ast.left.visit(this); ast.right.visit(this); return null; }; RecursiveAstVisitor.prototype.visitChain = function (ast, context) { return this.visitAll(ast.expressions, context); }; RecursiveAstVisitor.prototype.visitConditional = function (ast, context) { ast.condition.visit(this); ast.trueExp.visit(this); ast.falseExp.visit(this); return null; }; RecursiveAstVisitor.prototype.visitPipe = function (ast, context) { ast.exp.visit(this); this.visitAll(ast.args, context); return null; }; RecursiveAstVisitor.prototype.visitFunctionCall = function (ast, context) { ast.target.visit(this); this.visitAll(ast.args, context); return null; }; RecursiveAstVisitor.prototype.visitImplicitReceiver = function (ast, context) { return null; }; RecursiveAstVisitor.prototype.visitInterpolation = function (ast, context) { return this.visitAll(ast.expressions, context); }; RecursiveAstVisitor.prototype.visitKeyedRead = function (ast, context) { ast.obj.visit(this); ast.key.visit(this); return null; }; RecursiveAstVisitor.prototype.visitKeyedWrite = function (ast, context) { ast.obj.visit(this); ast.key.visit(this); ast.value.visit(this); return null; }; RecursiveAstVisitor.prototype.visitLiteralArray = function (ast, context) { return this.visitAll(ast.expressions, context); }; RecursiveAstVisitor.prototype.visitLiteralMap = function (ast, context) { return this.visitAll(ast.values, context); }; RecursiveAstVisitor.prototype.visitLiteralPrimitive = function (ast, context) { return null; }; RecursiveAstVisitor.prototype.visitMethodCall = function (ast, context) { ast.receiver.visit(this); return this.visitAll(ast.args, context); }; RecursiveAstVisitor.prototype.visitPrefixNot = function (ast, context) { ast.expression.visit(this); return null; }; RecursiveAstVisitor.prototype.visitPropertyRead = function (ast, context) { ast.receiver.visit(this); return null; }; RecursiveAstVisitor.prototype.visitPropertyWrite = function (ast, context) { ast.receiver.visit(this); ast.value.visit(this); return null; }; RecursiveAstVisitor.prototype.visitSafePropertyRead = function (ast, context) { ast.receiver.visit(this); return null; }; RecursiveAstVisitor.prototype.visitSafeMethodCall = function (ast, context) { ast.receiver.visit(this); return this.visitAll(ast.args, context); }; RecursiveAstVisitor.prototype.visitAll = function (asts, context) { var _this = this; asts.forEach(function (ast) { return ast.visit(_this, context); }); return null; }; RecursiveAstVisitor.prototype.visitQuote = function (ast, context) { return null; }; return RecursiveAstVisitor; }()); export { RecursiveAstVisitor }; var AstTransformer = (function () { function AstTransformer() { } AstTransformer.prototype.visitImplicitReceiver = function (ast, context) { return ast; }; AstTransformer.prototype.visitInterpolation = function (ast, context) { return new Interpolation(ast.span, ast.strings, this.visitAll(ast.expressions)); }; AstTransformer.prototype.visitLiteralPrimitive = function (ast, context) { return new LiteralPrimitive(ast.span, ast.value); }; AstTransformer.prototype.visitPropertyRead = function (ast, context) { return new PropertyRead(ast.span, ast.receiver.visit(this), ast.name); }; AstTransformer.prototype.visitPropertyWrite = function (ast, context) { return new PropertyWrite(ast.span, ast.receiver.visit(this), ast.name, ast.value); }; AstTransformer.prototype.visitSafePropertyRead = function (ast, context) { return new SafePropertyRead(ast.span, ast.receiver.visit(this), ast.name); }; AstTransformer.prototype.visitMethodCall = function (ast, context) { return new MethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args)); }; AstTransformer.prototype.visitSafeMethodCall = function (ast, context) { return new SafeMethodCall(ast.span, ast.receiver.visit(this), ast.name, this.visitAll(ast.args)); }; AstTransformer.prototype.visitFunctionCall = function (ast, context) { return new FunctionCall(ast.span, ast.target.visit(this), this.visitAll(ast.args)); }; AstTransformer.prototype.visitLiteralArray = function (ast, context) { return new LiteralArray(ast.span, this.visitAll(ast.expressions)); }; AstTransformer.prototype.visitLiteralMap = function (ast, context) { return new LiteralMap(ast.span, ast.keys, this.visitAll(ast.values)); }; AstTransformer.prototype.visitBinary = function (ast, context) { return new Binary(ast.span, ast.operation, ast.left.visit(this), ast.right.visit(this)); }; AstTransformer.prototype.visitPrefixNot = function (ast, context) { return new PrefixNot(ast.span, ast.expression.visit(this)); }; AstTransformer.prototype.visitConditional = function (ast, context) { return new Conditional(ast.span, ast.condition.visit(this), ast.trueExp.visit(this), ast.falseExp.visit(this)); }; AstTransformer.prototype.visitPipe = function (ast, context) { return new BindingPipe(ast.span, ast.exp.visit(this), ast.name, this.visitAll(ast.args)); }; AstTransformer.prototype.visitKeyedRead = function (ast, context) { return new KeyedRead(ast.span, ast.obj.visit(this), ast.key.visit(this)); }; AstTransformer.prototype.visitKeyedWrite = function (ast, context) { return new KeyedWrite(ast.span, ast.obj.visit(this), ast.key.visit(this), ast.value.visit(this)); }; AstTransformer.prototype.visitAll = function (asts) { var res = new Array(asts.length); for (var i = 0; i < asts.length; ++i) { res[i] = asts[i].visit(this); } return res; }; AstTransformer.prototype.visitChain = function (ast, context) { return new Chain(ast.span, this.visitAll(ast.expressions)); }; AstTransformer.prototype.visitQuote = function (ast, context) { return new Quote(ast.span, ast.prefix, ast.uninterpretedExpression, ast.location); }; return AstTransformer; }()); export { AstTransformer }; //# sourceMappingURL=ast.js.map