Passed
Push — master ( 3324e2...2ba76b )
by Ralf
13:44
created

Resources/Public/JavaScript/editormd/lib/codemirror/mode/jade/jade.js   F

Complexity

Total Complexity 131
Complexity/F 2.67

Size

Lines of Code 587
Function Count 49

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 131
eloc 387
c 0
b 0
f 0
dl 0
loc 587
rs 2
mnd 82
bc 82
fnc 49
bpm 1.6734
cpm 2.6734
noi 58

44 Functions

Rating   Name   Duplication   Size   Complexity  
A jade.js ➔ indent 0 5 2
A jade.js ➔ doctype 0 5 2
A jade.js ➔ restOfLine 0 12 3
A jade.js ➔ className 0 5 2
A jade.js ➔ mixin 0 6 2
A jade.js ➔ whileStatement 0 6 2
A jade.js ➔ includeFiltered 0 6 2
A jade.js ➔ attrs 0 11 2
A jade.js ➔ attributesBlock 0 7 2
A jade.js ➔ yieldStatement 0 5 2
A jade.js ➔ comment 0 7 2
B jade.js ➔ State 0 36 6
A jade.js ➔ text 0 11 3
A jade.js ➔ extendsStatement 0 6 2
A jade.js ➔ include 0 6 2
A jade.js ➔ interpolationContinued 0 15 5
A jade.js ➔ fail 0 4 1
B jade.js ➔ javaScript 0 17 7
A jade.js ➔ copyState 0 3 1
A jade.js ➔ includeFilteredContinued 0 8 2
A jade.js ➔ filter 0 16 5
A jade.js ➔ tag 0 10 3
A jade.js ➔ prepend 0 6 2
A jade.js ➔ id 0 5 2
A jade.js ➔ call 0 14 4
A jade.js ➔ when 0 7 2
A jade.js ➔ code 0 6 2
A jade.js ➔ conditional 0 6 2
B jade.js ➔ innerMode 0 20 7
A jade.js ➔ setInnerMode 0 13 3
A jade.js ➔ interpolation 0 7 2
B jade.js ➔ javaScriptArguments 0 20 6
A jade.js ➔ block 0 6 2
A jade.js ➔ defaultStatement 0 5 2
A jade.js ➔ startState 0 3 1
A jade.js ➔ append 0 6 2
A jade.js ➔ dot 0 12 4
B jade.js ➔ eachContinued 0 14 6
C jade.js ➔ attrsContinued 0 43 11
A jade.js ➔ callArguments 0 10 3
B jade.js ➔ nextToken 0 44 2
A jade.js ➔ caseStatement 0 6 2
A jade.js ➔ colon 0 5 2
A jade.js ➔ each 0 6 2

How to fix   Complexity   

Complexity

Complex classes like Resources/Public/JavaScript/editormd/lib/codemirror/mode/jade/jade.js often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
// CodeMirror, copyright (c) by Marijn Haverbeke and others
2
// Distributed under an MIT license: http://codemirror.net/LICENSE
3
4
(function(mod) {
5
  if (typeof exports == "object" && typeof module == "object") // CommonJS
6
    mod(require("../../lib/codemirror"), require("../javascript/javascript"), require("../css/css"), require("../htmlmixed/htmlmixed"));
7
  else if (typeof define == "function" && define.amd) // AMD
0 ignored issues
show
Bug introduced by
The variable define seems to be never declared. If this is a global, consider adding a /** global: define */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
8
    define(["../../lib/codemirror", "../javascript/javascript", "../css/css", "../htmlmixed/htmlmixed"], mod);
9
  else // Plain browser env
10
    mod(CodeMirror);
0 ignored issues
show
Bug introduced by
The variable CodeMirror seems to be never declared. If this is a global, consider adding a /** global: CodeMirror */ comment.

This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed.

To learn more about declaring variables in Javascript, see the MDN.

Loading history...
11
})(function(CodeMirror) {
12
"use strict";
13
14
CodeMirror.defineMode('jade', function (config) {
15
  // token types
16
  var KEYWORD = 'keyword';
17
  var DOCTYPE = 'meta';
18
  var ID = 'builtin';
19
  var CLASS = 'qualifier';
20
21
  var ATTRS_NEST = {
22
    '{': '}',
23
    '(': ')',
24
    '[': ']'
25
  };
26
27
  var jsMode = CodeMirror.getMode(config, 'javascript');
28
29
  function State() {
30
    this.javaScriptLine = false;
31
    this.javaScriptLineExcludesColon = false;
32
33
    this.javaScriptArguments = false;
34
    this.javaScriptArgumentsDepth = 0;
35
36
    this.isInterpolating = false;
37
    this.interpolationNesting = 0;
38
39
    this.jsState = jsMode.startState();
40
41
    this.restOfLine = '';
42
43
    this.isIncludeFiltered = false;
44
    this.isEach = false;
45
46
    this.lastTag = '';
47
    this.scriptType = '';
48
49
    // Attributes Mode
50
    this.isAttrs = false;
51
    this.attrsNest = [];
52
    this.inAttributeName = true;
53
    this.attributeIsType = false;
54
    this.attrValue = '';
55
56
    // Indented Mode
57
    this.indentOf = Infinity;
58
    this.indentToken = '';
59
60
    this.innerMode = null;
61
    this.innerState = null;
62
63
    this.innerModeForLine = false;
64
  }
65
  /**
66
   * Safely copy a state
67
   *
68
   * @return {State}
69
   */
70
  State.prototype.copy = function () {
71
    var res = new State();
72
    res.javaScriptLine = this.javaScriptLine;
73
    res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon;
74
    res.javaScriptArguments = this.javaScriptArguments;
75
    res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth;
76
    res.isInterpolating = this.isInterpolating;
77
    res.interpolationNesting = this.intpolationNesting;
78
79
    res.jsState = CodeMirror.copyState(jsMode, this.jsState);
80
81
    res.innerMode = this.innerMode;
82
    if (this.innerMode && this.innerState) {
83
      res.innerState = CodeMirror.copyState(this.innerMode, this.innerState);
84
    }
85
86
    res.restOfLine = this.restOfLine;
87
88
    res.isIncludeFiltered = this.isIncludeFiltered;
89
    res.isEach = this.isEach;
90
    res.lastTag = this.lastTag;
91
    res.scriptType = this.scriptType;
92
    res.isAttrs = this.isAttrs;
93
    res.attrsNest = this.attrsNest.slice();
94
    res.inAttributeName = this.inAttributeName;
95
    res.attributeIsType = this.attributeIsType;
96
    res.attrValue = this.attrValue;
97
    res.indentOf = this.indentOf;
98
    res.indentToken = this.indentToken;
99
100
    res.innerModeForLine = this.innerModeForLine;
101
102
    return res;
103
  };
104
105
  function javaScript(stream, state) {
106
    if (stream.sol()) {
107
      // if javaScriptLine was set at end of line, ignore it
108
      state.javaScriptLine = false;
109
      state.javaScriptLineExcludesColon = false;
110
    }
111
    if (state.javaScriptLine) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if state.javaScriptLine is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
112
      if (state.javaScriptLineExcludesColon && stream.peek() === ':') {
113
        state.javaScriptLine = false;
114
        state.javaScriptLineExcludesColon = false;
115
        return;
0 ignored issues
show
Comprehensibility Best Practice introduced by
Are you sure this return statement is not missing an argument? If this is intended, consider adding an explicit undefined like return undefined;.
Loading history...
116
      }
117
      var tok = jsMode.token(stream, state.jsState);
118
      if (stream.eol()) state.javaScriptLine = false;
119
      return tok || true;
120
    }
121
  }
122
  function javaScriptArguments(stream, state) {
123
    if (state.javaScriptArguments) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if state.javaScriptArguments is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
124
      if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') {
125
        state.javaScriptArguments = false;
126
        return;
0 ignored issues
show
Comprehensibility Best Practice introduced by
Are you sure this return statement is not missing an argument? If this is intended, consider adding an explicit undefined like return undefined;.
Loading history...
127
      }
128
      if (stream.peek() === '(') {
129
        state.javaScriptArgumentsDepth++;
130
      } else if (stream.peek() === ')') {
131
        state.javaScriptArgumentsDepth--;
132
      }
133
      if (state.javaScriptArgumentsDepth === 0) {
134
        state.javaScriptArguments = false;
135
        return;
0 ignored issues
show
Comprehensibility Best Practice introduced by
Are you sure this return statement is not missing an argument? If this is intended, consider adding an explicit undefined like return undefined;.
Loading history...
136
      }
137
138
      var tok = jsMode.token(stream, state.jsState);
139
      return tok || true;
140
    }
141
  }
142
143
  function yieldStatement(stream) {
144
    if (stream.match(/^yield\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^yield\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
145
        return 'keyword';
146
    }
147
  }
148
149
  function doctype(stream) {
150
    if (stream.match(/^(?:doctype) *([^\n]+)?/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^(?:doctype) *([^\n]+)?) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
151
        return DOCTYPE;
152
    }
153
  }
154
155
  function interpolation(stream, state) {
156
    if (stream.match('#{')) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match("#{") is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
157
      state.isInterpolating = true;
158
      state.interpolationNesting = 0;
159
      return 'punctuation';
160
    }
161
  }
162
163
  function interpolationContinued(stream, state) {
164
    if (state.isInterpolating) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if state.isInterpolating is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
165
      if (stream.peek() === '}') {
166
        state.interpolationNesting--;
167
        if (state.interpolationNesting < 0) {
168
          stream.next();
169
          state.isInterpolating = false;
170
          return 'puncutation';
171
        }
172
      } else if (stream.peek() === '{') {
173
        state.interpolationNesting++;
174
      }
175
      return jsMode.token(stream, state.jsState) || true;
176
    }
177
  }
178
179
  function caseStatement(stream, state) {
180
    if (stream.match(/^case\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^case\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
181
      state.javaScriptLine = true;
182
      return KEYWORD;
183
    }
184
  }
185
186
  function when(stream, state) {
187
    if (stream.match(/^when\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^when\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
188
      state.javaScriptLine = true;
189
      state.javaScriptLineExcludesColon = true;
190
      return KEYWORD;
191
    }
192
  }
193
194
  function defaultStatement(stream) {
195
    if (stream.match(/^default\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^default\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
196
      return KEYWORD;
197
    }
198
  }
199
200
  function extendsStatement(stream, state) {
201
    if (stream.match(/^extends?\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^extends?\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
202
      state.restOfLine = 'string';
203
      return KEYWORD;
204
    }
205
  }
206
207
  function append(stream, state) {
208
    if (stream.match(/^append\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^append\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
209
      state.restOfLine = 'variable';
210
      return KEYWORD;
211
    }
212
  }
213
  function prepend(stream, state) {
214
    if (stream.match(/^prepend\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^prepend\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
215
      state.restOfLine = 'variable';
216
      return KEYWORD;
217
    }
218
  }
219
  function block(stream, state) {
220
    if (stream.match(/^block\b *(?:(prepend|append)\b)?/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^block\b *(?:(prepend|append)\b)?) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
221
      state.restOfLine = 'variable';
222
      return KEYWORD;
223
    }
224
  }
225
226
  function include(stream, state) {
227
    if (stream.match(/^include\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^include\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
228
      state.restOfLine = 'string';
229
      return KEYWORD;
230
    }
231
  }
232
233
  function includeFiltered(stream, state) {
234
    if (stream.match(/^include:([a-zA-Z0-9\-]+)/, false) && stream.match('include')) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^include:([...stream.match("include") is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
235
      state.isIncludeFiltered = true;
236
      return KEYWORD;
237
    }
238
  }
239
240
  function includeFilteredContinued(stream, state) {
241
    if (state.isIncludeFiltered) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if state.isIncludeFiltered is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
242
      var tok = filter(stream, state);
243
      state.isIncludeFiltered = false;
244
      state.restOfLine = 'string';
245
      return tok;
246
    }
247
  }
248
249
  function mixin(stream, state) {
250
    if (stream.match(/^mixin\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^mixin\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
251
      state.javaScriptLine = true;
252
      return KEYWORD;
253
    }
254
  }
255
256
  function call(stream, state) {
257
    if (stream.match(/^\+([-\w]+)/)) {
258
      if (!stream.match(/^\( *[-\w]+ *=/, false)) {
259
        state.javaScriptArguments = true;
260
        state.javaScriptArgumentsDepth = 0;
261
      }
262
      return 'variable';
263
    }
264
    if (stream.match(/^\+#{/, false)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^\+#{, false) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
265
      stream.next();
266
      state.mixinCallAfter = true;
267
      return interpolation(stream, state);
268
    }
269
  }
270
  function callArguments(stream, state) {
271
    if (state.mixinCallAfter) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if state.mixinCallAfter is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
272
      state.mixinCallAfter = false;
273
      if (!stream.match(/^\( *[-\w]+ *=/, false)) {
274
        state.javaScriptArguments = true;
275
        state.javaScriptArgumentsDepth = 0;
276
      }
277
      return true;
278
    }
279
  }
280
281
  function conditional(stream, state) {
282
    if (stream.match(/^(if|unless|else if|else)\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^(if|unless|else if|else)\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
283
      state.javaScriptLine = true;
284
      return KEYWORD;
285
    }
286
  }
287
288
  function each(stream, state) {
289
    if (stream.match(/^(- *)?(each|for)\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^(- *)?(each|for)\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
290
      state.isEach = true;
291
      return KEYWORD;
292
    }
293
  }
294
  function eachContinued(stream, state) {
295
    if (state.isEach) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if state.isEach is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
296
      if (stream.match(/^ in\b/)) {
297
        state.javaScriptLine = true;
298
        state.isEach = false;
299
        return KEYWORD;
300
      } else if (stream.sol() || stream.eol()) {
301
        state.isEach = false;
0 ignored issues
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
302
      } else if (stream.next()) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.next() is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
303
        while (!stream.match(/^ in\b/, false) && stream.next());
0 ignored issues
show
introduced by
The while loop does not have a body. Maybe you have misplaced a semicolon. If you do wish to have a loop without a body, use an empty body {}.
Loading history...
304
        return 'variable';
305
      }
306
    }
307
  }
308
309
  function whileStatement(stream, state) {
310
    if (stream.match(/^while\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^while\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
311
      state.javaScriptLine = true;
312
      return KEYWORD;
313
    }
314
  }
315
316
  function tag(stream, state) {
317
    var captures;
318
    if (captures = stream.match(/^(\w(?:[-:\w]*\w)?)\/?/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if captures = stream.match(^(\w(?:[-:\w]*\w)?)\/?) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
319
      state.lastTag = captures[1].toLowerCase();
320
      if (state.lastTag === 'script') {
321
        state.scriptType = 'application/javascript';
322
      }
323
      return 'tag';
324
    }
325
  }
326
327
  function filter(stream, state) {
328
    if (stream.match(/^:([\w\-]+)/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^:([\w\-]+)) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
329
      var innerMode;
330
      if (config && config.innerModes) {
331
        innerMode = config.innerModes(stream.current().substring(1));
332
      }
333
      if (!innerMode) {
334
        innerMode = stream.current().substring(1);
335
      }
336
      if (typeof innerMode === 'string') {
337
        innerMode = CodeMirror.getMode(config, innerMode);
338
      }
339
      setInnerMode(stream, state, innerMode);
340
      return 'atom';
341
    }
342
  }
343
344
  function code(stream, state) {
345
    if (stream.match(/^(!?=|-)/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^(!?=|-)) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
346
      state.javaScriptLine = true;
347
      return 'punctuation';
348
    }
349
  }
350
351
  function id(stream) {
352
    if (stream.match(/^#([\w-]+)/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^#([\w-]+)) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
353
      return ID;
354
    }
355
  }
356
357
  function className(stream) {
358
    if (stream.match(/^\.([\w-]+)/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^\.([\w-]+)) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
359
      return CLASS;
360
    }
361
  }
362
363
  function attrs(stream, state) {
364
    if (stream.peek() == '(') {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.peek() == "(" is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
365
      stream.next();
366
      state.isAttrs = true;
367
      state.attrsNest = [];
368
      state.inAttributeName = true;
369
      state.attrValue = '';
370
      state.attributeIsType = false;
371
      return 'punctuation';
372
    }
373
  }
374
375
  function attrsContinued(stream, state) {
376
    if (state.isAttrs) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if state.isAttrs is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
377
      if (ATTRS_NEST[stream.peek()]) {
378
        state.attrsNest.push(ATTRS_NEST[stream.peek()]);
379
      }
380
      if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) {
381
        state.attrsNest.pop();
382
      } else  if (stream.eat(')')) {
383
        state.isAttrs = false;
384
        return 'punctuation';
385
      }
386
      if (state.inAttributeName && stream.match(/^[^=,\)!]+/)) {
387
        if (stream.peek() === '=' || stream.peek() === '!') {
388
          state.inAttributeName = false;
389
          state.jsState = jsMode.startState();
390
          if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') {
391
            state.attributeIsType = true;
392
          } else {
393
            state.attributeIsType = false;
394
          }
395
        }
396
        return 'attribute';
397
      }
398
399
      var tok = jsMode.token(stream, state.jsState);
400
      if (state.attributeIsType && tok === 'string') {
401
        state.scriptType = stream.current().toString();
402
      }
403
      if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) {
404
        try {
405
          Function('', 'var x ' + state.attrValue.replace(/,\s*$/, '').replace(/^!/, ''));
0 ignored issues
show
Performance Best Practice introduced by
Using new Function() to create a function is slow and difficult to debug. Such functions do not create a closure. Consider using another way to define your function.
Loading history...
406
          state.inAttributeName = true;
407
          state.attrValue = '';
408
          stream.backUp(stream.current().length);
409
          return attrsContinued(stream, state);
410
        } catch (ex) {
0 ignored issues
show
Coding Style Comprehensibility Best Practice introduced by
Empty catch clauses should be used with caution; consider adding a comment why this is needed.
Loading history...
411
          //not the end of an attribute
412
        }
413
      }
414
      state.attrValue += stream.current();
415
      return tok || true;
416
    }
417
  }
418
419
  function attributesBlock(stream, state) {
420
    if (stream.match(/^&attributes\b/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^&attributes\b) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
421
      state.javaScriptArguments = true;
422
      state.javaScriptArgumentsDepth = 0;
423
      return 'keyword';
424
    }
425
  }
426
427
  function indent(stream) {
428
    if (stream.sol() && stream.eatSpace()) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.sol() && stream.eatSpace() is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
429
      return 'indent';
430
    }
431
  }
432
433
  function comment(stream, state) {
434
    if (stream.match(/^ *\/\/(-)?([^\n]*)/)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^ *\/\/(-)?([^\n]*)) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
435
      state.indentOf = stream.indentation();
436
      state.indentToken = 'comment';
437
      return 'comment';
438
    }
439
  }
440
441
  function colon(stream) {
442
    if (stream.match(/^: */)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^: *) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
443
      return 'colon';
444
    }
445
  }
446
447
  function text(stream, state) {
448
    if (stream.match(/^(?:\| ?| )([^\n]+)/)) {
449
      return 'string';
450
    }
451
    if (stream.match(/^(<[^\n]*)/, false)) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.match(^(<[^\n]*), false) is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
452
      // html string
453
      setInnerMode(stream, state, 'htmlmixed');
454
      state.innerModeForLine = true;
455
      return innerMode(stream, state, true);
456
    }
457
  }
458
459
  function dot(stream, state) {
460
    if (stream.eat('.')) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.eat(".") is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
461
      var innerMode = null;
462
      if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) {
463
        innerMode = state.scriptType.toLowerCase().replace(/"|'/g, '');
464
      } else if (state.lastTag === 'style') {
465
        innerMode = 'css';
466
      }
467
      setInnerMode(stream, state, innerMode);
468
      return 'dot';
469
    }
470
  }
471
472
  function fail(stream) {
473
    stream.next();
474
    return null;
475
  }
476
477
478
  function setInnerMode(stream, state, mode) {
479
    mode = CodeMirror.mimeModes[mode] || mode;
480
    mode = config.innerModes ? config.innerModes(mode) || mode : mode;
481
    mode = CodeMirror.mimeModes[mode] || mode;
482
    mode = CodeMirror.getMode(config, mode);
483
    state.indentOf = stream.indentation();
484
485
    if (mode && mode.name !== 'null') {
486
      state.innerMode = mode;
487
    } else {
488
      state.indentToken = 'string';
489
    }
490
  }
491
  function innerMode(stream, state, force) {
492
    if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) {
493
      if (state.innerMode) {
494
        if (!state.innerState) {
495
          state.innerState = state.innerMode.startState ? state.innerMode.startState(stream.indentation()) : {};
496
        }
497
        return stream.hideFirstChars(state.indentOf + 2, function () {
498
          return state.innerMode.token(stream, state.innerState) || true;
499
        });
500
      } else {
0 ignored issues
show
Comprehensibility introduced by
else is not necessary here since all if branches return, consider removing it to reduce nesting and make code more readable.
Loading history...
501
        stream.skipToEnd();
502
        return state.indentToken;
503
      }
504
    } else if (stream.sol()) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if stream.sol() is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
505
      state.indentOf = Infinity;
506
      state.indentToken = null;
507
      state.innerMode = null;
508
      state.innerState = null;
0 ignored issues
show
Best Practice introduced by
There is no return statement in this branch, but you do return something in other branches. Did you maybe miss it? If you do not want to return anything, consider adding return undefined; explicitly.
Loading history...
509
    }
510
  }
511
  function restOfLine(stream, state) {
512
    if (stream.sol()) {
513
      // if restOfLine was set at end of line, ignore it
514
      state.restOfLine = '';
515
    }
516
    if (state.restOfLine) {
0 ignored issues
show
Complexity Best Practice introduced by
There is no return statement if state.restOfLine is false. Are you sure this is correct? If so, consider adding return; explicitly.

This check looks for functions where a return statement is found in some execution paths, but not in all.

Consider this little piece of code

function isBig(a) {
    if (a > 5000) {
        return "yes";
    }
}

console.log(isBig(5001)); //returns yes
console.log(isBig(42)); //returns undefined

The function isBig will only return a specific value when its parameter is bigger than 5000. In any other case, it will implicitly return undefined.

This behaviour may not be what you had intended. In any case, you can add a return undefined to the other execution path to make the return value explicit.

Loading history...
517
      stream.skipToEnd();
518
      var tok = state.restOfLine;
519
      state.restOfLine = '';
520
      return tok;
521
    }
522
  }
523
524
525
  function startState() {
526
    return new State();
527
  }
528
  function copyState(state) {
529
    return state.copy();
530
  }
531
  /**
532
   * Get the next token in the stream
533
   *
534
   * @param {Stream} stream
535
   * @param {State} state
536
   */
537
  function nextToken(stream, state) {
538
    var tok = innerMode(stream, state)
539
      || restOfLine(stream, state)
540
      || interpolationContinued(stream, state)
541
      || includeFilteredContinued(stream, state)
542
      || eachContinued(stream, state)
543
      || attrsContinued(stream, state)
544
      || javaScript(stream, state)
545
      || javaScriptArguments(stream, state)
546
      || callArguments(stream, state)
547
548
      || yieldStatement(stream, state)
0 ignored issues
show
Bug introduced by
The call to yieldStatement seems to have too many arguments starting with state.
Loading history...
549
      || doctype(stream, state)
0 ignored issues
show
Bug introduced by
The call to doctype seems to have too many arguments starting with state.
Loading history...
550
      || interpolation(stream, state)
551
      || caseStatement(stream, state)
552
      || when(stream, state)
553
      || defaultStatement(stream, state)
0 ignored issues
show
Bug introduced by
The call to defaultStatement seems to have too many arguments starting with state.
Loading history...
554
      || extendsStatement(stream, state)
555
      || append(stream, state)
556
      || prepend(stream, state)
557
      || block(stream, state)
558
      || include(stream, state)
559
      || includeFiltered(stream, state)
560
      || mixin(stream, state)
561
      || call(stream, state)
562
      || conditional(stream, state)
563
      || each(stream, state)
564
      || whileStatement(stream, state)
565
      || tag(stream, state)
566
      || filter(stream, state)
567
      || code(stream, state)
568
      || id(stream, state)
0 ignored issues
show
Bug introduced by
The call to id seems to have too many arguments starting with state.
Loading history...
569
      || className(stream, state)
0 ignored issues
show
Bug introduced by
The call to className seems to have too many arguments starting with state.
Loading history...
570
      || attrs(stream, state)
571
      || attributesBlock(stream, state)
572
      || indent(stream, state)
0 ignored issues
show
Bug introduced by
The call to indent seems to have too many arguments starting with state.
Loading history...
573
      || text(stream, state)
574
      || comment(stream, state)
575
      || colon(stream, state)
0 ignored issues
show
Bug introduced by
The call to colon seems to have too many arguments starting with state.
Loading history...
576
      || dot(stream, state)
577
      || fail(stream, state);
0 ignored issues
show
Bug introduced by
The call to fail seems to have too many arguments starting with state.
Loading history...
578
579
    return tok === true ? null : tok;
580
  }
581
  return {
582
    startState: startState,
583
    copyState: copyState,
584
    token: nextToken
585
  };
586
});
587
588
CodeMirror.defineMIME('text/x-jade', 'jade');
589
590
});
591