版博士V2.0程序
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 

58 рядки
1.5 KiB

  1. "use strict";
  2. var _require = require('../helpers'),
  3. calculateTokenCharactersRange = _require.calculateTokenCharactersRange;
  4. var _require2 = require('../constants/token-types'),
  5. TOKEN_COMMENT_END = _require2.TOKEN_COMMENT_END,
  6. TOKEN_COMMENT_CONTENT = _require2.TOKEN_COMMENT_CONTENT;
  7. var _require3 = require('../constants/tokenizer-contexts'),
  8. DATA_CONTEXT = _require3.DATA_CONTEXT;
  9. var COMMENT_END = '-->';
  10. function commentEnd(state, tokens) {
  11. var contentRange = calculateTokenCharactersRange(state, {
  12. keepBuffer: false
  13. });
  14. var commentEndRange = {
  15. startPosition: contentRange.endPosition + 1,
  16. endPosition: contentRange.endPosition + COMMENT_END.length
  17. };
  18. tokens.push({
  19. type: TOKEN_COMMENT_CONTENT,
  20. content: state.accumulatedContent,
  21. startPosition: contentRange.startPosition,
  22. endPosition: contentRange.endPosition
  23. });
  24. tokens.push({
  25. type: TOKEN_COMMENT_END,
  26. content: state.decisionBuffer,
  27. startPosition: commentEndRange.startPosition,
  28. endPosition: commentEndRange.endPosition
  29. });
  30. state.accumulatedContent = '';
  31. state.decisionBuffer = '';
  32. state.currentContext = DATA_CONTEXT;
  33. state.caretPosition++;
  34. }
  35. function parseSyntax(chars, state, tokens) {
  36. if (chars === '-' || chars === '--') {
  37. state.caretPosition++;
  38. return;
  39. }
  40. if (chars === COMMENT_END) {
  41. return commentEnd(state, tokens);
  42. }
  43. state.accumulatedContent += state.decisionBuffer;
  44. state.decisionBuffer = '';
  45. state.caretPosition++;
  46. }
  47. module.exports = {
  48. parseSyntax: parseSyntax
  49. };