Nighttime Possum Meandering
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    esindentpublic

    This package has been deprecated

    Author message:

    use esformatter instead, since this project is not maintained anymore

    esindent

    Build Status

    ECMAScript code indenter based on Esprima AST

    work in progress


    Why?

    This project started as an experiment while trying to decouple the indent logic from the other token manipulations on esformatter. It's an attempt at finding a simpler solution to the problem while still maintaining the flexibility.

    By building it as a separate tool it is also simpler to reuse it for other projects and will make some of the tests simpler to write (since we can test the indentation separately).

    How?

    This tool uses a rocambole generated AST to traverse tokens inside each node and add/remove indent based on the node type.

    The algorithm is very straightforward, it simple loops through all nodes (starting from the leaf) up to the program root, scanning each line start for WhiteSpace and adding/removing/editing Indent tokens as needed.

    Goals

    • Indent based on syntax (not tokens).
    • Options to toggle behavior.
    • Be able to indent any JavaScript program!

    API

    esindent.transform(ast[, opts]):AST

    Transforms AST in-place, adding Indent tokens at the beginning of each line that needs indentation.

    var esi = require('esindent');
    esindent.transform(ast, {
      value: '  ',
      ArrayExpression: 1,
      ChainedMemberExpression: 1,
      MultipleVariableDeclaration: 1,
      ObjectExpression: 1,
      SwitchCase: 1,
      SwitchStatement: 1,
      EmptyStatement: 0,
      ForStatement: 1,
      IfStatement: 1,
      FunctionDeclaration: 1,
      FunctionExpression: 1,
      TryStatement: 1,
      DoWhileStatement: 1
    });
     
    // to get the result as a string simply call ast.toString() 
    console.log( ast.toString() );

    esindent.sanitize(ast)

    Remove WhiteSpace tokens that are at the beginning of the lines (probably from original indent or trailing white spaces). Also remove Indent tokens that doesn't have the level property or that are not preceded by a line break.

    esindent.setOptions(opts)

    Set the indent options. Useful for cases where you want to use transformNode() or call transform() multiple times in a row (so you don't need to set the options multiple times). - Used internally by esindent.transform().

    License

    Released under the MIT License

    Keywords

    none

    install

    npm i esindent

    Downloadslast 7 days

    401

    version

    0.4.3

    license

    none

    repository

    github.com

    last publish

    collaborators

    • avatar