This package has been deprecated

Author message:

Migrated to https://www.npmjs.com/package/codedegen

@smikhalevski/codegen
TypeScript icon, indicating that this package has built-in type declarations

2.0.1 • Public • Published

codegen build

Language-agnostic codegen utils.

npm install --save-prod @smikhalevski/codegen

Usage

⚠️ API documentation is available here.

import {template as _, compileJsSource} from '@smikhalevski/codegen';

const kebabVar = _.var();
const indexVar = _.var();
const valueVar = _.var();

const functionBlock = _.block`function makeKebab(${valueVar}){${[
  _`let ${kebabVar};`,
  _.assignment(kebabVar, _`""`),

  _`for(let ${indexVar}=0;${indexVar}<${valueVar}.length;${indexVar}++){`,
  _`${kebabVar}+="-"+${valueVar}.charAt(${indexVar});`,
  _`}`,

  _`return ${kebabVar}`,
]}}`;

compileJsSource(functionBlock);
// → 'function makeKebab(a){let b;b="";for(let c=0;c<a.length;c++){b+="-"+a.charAt(c);}return b}'

Codegen can optimize code by inlining assignments and eliminating redundant variable declarations.

import {template as _, compileJsSource, inlineVarAssignments} from '@smikhalevski/codegen';

const aVar = _.var();
const bVar = _.var();
const cVar = _.var();

const block = _(
    _.assignment(aVar, 3),
    _.assignment(bVar, 2),
    _.assignment(cVar, _`${aVar}+${bVar}`),

    _`console.log(${cVar})`,
);

// This operation mutates block
inlineVarAssignments(block);

compileJsSource(block);
// → 'console.log(3+2)'

Readme

Keywords

none

Package Sidebar

Install

npm i @smikhalevski/codegen

Weekly Downloads

107

Version

2.0.1

License

MIT

Unpacked Size

26.9 kB

Total Files

33

Last publish

Collaborators

  • smikhalevski