All files / lib process.js

100% Statements 16/16
66.67% Branches 4/6
100% Functions 5/5
100% Lines 14/14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 271x 1x 1x 1x 1x   1x           3x       3x 3x 3x     3x 3x 3x 3x    
import preprocess from './preprocess';
import print from './printer';
import convertBindAttr from './formulas/convert-bind-attr';
import convertEachIn from './formulas/convert-each-in';
import { unescape } from '../lib/whitespace';
 
const plugins = {
  'convert-bind-attr': convertBindAttr,
  'convert-each-in': convertEachIn,
};
 
function getPlugins(formulas) {
  return (formulas || []).map(f => plugins[f]);
}
 
function transform(ast, formulas) {
  const usedPlugins = getPlugins(formulas);
  usedPlugins.forEach(p => p(ast));
  return ast;
}
 
export default function process(template, options = {}) {
  const ast = preprocess(template);
  transform(ast, options.formulas);
  return unescape(print(ast, options));
}