|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- "use strict";
-
- var _contextsMap;
-
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
-
- var tag = require('./tree-constructor-context-handlers/tag');
-
- var tagContent = require('./tree-constructor-context-handlers/tag-content');
-
- var tagName = require('./tree-constructor-context-handlers/tag-name');
-
- var attributes = require('./tree-constructor-context-handlers/attributes');
-
- var attribute = require('./tree-constructor-context-handlers/attribute');
-
- var attributeValue = require('./tree-constructor-context-handlers/attribute-value');
-
- var comment = require('./tree-constructor-context-handlers/comment');
-
- var doctype = require('./tree-constructor-context-handlers/doctype');
-
- var doctypeAttributes = require('./tree-constructor-context-handlers/doctype-attributes');
-
- var doctypeAttribute = require('./tree-constructor-context-handlers/doctype-attribute');
-
- var scriptTag = require('./tree-constructor-context-handlers/script-tag');
-
- var styleTag = require('./tree-constructor-context-handlers/style-tag');
-
- var _require = require('./constants/tree-constructor-contexts'),
- TAG_CONTENT_CONTEXT = _require.TAG_CONTENT_CONTEXT,
- TAG_CONTEXT = _require.TAG_CONTEXT,
- TAG_NAME_CONTEXT = _require.TAG_NAME_CONTEXT,
- ATTRIBUTES_CONTEXT = _require.ATTRIBUTES_CONTEXT,
- ATTRIBUTE_CONTEXT = _require.ATTRIBUTE_CONTEXT,
- ATTRIBUTE_VALUE_CONTEXT = _require.ATTRIBUTE_VALUE_CONTEXT,
- COMMENT_CONTEXT = _require.COMMENT_CONTEXT,
- DOCTYPE_CONTEXT = _require.DOCTYPE_CONTEXT,
- DOCTYPE_ATTRIBUTES_CONTEXT = _require.DOCTYPE_ATTRIBUTES_CONTEXT,
- DOCTYPE_ATTRIBUTE_CONTEXT = _require.DOCTYPE_ATTRIBUTE_CONTEXT,
- SCRIPT_TAG_CONTEXT = _require.SCRIPT_TAG_CONTEXT,
- STYLE_TAG_CONTEXT = _require.STYLE_TAG_CONTEXT;
-
- var _require2 = require('./constants/ast-nodes'),
- NODE_DOCUMENT = _require2.NODE_DOCUMENT;
-
- var contextsMap = (_contextsMap = {}, _defineProperty(_contextsMap, TAG_CONTENT_CONTEXT, tagContent), _defineProperty(_contextsMap, TAG_CONTEXT, tag), _defineProperty(_contextsMap, TAG_NAME_CONTEXT, tagName), _defineProperty(_contextsMap, ATTRIBUTES_CONTEXT, attributes), _defineProperty(_contextsMap, ATTRIBUTE_CONTEXT, attribute), _defineProperty(_contextsMap, ATTRIBUTE_VALUE_CONTEXT, attributeValue), _defineProperty(_contextsMap, COMMENT_CONTEXT, comment), _defineProperty(_contextsMap, DOCTYPE_CONTEXT, doctype), _defineProperty(_contextsMap, DOCTYPE_ATTRIBUTES_CONTEXT, doctypeAttributes), _defineProperty(_contextsMap, DOCTYPE_ATTRIBUTE_CONTEXT, doctypeAttribute), _defineProperty(_contextsMap, SCRIPT_TAG_CONTEXT, scriptTag), _defineProperty(_contextsMap, STYLE_TAG_CONTEXT, styleTag), _contextsMap);
-
- function processTokens(tokens, state, positionOffset) {
- var tokenIndex = state.caretPosition - positionOffset;
-
- while (tokenIndex < tokens.length) {
- var token = tokens[tokenIndex];
- var contextHandler = contextsMap[state.currentContext.type];
- state = contextHandler(token, state);
- tokenIndex = state.caretPosition - positionOffset;
- }
-
- return state;
- }
-
- module.exports = function constructTree() {
- var tokens = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- var existingState = arguments.length > 1 ? arguments[1] : undefined;
- var parseOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
- var state = existingState;
-
- if (existingState === undefined) {
- var rootContext = {
- type: TAG_CONTENT_CONTEXT,
- parentRef: undefined,
- content: []
- };
- var rootNode = {
- nodeType: NODE_DOCUMENT,
- parentRef: undefined,
- content: {}
- };
- state = {
- caretPosition: 0,
- currentContext: rootContext,
- currentNode: rootNode,
- rootNode: rootNode,
- parseOptions: parseOptions
- };
- }
-
- var positionOffset = state.caretPosition;
- processTokens(tokens, state, positionOffset);
- return {
- state: state,
- ast: state.rootNode
- };
- };
|