index.js
function() {
    var tok = this.expect('filter');
    var block,
      attrs = [];

    if (this.peek().type === 'start-attributes') {
      attrs = this.attrs();
    }

    if (this.peek().type === 'text') {
      var textToken = this.advance();
      block = this.initBlock(textToken.line, [
        {
          type: 'Text',
          val: textToken.val,
          line: textToken.line,
          filename: this.filename
        }
      ]);
    } else if (this.peek().type === 'filter') {
      block = this.initBlock(tok.line, [this.parseFilter()]);
    } else {
      block = this.parseTextBlock() || this.emptyBlock(tok.line);
    }

    return {
      type: 'Filter',
      name: tok.val,
      block: block,
      attrs: attrs,
      line: tok.line,
      filename: this.filename
    };
  }
function() {
    var tok = this.expect('filter');
    var block,
      attrs = [];

    if (this.peek().type === 'start-attributes') {
      attrs = this.attrs();
    }

    if (this.peek().type === 'text') {
      var textToken = this.advance();
      block = this.initBlock(textToken.line, [
        {
          type: 'Text',
          val: textToken.val,
          line: textToken.line,
          filename: this.filename
        }
      ]);
    } else if (this.peek().type === 'filter') {
      block = this.initBlock(tok.line, [this.parseFilter()]);
    } else {
      block = this.parseTextBlock() || this.emptyBlock(tok.line);
    }

    return {
      type: 'Filter',
      name: tok.val,
      block: block,
      attrs: attrs,
      line: tok.line,
      filename: this.filename
    };
  }
function ( ) { var tok = this . expect ( 'filter' ) ; var block , attrs = [ ] ; if ( this . peek ( ) . type === 'start-attributes' ) { attrs = this . attrs ( ) ; } if ( this . peek ( ) . type === 'text' ) { var textToken = this . advance ( ) ; block = this . initBlock ( textToken . line , [ { type : 'Text' , val : textToken . val , line : textToken . line , filename : this . filename } ] ) ; } else if ( this . peek ( ) . type === 'filter' ) { block = this . initBlock ( tok . line , [ this . parseFilter ( ) ] ) ; } else { block = this . parseTextBlock ( ) || this . emptyBlock ( tok . line ) ; } return { type : 'Filter' , name : tok . val , block : block , attrs : attrs , line : tok . line , filename : this . filename } ; }
filter attrs? text-block
filter attrs? text - block