Skip to content
This repository has been archived by the owner on Oct 27, 2017. It is now read-only.

babel/acorn-to-esprima

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

acorn-to-esprima

Some functions to help transform an acorn/babel ast to esprima format.

Primarily for use in babel-eslint, babel-jscs, and ast explorer

There are no dependencies (the methods were changed to pass in dependencies instead)

The current functions exposed are:

  • function attachComments(ast, comments, tokens)
    • This modifies the comments passed in.
  • function toTokens(tokens, tt)
    • tt is require("babel-core").acorn.tokTypes
    • Converts template string tokens (convertTemplateType)
    • filters out comment tokens
    • runs toToken over each token
  • function toToken(token, tt)
    • Sets token.type, token.range, and token.value
  • function toAST(ast, traverse)
    • traverse is require("babel-core").traverse;
    • traverses over the ast and makes any necessary changes (usually es6+)
  • function convertComments(comments)
    • Modifies comment.type

How to use:

Check out the parse method of https://github.com/babel/babel-eslint/blob/master/index.js

// example
exports.parse = function (code) {
  var comments = opts.onComment = [];
  var tokens = opts.onToken = [];

  var ast;
  try {
    ast = parse(code, {
        locations: true,
        ranges: true
    });
  } catch (err) { throw err; }

  tokens.pop();
  ast.tokens = acornToEsprima.toTokens(tokens, tt);

  acornToEsprima.convertComments(comments);
  ast.comments = comments;
  acornToEsprima.attachComments(ast, comments, ast.tokens);

  acornToEsprima.toAST(ast, traverse);

  return ast;
}