UNPKG

jscodeshaft

Version:

Collection of more or less primitive helpers and abstractions for JSCodeShift, build for design system migrations and upgrades.

31 lines (30 loc) 1.05 kB
/** * @typedef {function} templateArgs * @param {string[]} quasis Collection of quasis (literal fragments) * @param {*[]} expressions Collection of literal nodes for primitives OR * expressions containers for anything else. * @returns {Node} *//** * Create String Template Literal. * the order of composition will be always like this: * Q1 E1 Q2 E2 ... En Qn * * @TODO Accept primitives directly * * @param {function} j JSCodeShift instance * @returns {function(templateArgs): Node} * @see https://vramana.github.io/blog/2015/12/21/codemod-tutorial/ * @see https://github.com/cpojer/js-codemod/blob/master/transforms/template-literals.js */ export const createTemplateLiteral = j => (quasis, expressions) => ( Array.isArray(quasis) && Array.isArray(expressions) ? j.templateLiteral( quasis.map((val, index) => ( j.templateElement( {cooked: val, raw: val}, (index === quasis.length - 1), ) )), expressions, ) : undefined );