|
- const { calculateTokenCharactersRange } = require('../helpers')
-
- const {
- TOKEN_ATTRIBUTE_VALUE,
- TOKEN_ATTRIBUTE_VALUE_WRAPPER_END
- } = require('../constants/token-types')
- const {
- ATTRIBUTES_CONTEXT,
- ATTRIBUTE_VALUE_WRAPPED_CONTEXT
- } = require('../constants/tokenizer-contexts')
-
- function wrapper (state, tokens) {
- const range = calculateTokenCharactersRange(state, { keepBuffer: false })
- const endWrapperPosition = range.endPosition + 1
-
- tokens.push(
- {
- type: TOKEN_ATTRIBUTE_VALUE,
- content: state.accumulatedContent,
- startPosition: range.startPosition,
- endPosition: range.endPosition
- },
- {
- type: TOKEN_ATTRIBUTE_VALUE_WRAPPER_END,
- content: state.decisionBuffer,
- startPosition: endWrapperPosition,
- endPosition: endWrapperPosition
- }
- )
-
- state.accumulatedContent = ''
- state.decisionBuffer = ''
- state.currentContext = ATTRIBUTES_CONTEXT
- state.caretPosition++
-
- state.contextParams[ATTRIBUTE_VALUE_WRAPPED_CONTEXT] = undefined
- }
-
- function parseSyntax (chars, state, tokens) {
- const wrapperChar = state.contextParams[ATTRIBUTE_VALUE_WRAPPED_CONTEXT].wrapper
-
- if (chars === wrapperChar) {
- return wrapper(state, tokens)
- }
-
- state.accumulatedContent += state.decisionBuffer
- state.decisionBuffer = ''
- state.caretPosition++
- }
-
- module.exports = {
- parseSyntax
- }
|