douglasduteil/ng2in1

View on GitHub
src/convertors/template.js

Summary

Maintainability
A
0 mins
Test Coverage
//

import _ from 'lodash';
import convertFromTransformers from './convertFromTransformers';
import {ng1xModule} from '../ng2in1';

const TEMPLATE_TRANSFORMERS = {
  inline: inlineTransformer,
  directives: directivesTransformer
};

const templateConverter = _.partial(convertFromTransformers, TEMPLATE_TRANSFORMERS);

export {templateConverter as templateConfigToDirectiveConfig};

////

// -----------------------------------------------------------------------------
// selector transformer
// -----------------------------------------------------------------------------

function inlineTransformer(inlineTemplate) {
  return {
    template: inlineTemplate
  };
}

// -----------------------------------------------------------------------------
// directives transformer
// -----------------------------------------------------------------------------

function directivesTransformer(directives, {ngModule}) {
  const directiveModulesName = _(directives)
    .filter(_.negate(_.isString))
    .map(componentFactory => ng1xModule(componentFactory))
    .map(m => m.name)
    .value();

  ngModule.requires = _(ngModule.requires)
    .concat(_.filter(directives, _.isString))
    .concat(directiveModulesName)
    .uniq()
    .value();

  return {};
}