* implement coffeescript._addSoucrse method
This method enables an external module to implement caching of
compilation results. When the compiled js source is loaded from cache,
the original coffee code should be added with this method in order to
enable the Error.prepareStackTrace below to correctly adjust the stack
trace for the corresponding file (the source map will be generated on
demand).
* replace _addSource with registerCompiled
* extract the logic from _compileFile into _compileRawFileContent
_compileFile takes care of logging the file and calls _compileRawFileContent
this way an external caching implementation which computes cache key
based on raw content of the sources file, can reuse the logic of
_compileFile and avoid having calling `fs.readFileSync` for the file
more twice in case of cache miss
* remove 'output' argument from registerCompiled
* op ast
* test expected errors
* use new ast methods
* remove unused abstraction
* logical ?
* fix rebase
* follow convention
* fixes from code review
* test helper naming
* always convert new to Call
* new cases
* don't mutate locationData
* include range in location data
* use exclusive ranges
* ast generation hooks
* fix getAstChildren()
* babylon -
* isArray -> Array.isArray
* pass options to toJSON()
* default astType on Base
* using exclusive range
* extract location data tests
* babylon -> ast
* remove do ->
* _toAst -> getAstContent
* Pass through parsed number value from lexer to node; don't process more than is necessary (a number literal can never be negative, because the negative sign is an Op token and node)
* normalize NumberLiteral values
* use parsedValue in getNumberValue()
* recursive getNumberValue()
* parseNumber()
* The core JavaScript Number constructor does a better job at parsing strings into numbers than our helper does
* Use Object.assign rather than merge or extend
* Update link
* Cleanup style
* Refactor to make AST generation more object-oriented: have each of the AST properties be generated on the node itself, rather than in loops in the base class
* Untangle test helpers: give the AST location tests their own specific helper function, and move the general AST helper functions into the main AST tests file
* Not passing o
* Add node type check to AST location data tests
* Port to Babel 7
Use the Babel 7 @babel/core transpiler, falling back to the older babel-core version if possible.
* Use Babel 7 and preset-env 7 to build the browser compiler and test Babel transpilation
* Update docs for Babel 7
* Add `nodes` option to Node API, that returns POJO representation of AST; starting point for toPlainObject method on node classes to return the serializable plain JavaScript object representation of each node
* Make --nodes also return JSON (pretty-printed, though not colorized)
* Alphabetize CLI flags
* Use new `ast` flag to request AST, restoring prior `nodes` flag; rename toPlainObject to toJSON
* Update links to use https://coffeescript.org
* 2.3.1 changelog
* Bump version to 2.3.1; update output
* Forgot one
* Another one
* Lock Babel versions for Node 6 build to succeed, until Babel 7 is out
* Move the building of the comments hash into its own function, to make clearer that it only happens once
* Abstract token comments dictionary
* Format comments
* Allow attaching a “data” property to tokens, to allow extra info to pass through the parser into the node classes
* Add data to StringLiteral tokens such that we should be able to deindent them in the nodes class
* Update output
* Another comment fix
* Add data to every token, with common properties
* Be more defensive, even though we apparently don't need to be
* Improve comments
* Remove the token data property, leaving all unrelated improvements
* Code review improvements; update output