版博士V2.0程序
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. "use strict";
  2. var _contextsMap;
  3. 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; }
  4. var tag = require('./tree-constructor-context-handlers/tag');
  5. var tagContent = require('./tree-constructor-context-handlers/tag-content');
  6. var tagName = require('./tree-constructor-context-handlers/tag-name');
  7. var attributes = require('./tree-constructor-context-handlers/attributes');
  8. var attribute = require('./tree-constructor-context-handlers/attribute');
  9. var attributeValue = require('./tree-constructor-context-handlers/attribute-value');
  10. var comment = require('./tree-constructor-context-handlers/comment');
  11. var doctype = require('./tree-constructor-context-handlers/doctype');
  12. var doctypeAttributes = require('./tree-constructor-context-handlers/doctype-attributes');
  13. var doctypeAttribute = require('./tree-constructor-context-handlers/doctype-attribute');
  14. var scriptTag = require('./tree-constructor-context-handlers/script-tag');
  15. var styleTag = require('./tree-constructor-context-handlers/style-tag');
  16. var _require = require('./constants/tree-constructor-contexts'),
  17. TAG_CONTENT_CONTEXT = _require.TAG_CONTENT_CONTEXT,
  18. TAG_CONTEXT = _require.TAG_CONTEXT,
  19. TAG_NAME_CONTEXT = _require.TAG_NAME_CONTEXT,
  20. ATTRIBUTES_CONTEXT = _require.ATTRIBUTES_CONTEXT,
  21. ATTRIBUTE_CONTEXT = _require.ATTRIBUTE_CONTEXT,
  22. ATTRIBUTE_VALUE_CONTEXT = _require.ATTRIBUTE_VALUE_CONTEXT,
  23. COMMENT_CONTEXT = _require.COMMENT_CONTEXT,
  24. DOCTYPE_CONTEXT = _require.DOCTYPE_CONTEXT,
  25. DOCTYPE_ATTRIBUTES_CONTEXT = _require.DOCTYPE_ATTRIBUTES_CONTEXT,
  26. DOCTYPE_ATTRIBUTE_CONTEXT = _require.DOCTYPE_ATTRIBUTE_CONTEXT,
  27. SCRIPT_TAG_CONTEXT = _require.SCRIPT_TAG_CONTEXT,
  28. STYLE_TAG_CONTEXT = _require.STYLE_TAG_CONTEXT;
  29. var _require2 = require('./constants/ast-nodes'),
  30. NODE_DOCUMENT = _require2.NODE_DOCUMENT;
  31. 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);
  32. function processTokens(tokens, state, positionOffset) {
  33. var tokenIndex = state.caretPosition - positionOffset;
  34. while (tokenIndex < tokens.length) {
  35. var token = tokens[tokenIndex];
  36. var contextHandler = contextsMap[state.currentContext.type];
  37. state = contextHandler(token, state);
  38. tokenIndex = state.caretPosition - positionOffset;
  39. }
  40. return state;
  41. }
  42. module.exports = function constructTree() {
  43. var tokens = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  44. var existingState = arguments.length > 1 ? arguments[1] : undefined;
  45. var parseOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  46. var state = existingState;
  47. if (existingState === undefined) {
  48. var rootContext = {
  49. type: TAG_CONTENT_CONTEXT,
  50. parentRef: undefined,
  51. content: []
  52. };
  53. var rootNode = {
  54. nodeType: NODE_DOCUMENT,
  55. parentRef: undefined,
  56. content: {}
  57. };
  58. state = {
  59. caretPosition: 0,
  60. currentContext: rootContext,
  61. currentNode: rootNode,
  62. rootNode: rootNode,
  63. parseOptions: parseOptions
  64. };
  65. }
  66. var positionOffset = state.caretPosition;
  67. processTokens(tokens, state, positionOffset);
  68. return {
  69. state: state,
  70. ast: state.rootNode
  71. };
  72. };