bower_components/ember/ember-template-compiler.js
function parseComponentBlockParams(element, program) {
      var l = element.attributes.length;
      var attrNames = [];

      for (var i = 0; i < l; i++) {
        attrNames.push(element.attributes[i].name);
      }

      var asIndex = attrNames.indexOf('as');

      if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {
        // Some basic validation, since we're doing the parsing ourselves
        var paramsString = attrNames.slice(asIndex).join(' ');
        if (paramsString.charAt(paramsString.length - 1) !== '|' || paramsString.match(/\|/g).length !== 2) {
          throw new Error('Invalid block parameters syntax: \'' + paramsString + '\'');
        }

        var params = [];
        for (i = asIndex + 1; i < l; i++) {
          var param = attrNames[i].replace(/\|/g, '');
          if (param !== '') {
            if (ID_INVERSE_PATTERN.test(param)) {
              throw new Error('Invalid identifier for block parameters: \'' + param + '\' in \'' + paramsString + '\'');
            }
            params.push(param);
          }
        }

        if (params.length === 0) {
          throw new Error('Cannot use zero block parameters: \'' + paramsString + '\'');
        }

        element.attributes = element.attributes.slice(0, asIndex);
        program.blockParams = params;
      }
    }
function parseComponentBlockParams(element, program) {
      var l = element.attributes.length;
      var attrNames = [];

      for (var i = 0; i < l; i++) {
        attrNames.push(element.attributes[i].name);
      }

      var asIndex = attrNames.indexOf('as');

      if (asIndex !== -1 && l > asIndex && attrNames[asIndex + 1].charAt(0) === '|') {
        // Some basic validation, since we're doing the parsing ourselves
        var paramsString = attrNames.slice(asIndex).join(' ');
        if (paramsString.charAt(paramsString.length - 1) !== '|' || paramsString.match(/\|/g).length !== 2) {
          throw new Error('Invalid block parameters syntax: \'' + paramsString + '\'');
        }

        var params = [];
        for (i = asIndex + 1; i < l; i++) {
          var param = attrNames[i].replace(/\|/g, '');
          if (param !== '') {
            if (ID_INVERSE_PATTERN.test(param)) {
              throw new Error('Invalid identifier for block parameters: \'' + param + '\' in \'' + paramsString + '\'');
            }
            params.push(param);
          }
        }

        if (params.length === 0) {
          throw new Error('Cannot use zero block parameters: \'' + paramsString + '\'');
        }

        element.attributes = element.attributes.slice(0, asIndex);
        program.blockParams = params;
      }
    }
function parseComponentBlockParams ( element , program ) { var l = element . attributes . length ; var attrNames = [ ] ; for ( var i = 0 ; i < l ; i ++ ) { attrNames . push ( element . attributes [ i ] . name ) ; } var asIndex = attrNames . indexOf ( 'as' ) ; if ( asIndex !== - 1 && l > asIndex && attrNames [ asIndex + 1 ] . charAt ( 0 ) === '|' ) { // Some basic validation, since we're doing the parsing ourselves var paramsString = attrNames . slice ( asIndex ) . join ( ' ' ) ; if ( paramsString . charAt ( paramsString . length - 1 ) !== '|' || paramsString . match ( / \| / g ) . length !== 2 ) { throw new Error ( 'Invalid block parameters syntax: \'' + paramsString + '\'' ) ; } var params = [ ] ; for ( i = asIndex + 1 ; i < l ; i ++ ) { var param = attrNames [ i ] . replace ( / \| / g , '' ) ; if ( param !== '' ) { if ( ID_INVERSE_PATTERN . test ( param ) ) { throw new Error ( 'Invalid identifier for block parameters: \'' + param + '\' in \'' + paramsString + '\'' ) ; } params . push ( param ) ; } } if ( params . length === 0 ) { throw new Error ( 'Cannot use zero block parameters: \'' + paramsString + '\'' ) ; } element . attributes = element . attributes . slice ( 0 , asIndex ) ; program . blockParams = params ; } }
Checks the component's attributes to see if it uses block params. If it does, registers the block params with the program and removes the corresponding attributes from the element.
Checks the component s attributes to see if it uses block params . If it does registers the block params with the program and removes the corresponding attributes from the element .