UNPKG

ember-legacy-class-transform

Version:
90 lines (86 loc) 10.4 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.Parser = undefined; var _simpleHtmlTokenizer = require('simple-html-tokenizer'); var _util = require('@glimmer/util'); const entityParser = new _simpleHtmlTokenizer.EntityParser(_simpleHtmlTokenizer.HTML5NamedCharRefs); class Parser { constructor(source, options = {}) { this.elementStack = []; this.currentAttribute = null; this.currentNode = null; this.tokenizer = new _simpleHtmlTokenizer.EventedTokenizer(this, entityParser); this.options = options; this.source = source.split(/(?:\r\n?|\n)/g); } get currentAttr() { return (0, _util.expect)(this.currentAttribute, 'expected attribute'); } get currentTag() { let node = this.currentNode; (0, _util.assert)(node && (node.type === 'StartTag' || node.type === 'EndTag'), 'expected tag'); return node; } get currentStartTag() { let node = this.currentNode; (0, _util.assert)(node && node.type === 'StartTag', 'expected start tag'); return node; } get currentEndTag() { let node = this.currentNode; (0, _util.assert)(node && node.type === 'EndTag', 'expected end tag'); return node; } get currentComment() { let node = this.currentNode; (0, _util.assert)(node && node.type === 'CommentStatement', 'expected a comment'); return node; } get currentData() { let node = this.currentNode; (0, _util.assert)(node && node.type === 'TextNode', 'expected a text node'); return node; } acceptNode(node) { return this[node.type](node); } currentElement() { return this.elementStack[this.elementStack.length - 1]; } sourceForNode(node, endNode) { let firstLine = node.loc.start.line - 1; let currentLine = firstLine - 1; let firstColumn = node.loc.start.column; let string = []; let line; let lastLine; let lastColumn; if (endNode) { lastLine = endNode.loc.end.line - 1; lastColumn = endNode.loc.end.column; } else { lastLine = node.loc.end.line - 1; lastColumn = node.loc.end.column; } while (currentLine < lastLine) { currentLine++; line = this.source[currentLine]; if (currentLine === firstLine) { if (firstLine === lastLine) { string.push(line.slice(firstColumn, lastColumn)); } else { string.push(line.slice(firstColumn)); } } else if (currentLine === lastLine) { string.push(line.slice(0, lastColumn)); } else { string.push(line); } } return string.join('\n'); } } exports.Parser = Parser; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wYXJzZXIuanMiXSwibmFtZXMiOlsiZW50aXR5UGFyc2VyIiwiUGFyc2VyIiwiY29uc3RydWN0b3IiLCJzb3VyY2UiLCJvcHRpb25zIiwiZWxlbWVudFN0YWNrIiwiY3VycmVudEF0dHJpYnV0ZSIsImN1cnJlbnROb2RlIiwidG9rZW5pemVyIiwic3BsaXQiLCJjdXJyZW50QXR0ciIsImN1cnJlbnRUYWciLCJub2RlIiwidHlwZSIsImN1cnJlbnRTdGFydFRhZyIsImN1cnJlbnRFbmRUYWciLCJjdXJyZW50Q29tbWVudCIsImN1cnJlbnREYXRhIiwiYWNjZXB0Tm9kZSIsImN1cnJlbnRFbGVtZW50IiwibGVuZ3RoIiwic291cmNlRm9yTm9kZSIsImVuZE5vZGUiLCJmaXJzdExpbmUiLCJsb2MiLCJzdGFydCIsImxpbmUiLCJjdXJyZW50TGluZSIsImZpcnN0Q29sdW1uIiwiY29sdW1uIiwic3RyaW5nIiwibGFzdExpbmUiLCJsYXN0Q29sdW1uIiwiZW5kIiwicHVzaCIsInNsaWNlIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBLE1BQU1BLGVBQWUsOEVBQXJCO0FBQ08sTUFBTUMsTUFBTixDQUFhO0FBQ2hCQyxnQkFBWUMsTUFBWixFQUFvQkMsVUFBVSxFQUE5QixFQUFrQztBQUM5QixhQUFLQyxZQUFMLEdBQW9CLEVBQXBCO0FBQ0EsYUFBS0MsZ0JBQUwsR0FBd0IsSUFBeEI7QUFDQSxhQUFLQyxXQUFMLEdBQW1CLElBQW5CO0FBQ0EsYUFBS0MsU0FBTCxHQUFpQiwwQ0FBcUIsSUFBckIsRUFBMkJSLFlBQTNCLENBQWpCO0FBQ0EsYUFBS0ksT0FBTCxHQUFlQSxPQUFmO0FBQ0EsYUFBS0QsTUFBTCxHQUFjQSxPQUFPTSxLQUFQLENBQWEsZUFBYixDQUFkO0FBQ0g7QUFDRCxRQUFJQyxXQUFKLEdBQWtCO0FBQ2QsZUFBTyxrQkFBTyxLQUFLSixnQkFBWixFQUE4QixvQkFBOUIsQ0FBUDtBQUNIO0FBQ0QsUUFBSUss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R0FBQUEsTSIsImZpbGUiOiJsaWIvcGFyc2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRlZFRva2VuaXplciwgRW50aXR5UGFyc2VyLCBIVE1MNU5hbWVkQ2hhclJlZnMgYXMgbmFtZWRDaGFyUmVmcyB9IGZyb20gXCJzaW1wbGUtaHRtbC10b2tlbml6ZXJcIjtcbmltcG9ydCB7IGFzc2VydCwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5jb25zdCBlbnRpdHlQYXJzZXIgPSBuZXcgRW50aXR5UGFyc2VyKG5hbWVkQ2hhclJlZnMpO1xuZXhwb3J0IGNsYXNzIFBhcnNlciB7XG4gICAgY29uc3RydWN0b3Ioc291cmNlLCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sgPSBbXTtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0cmlidXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50Tm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMudG9rZW5pemVyID0gbmV3IEV2ZW50ZWRUb2tlbml6ZXIodGhpcywgZW50aXR5UGFyc2VyKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2Uuc3BsaXQoLyg/Olxcclxcbj98XFxuKS9nKTtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnRBdHRyKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuY3VycmVudEF0dHJpYnV0ZSwgJ2V4cGVjdGVkIGF0dHJpYnV0ZScpO1xuICAgIH1cbiAgICBnZXQgY3VycmVudFRhZygpIHtcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLmN1cnJlbnROb2RlO1xuICAgICAgICBhc3NlcnQobm9kZSAmJiAobm9kZS50eXBlID09PSAnU3RhcnRUYWcnIHx8IG5vZGUudHlwZSA9PT0gJ0VuZFRhZycpLCAnZXhwZWN0ZWQgdGFnJyk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBnZXQgY3VycmVudFN0YXJ0VGFnKCkge1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuY3VycmVudE5vZGU7XG4gICAgICAgIGFzc2VydChub2RlICYmIG5vZGUudHlwZSA9PT0gJ1N0YXJ0VGFnJywgJ2V4cGVjdGVkIHN0YXJ0IHRhZycpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnRFbmRUYWcoKSB7XG4gICAgICAgIGxldCBub2RlID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICAgICAgYXNzZXJ0KG5vZGUgJiYgbm9kZS50eXBlID09PSAnRW5kVGFnJywgJ2V4cGVjdGVkIGVuZCB0YWcnKTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGdldCBjdXJyZW50Q29tbWVudCgpIHtcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLmN1cnJlbnROb2RlO1xuICAgICAgICBhc3NlcnQobm9kZSAmJiBub2RlLnR5cGUgPT09ICdDb21tZW50U3RhdGVtZW50JywgJ2V4cGVjdGVkIGEgY29tbWVudCcpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnREYXRhKCkge1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuY3VycmVudE5vZGU7XG4gICAgICAgIGFzc2VydChub2RlICYmIG5vZGUudHlwZSA9PT0gJ1RleHROb2RlJywgJ2V4cGVjdGVkIGEgdGV4dCBub2RlJyk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBhY2NlcHROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbbm9kZS50eXBlXShub2RlKTtcbiAgICB9XG4gICAgY3VycmVudEVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFja1t0aGlzLmVsZW1lbnRTdGFjay5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgc291cmNlRm9yTm9kZShub2RlLCBlbmROb2RlKSB7XG4gICAgICAgIGxldCBmaXJzdExpbmUgPSBub2RlLmxvYy5zdGFydC5saW5lIC0gMTtcbiAgICAgICAgbGV0IGN1cnJlbnRMaW5lID0gZmlyc3RMaW5lIC0gMTtcbiAgICAgICAgbGV0IGZpcnN0Q29sdW1uID0gbm9kZS5sb2Muc3RhcnQuY29sdW1uO1xuICAgICAgICBsZXQgc3RyaW5nID0gW107XG4gICAgICAgIGxldCBsaW5lO1xuICAgICAgICBsZXQgbGFzdExpbmU7XG4gICAgICAgIGxldCBsYXN0Q29sdW1uO1xuICAgICAgICBpZiAoZW5kTm9kZSkge1xuICAgICAgICAgICAgbGFzdExpbmUgPSBlbmROb2RlLmxvYy5lbmQubGluZSAtIDE7XG4gICAgICAgICAgICBsYXN0Q29sdW1uID0gZW5kTm9kZS5sb2MuZW5kLmNvbHVtbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhc3RMaW5lID0gbm9kZS5sb2MuZW5kLmxpbmUgLSAxO1xuICAgICAgICAgICAgbGFzdENvbHVtbiA9IG5vZGUubG9jLmVuZC5jb2x1bW47XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRMaW5lIDwgbGFzdExpbmUpIHtcbiAgICAgICAgICAgIGN1cnJlbnRMaW5lKys7XG4gICAgICAgICAgICBsaW5lID0gdGhpcy5zb3VyY2VbY3VycmVudExpbmVdO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRMaW5lID09PSBmaXJzdExpbmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3RMaW5lID09PSBsYXN0TGluZSkge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmcucHVzaChsaW5lLnNsaWNlKGZpcnN0Q29sdW1uLCBsYXN0Q29sdW1uKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nLnB1c2gobGluZS5zbGljZShmaXJzdENvbHVtbikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudExpbmUgPT09IGxhc3RMaW5lKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nLnB1c2gobGluZS5zbGljZSgwLCBsYXN0Q29sdW1uKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0cmluZy5wdXNoKGxpbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJpbmcuam9pbignXFxuJyk7XG4gICAgfVxufSJdfQ==