|
- "use strict";
-
- var _require = require('../constants/token-types'),
- TOKEN_OPEN_TAG_END = _require.TOKEN_OPEN_TAG_END,
- TOKEN_OPEN_TAG_END_SCRIPT = _require.TOKEN_OPEN_TAG_END_SCRIPT,
- TOKEN_OPEN_TAG_END_STYLE = _require.TOKEN_OPEN_TAG_END_STYLE,
- TOKEN_ATTRIBUTE_KEY = _require.TOKEN_ATTRIBUTE_KEY,
- TOKEN_ATTRIBUTE_ASSIGNMENT = _require.TOKEN_ATTRIBUTE_ASSIGNMENT,
- TOKEN_ATTRIBUTE_VALUE = _require.TOKEN_ATTRIBUTE_VALUE,
- TOKEN_ATTRIBUTE_VALUE_WRAPPER_START = _require.TOKEN_ATTRIBUTE_VALUE_WRAPPER_START,
- TOKEN_ATTRIBUTE_VALUE_WRAPPER_END = _require.TOKEN_ATTRIBUTE_VALUE_WRAPPER_END;
-
- function getLastAttribute(state) {
- var attributes = state.currentNode.content.attributes;
- return attributes[attributes.length - 1];
- }
-
- function handleValueEnd(state) {
- state.currentContext = state.currentContext.parentRef;
- return state;
- }
-
- function handleAttributeValue(state, token) {
- var attribute = getLastAttribute(state);
- attribute.value = token;
- state.caretPosition++;
- return state;
- }
-
- function handleAttributeValueWrapperStart(state, token) {
- var attribute = getLastAttribute(state);
- attribute.startWrapper = token;
- state.caretPosition++;
- return state;
- }
-
- function handleAttributeValueWrapperEnd(state, token) {
- var attribute = getLastAttribute(state);
- attribute.endWrapper = token;
- state.caretPosition++;
- return state;
- }
-
- module.exports = function attributeValue(token, state) {
- var VALUE_END_TOKENS = [TOKEN_OPEN_TAG_END, TOKEN_OPEN_TAG_END_SCRIPT, TOKEN_OPEN_TAG_END_STYLE, TOKEN_ATTRIBUTE_KEY, TOKEN_ATTRIBUTE_ASSIGNMENT];
-
- if (VALUE_END_TOKENS.indexOf(token.type) !== -1) {
- return handleValueEnd(state);
- }
-
- if (token.type === TOKEN_ATTRIBUTE_VALUE) {
- return handleAttributeValue(state, token);
- }
-
- if (token.type === TOKEN_ATTRIBUTE_VALUE_WRAPPER_START) {
- return handleAttributeValueWrapperStart(state, token);
- }
-
- if (token.type === TOKEN_ATTRIBUTE_VALUE_WRAPPER_END) {
- return handleAttributeValueWrapperEnd(state, token);
- }
-
- state.caretPosition++;
- return state;
- };
|