docs: function(options){
      var tags = [];
      var lineno = this.peek().loc.start.line;
      var nextTok = this.peek();
      loop:
        while (true) {
          switch (nextTok.type) {
            case 'text':
              var tok = this.advance();
              tags.push({
                type: 'Text',
                val: tok.val,
                line: tok.loc.start.line,
                column: tok.loc.start.column,
                filename: this.filename
              });
              break;
            case 'interpolated-code':
              var tok = this.advance();
              tags.push({
                type: 'Code',
                val: tok.val,
                buffer: tok.buffer,
                mustEscape: tok.mustEscape !== false,
                isInline: true,
                line: tok.loc.start.line,
                column: tok.loc.start.column,
                filename: this.filename
              });
              break;
            case 'newline':
              if (!options || !options.block) break loop;
              var tok = this.advance();
              var nextType = this.peek().type;
              if (nextType === 'text' || nextType === 'interpolated-code') {
                tags.push({
                  type: 'Text',
                  val: '\n',
                  line: tok.loc.start.line,
                  column: tok.loc.start.column,
                  filename: this.filename
                });
              }
              break;
            case 'start-pug-interpolation':
              this.advance();
              tags.push(this.parseExpr());
              this.expect('end-pug-interpolation');
              break;
            default:
              var pluginResult = this.runPlugin('textTokens', nextTok, tags);
              if (pluginResult) break;
              break loop;
          }
          nextTok = this.peek();
        }
      if (tags.length === 1) return tags[0];
      else return this.initBlock(lineno, tags);
    }