|
- "use strict";
-
- var _require = require('../helpers'),
- isWhitespace = _require.isWhitespace,
- calculateTokenCharactersRange = _require.calculateTokenCharactersRange;
-
- var _require2 = require('../constants/tokenizer-contexts'),
- ATTRIBUTES_CONTEXT = _require2.ATTRIBUTES_CONTEXT,
- OPEN_TAG_END_CONTEXT = _require2.OPEN_TAG_END_CONTEXT,
- ATTRIBUTE_VALUE_CONTEXT = _require2.ATTRIBUTE_VALUE_CONTEXT,
- ATTRIBUTE_KEY_CONTEXT = _require2.ATTRIBUTE_KEY_CONTEXT;
-
- var _require3 = require('../constants/token-types'),
- TOKEN_ATTRIBUTE_ASSIGNMENT = _require3.TOKEN_ATTRIBUTE_ASSIGNMENT;
-
- function tagEnd(state) {
- var tagName = state.contextParams[ATTRIBUTES_CONTEXT].tagName;
- state.accumulatedContent = '';
- state.decisionBuffer = '';
- state.currentContext = OPEN_TAG_END_CONTEXT;
- state.contextParams[OPEN_TAG_END_CONTEXT] = {
- tagName: tagName
- };
- state.contextParams[ATTRIBUTES_CONTEXT] = undefined;
- }
-
- function noneWhitespace(state) {
- state.accumulatedContent = state.decisionBuffer;
- state.decisionBuffer = '';
- state.currentContext = ATTRIBUTE_KEY_CONTEXT;
- state.caretPosition++;
- }
-
- function equal(state, tokens) {
- var range = calculateTokenCharactersRange(state, {
- keepBuffer: true
- });
- tokens.push({
- type: TOKEN_ATTRIBUTE_ASSIGNMENT,
- content: state.decisionBuffer,
- startPosition: range.startPosition,
- endPosition: range.endPosition
- });
- state.accumulatedContent = '';
- state.decisionBuffer = '';
- state.currentContext = ATTRIBUTE_VALUE_CONTEXT;
- state.caretPosition++;
- }
-
- function parseSyntax(chars, state, tokens, next, nextNoWhiteChar) {
- if (chars === '>' || chars === '/' && nextNoWhiteChar === '>') {
- return tagEnd(state, tokens);
- }
-
- if (chars === '=') {
- return equal(state, tokens);
- }
-
- if (!isWhitespace(chars)) {
- return noneWhitespace(state, tokens);
- }
-
- state.decisionBuffer = '';
- state.caretPosition++;
- }
-
- module.exports = {
- parseSyntax: parseSyntax
- };
|