code: 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
      };
    }
docs: filter attrs? text-block