code: function(mode, state, tabSize) {
        var stream = new StringStream(this.text, tabSize), st = this.styles || (this.styles = []);
        var pos = st.length = 0;
        if (this.text == "" && mode.blankLine) mode.blankLine(state);
        while (!stream.eol()) {
          var style = mode.token(stream, state), substr = stream.current();
          stream.start = stream.pos;
          if (pos && st[pos-1] == style) {
            st[pos-2] += substr;
          } else if (substr) {
            st[pos++] = substr; st[pos++] = style;
          }
          // Give up when line is ridiculously long
          if (stream.pos > 5000) {
            st[pos++] = this.text.slice(stream.pos); st[pos++] = null;
            break;
          }
        }
      }
docs: Run the given mode's parser over a line, update the styles array, which contains alternating fragments of text and CSS classes.