index.js
function(){

    var tok, captures, increment;
    if (captures = /^\+(\s*)(([-\w]+)|(#\{))/.exec(this.input)) {
      // try to consume simple or interpolated call
      if (captures[3]) {
        // simple call
        increment = captures[0].length;
        this.consume(increment);
        tok = this.tok('call', captures[3]);
      } else {
        // interpolated call
        var match = this.bracketExpression(2 + captures[1].length);
        increment = match.end + 1;
        this.consume(increment);
        this.assertExpression(match.src);
        tok = this.tok('call', '#{'+match.src+'}');
      }

      this.incrementColumn(increment);

      tok.args = null;
      // Check for args (not attributes)
      if (captures = /^ *\(/.exec(this.input)) {
        var range = this.bracketExpression(captures[0].length - 1);
        if (!/^\s*[-\w]+ *=/.test(range.src)) { // not attributes
          this.incrementColumn(1);
          this.consume(range.end + 1);
          tok.args = range.src;
          this.assertExpression('[' + tok.args + ']');
          for (var i = 0; i <= tok.args.length; i++) {
            if (tok.args[i] === '\n') {
              this.incrementLine(1);
            } else {
              this.incrementColumn(1);
            }
          }
        }
      }
      this.tokens.push(tok);
      return true;
    }
  }
function(){

    var tok, captures, increment;
    if (captures = /^\+(\s*)(([-\w]+)|(#\{))/.exec(this.input)) {
      // try to consume simple or interpolated call
      if (captures[3]) {
        // simple call
        increment = captures[0].length;
        this.consume(increment);
        tok = this.tok('call', captures[3]);
      } else {
        // interpolated call
        var match = this.bracketExpression(2 + captures[1].length);
        increment = match.end + 1;
        this.consume(increment);
        this.assertExpression(match.src);
        tok = this.tok('call', '#{'+match.src+'}');
      }

      this.incrementColumn(increment);

      tok.args = null;
      // Check for args (not attributes)
      if (captures = /^ *\(/.exec(this.input)) {
        var range = this.bracketExpression(captures[0].length - 1);
        if (!/^\s*[-\w]+ *=/.test(range.src)) { // not attributes
          this.incrementColumn(1);
          this.consume(range.end + 1);
          tok.args = range.src;
          this.assertExpression('[' + tok.args + ']');
          for (var i = 0; i <= tok.args.length; i++) {
            if (tok.args[i] === '\n') {
              this.incrementLine(1);
            } else {
              this.incrementColumn(1);
            }
          }
        }
      }
      this.tokens.push(tok);
      return true;
    }
  }
function ( ) { var tok , captures , increment ; if ( captures = / ^\+(\s*)(([-\w]+)|(#\{)) / . exec ( this . input ) ) { // try to consume simple or interpolated call if ( captures [ 3 ] ) { // simple call increment = captures [ 0 ] . length ; this . consume ( increment ) ; tok = this . tok ( 'call' , captures [ 3 ] ) ; } else { // interpolated call var match = this . bracketExpression ( 2 + captures [ 1 ] . length ) ; increment = match . end + 1 ; this . consume ( increment ) ; this . assertExpression ( match . src ) ; tok = this . tok ( 'call' , '#{' + match . src + '}' ) ; } this . incrementColumn ( increment ) ; tok . args = null ; // Check for args (not attributes) if ( captures = / ^ *\( / . exec ( this . input ) ) { var range = this . bracketExpression ( captures [ 0 ] . length - 1 ) ; if ( ! / ^\s*[-\w]+ *= / . test ( range . src ) ) { // not attributes this . incrementColumn ( 1 ) ; this . consume ( range . end + 1 ) ; tok . args = range . src ; this . assertExpression ( '[' + tok . args + ']' ) ; for ( var i = 0 ; i <= tok . args . length ; i ++ ) { if ( tok . args [ i ] === '\n' ) { this . incrementLine ( 1 ) ; } else { this . incrementColumn ( 1 ) ; } } } } this . tokens . push ( tok ) ; return true ; } }
Call mixin.
Call mixin .