Lines Matching refs:state

28 function parse(src, state, options) {  argument
30 state = state || exports.defaultState();
36 parseChar(src[index], state);
43 return state;
51 var state = exports.defaultState();
53 if ((options.ignoreNesting || !state.isNesting(options)) && matches(src, delimiter, index)) {
62 parseChar(src[index], state);
76 function parseChar(character, state) { argument
83 state = state || exports.defaultState();
84 state.src += character;
85 var wasComment = state.isComment();
86 var lastChar = state.history ? state.history[0] : '';
89 if (state.regexpStart) {
91 state.stack.pop();
93 state.regexpStart = false;
95 switch (state.current()) {
98 state.stack.pop();
102 if (state.lastChar === '*' && character === '/') {
103 state.stack.pop();
107 if (character === '\'' && !state.escaped) {
108 state.stack.pop();
109 } else if (character === '\\' && !state.escaped) {
110 state.escaped = true;
112 state.escaped = false;
116 if (character === '"' && !state.escaped) {
117 state.stack.pop();
118 } else if (character === '\\' && !state.escaped) {
119 state.escaped = true;
121 state.escaped = false;
125 if (character === '`' && !state.escaped) {
126 state.stack.pop();
127 state.hasDollar = false;
128 } else if (character === '\\' && !state.escaped) {
129 state.escaped = true;
130 state.hasDollar = false;
131 } else if (character === '$' && !state.escaped) {
132 state.hasDollar = true;
133 } else if (character === '{' && state.hasDollar) {
134 state.stack.push(BRACKETS[character]);
136 state.escaped = false;
137 state.hasDollar = false;
141 if (character === '/' && !state.escaped) {
142 state.stack.pop();
143 } else if (character === '\\' && !state.escaped) {
144 state.escaped = true;
146 state.escaped = false;
151 state.stack.push(BRACKETS[character]);
153 if (state.current() !== character) {
158 state.stack.pop();
161 state.history = state.history.substr(1);
162 state.stack.push(TOKEN_TYPES.LINE_COMMENT);
165 state.history = state.history.substr(1);
166 state.stack.push(TOKEN_TYPES.BLOCK_COMMENT);
167 } else if (character === '/' && isRegexp(state.history)) {
168 state.stack.push(TOKEN_TYPES.REGEXP);
171 state.regexpStart = true;
173 state.stack.push(TOKEN_TYPES.SINGLE_QUOTE);
175 state.stack.push(TOKEN_TYPES.DOUBLE_QUOTE);
177 state.stack.push(TOKEN_TYPES.TEMPLATE_QUOTE);
181 if (!state.isComment() && !wasComment) {
182 state.history = character + state.history;
184 state.lastChar = character; // store last character for ending block comments
185 return state;