版博士V2.0程序
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

47 行
1.4 KiB

  1. "use strict";
  2. var _require = require('../constants/token-types'),
  3. TOKEN_ATTRIBUTE_KEY = _require.TOKEN_ATTRIBUTE_KEY,
  4. TOKEN_ATTRIBUTE_ASSIGNMENT = _require.TOKEN_ATTRIBUTE_ASSIGNMENT,
  5. TOKEN_OPEN_TAG_END = _require.TOKEN_OPEN_TAG_END,
  6. TOKEN_OPEN_TAG_END_SCRIPT = _require.TOKEN_OPEN_TAG_END_SCRIPT,
  7. TOKEN_OPEN_TAG_END_STYLE = _require.TOKEN_OPEN_TAG_END_STYLE;
  8. var _require2 = require('../constants/tree-constructor-contexts'),
  9. ATTRIBUTE_CONTEXT = _require2.ATTRIBUTE_CONTEXT;
  10. function handlerAttributeStart(state) {
  11. if (state.currentNode.content.attributes === undefined) {
  12. state.currentNode.content.attributes = [];
  13. } // new empty attribute
  14. state.currentNode.content.attributes.push({});
  15. state.currentContext = {
  16. parentRef: state.currentContext,
  17. type: ATTRIBUTE_CONTEXT
  18. };
  19. return state;
  20. }
  21. function handleOpenTagEnd(state) {
  22. state.currentContext = state.currentContext.parentRef;
  23. return state;
  24. }
  25. module.exports = function attributes(token, state) {
  26. var ATTRIBUTE_START_TOKENS = [TOKEN_ATTRIBUTE_KEY, TOKEN_ATTRIBUTE_ASSIGNMENT];
  27. if (ATTRIBUTE_START_TOKENS.indexOf(token.type) !== -1) {
  28. return handlerAttributeStart(state);
  29. }
  30. var ATTRIBUTES_END_TOKENS = [TOKEN_OPEN_TAG_END, TOKEN_OPEN_TAG_END_SCRIPT, TOKEN_OPEN_TAG_END_STYLE];
  31. if (ATTRIBUTES_END_TOKENS.indexOf(token.type) !== -1) {
  32. return handleOpenTagEnd(state);
  33. }
  34. state.caretPosition++;
  35. return state;
  36. };