Example #1
0
System.register("angular2/src/upgrade/metadata", ["angular2/core"], true, function(require, exports, module) {
  var global = System.global,
      __define = global.define;
  global.define = undefined;
  "use strict";
  var core_1 = require("angular2/core");
  var COMPONENT_SELECTOR = /^[\w|-]*$/;
  var SKEWER_CASE = /-(\w)/g;
  var directiveResolver = new core_1.DirectiveResolver();
  function getComponentInfo(type) {
    var resolvedMetadata = directiveResolver.resolve(type);
    var selector = resolvedMetadata.selector;
    if (!selector.match(COMPONENT_SELECTOR)) {
      throw new Error('Only selectors matching element names are supported, got: ' + selector);
    }
    var selector = selector.replace(SKEWER_CASE, function(all, letter) {
      return letter.toUpperCase();
    });
    return {
      type: type,
      selector: selector,
      inputs: parseFields(resolvedMetadata.inputs),
      outputs: parseFields(resolvedMetadata.outputs)
    };
  }
  exports.getComponentInfo = getComponentInfo;
  function parseFields(names) {
    var attrProps = [];
    if (names) {
      for (var i = 0; i < names.length; i++) {
        var parts = names[i].split(':');
        var prop = parts[0].trim();
        var attr = (parts[1] || parts[0]).trim();
        var capitalAttr = attr.charAt(0).toUpperCase() + attr.substr(1);
        attrProps.push({
          prop: prop,
          attr: attr,
          bracketAttr: "[" + attr + "]",
          parenAttr: "(" + attr + ")",
          bracketParenAttr: "[(" + attr + ")]",
          onAttr: "on" + capitalAttr,
          bindAttr: "bind" + capitalAttr,
          bindonAttr: "bindon" + capitalAttr
        });
      }
    }
    return attrProps;
  }
  exports.parseFields = parseFields;
  global.define = __define;
  return module.exports;
});
Example #2
0
export function getComponentInfo(type) {
    var resolvedMetadata = directiveResolver.resolve(type);
    var selector = resolvedMetadata.selector;
    if (!selector.match(COMPONENT_SELECTOR)) {
        throw new Error('Only selectors matching element names are supported, got: ' + selector);
    }
    var selector = selector.replace(SKEWER_CASE, (all, letter) => letter.toUpperCase());
    return {
        type: type,
        selector: selector,
        inputs: parseFields(resolvedMetadata.inputs),
        outputs: parseFields(resolvedMetadata.outputs)
    };
}