decaffeinate-parser-classdojo-fork
v0.0.2
Published
A better AST for CoffeeScript, inspired by CoffeeScriptRedux.
Downloads
5
Readme
decaffeinate-parser
This project uses the official CoffeeScript parser to parse CoffeeScript source code, then maps the AST generated by the parser to one more suitable for the decaffeinate project based on the AST generated by CoffeeScriptRedux.
This project might be useful to anyone who wants to work with a CoffeeScript AST and prefers the AST generated by CoffeeScriptRedux, but wants to avoid the source compatibility issues introduced by using that project. Note that it is not 100% compatible with CoffeeScriptRedux:
- Single-line functions,
if
statements, etc. have blocks for bodies. - String interpolation nodes are modeled after
TemplateLiteral
from ES6 rather than being a series of nestedConcatOp
nodes. - Triple-quoted strings have the node type
Herestring
rather thanString
. - Virtual nodes (such as the
LogicalNotOp
generated by anunless
) are marked as such with avirtual: true
property. do
is handled with theDoOp
node type.for-in
loops do not have an implicitstep
property.- Ranges of programs with indented blocks are correct.
super
is supported in classes.extends
is usable as a binary operator and in class declarations.//
(floor division) is supported.
Install
$ npm install --save-dev decaffeinate-parser
Usage
This example gets the names of the parameters in the add
function:
import { parse } from 'decaffeinate-parser';
const program = parse('add = (a, b) -> a + b');
const assignment = program.body.statements[0];
const fn = assignment.expression;
console.log(fn.parameters.map(param => param.data)); // [ 'a', 'b' ]