* feat(api): add custom parser API
* test(api): add integration test for parser resolution
* chore(api): fix build after resolving conflicts
* docs(api): document custom parser API
* docs(api): fix typo
* chore(build): add parse5 to build and support yarn test --prod
* Fix support for node 4 (#1988)
* Fix website on iOS Safari (#1970)
Formatting change:
* Position JSX whitespace (`{" "}`) at the end of lines (#1964)
Lots of small fixes, mainly for TypeScript.
The docs go over a bunch of edge cases, might as well have it as a test :)
http://lesscss.org/features/
I just had to remove
```css
.weird-element {
content: ^//* some horrible but needed css hack;
}
```
but i'm not sure if it's real less.
We use a heuristic to figure out if it's a SCSS or Less file. And if it doesn't work, we try again with the other one. We do the same for JSX and TypeScript.
Fixes#1784
It's very annoying to have to have a static definition of the ast, we should instead just traverse the objects to discover it. We just need to make sure not to have any cycles, but it's also good for debugging anyway.
This fixed a few comments already :)
I wanted to see how hard it would be to add support for CSS inside of prettier. Turns out, it's not that hard. I spent a few hours printing post-css values and getting all the stylefmt unit tests to not throw.
This makes it easier to format code snippets including a `return`
statement, without having to format the entire function. For example,
given the following code:
```js
function f() {
return someVeryLongStringA && someVeryLongStringB && someVeryLongStringC && someVeryLongStringD
}
```
a developer could select the line containing `return`, then use
prettier to format the code to:
```js
function f() {
return (
someVeryLongStringA &&
someVeryLongStringB &&
someVeryLongStringC &&
someVeryLongStringD
);
}
```
which can then be reindented by the editor.
---
Related to https://github.com/prettier/prettier/issues/593
* (Babylon) Fall back to non-strict mode
This makes Prettier a little less opinionated about linting. For
example, the following can now be formatted:
```js
function f(a,a){return a}
```
whereas before it would cause an error:
stdin: SyntaxError: Argument name clash in strict mode (1:13)
> 1 | function f(a,a){return a}
| ^
This also allows octal numbers to be parsed,
and therefore fixes https://github.com/prettier/prettier/issues/228
If the code parses neither as strict nor as non-strict, the error from the
strict parse is thrown (as it was before this change).
---
I noticed this while trying out [eslump] with prettier:
eslump | pbcopy; pbpaste | prettier
[eslump]: https://github.com/lydell/eslump
* Add missing test
* Use Object.assign() instead of mutating object
* Run AST comparison tests on Travis
It looks like some of these currently fail, so we should probably also
sort that out.
Inspired by https://github.com/prettier/prettier/issues/1552
* tests: Use specified parser when AST_COMPARE=1
This fixes some of the tests with AST_COMPARE=1
* Move cleanAST() into prettier.__debug
This makes it available for tests to use.
* AST_COMPARE=1 uses cleanAst() instead of removeEmptyStatements()
Ths fixes some of the tests with AST_COMPARE=1
* Export parse() from src/parser.js
This makes it available for tests to use.
* tests: Use specified parser more when AST_COMPARE=1
This is a continuation of commit 86437a66d326919897fe89891a25824870f5bb79
This fixes some of the tests with AST_COMPARE=1
* massageAST: remove leadingComments/trailingComments
This fixes some of the tests with AST_COMPARE=1
* massageAST: remove `extra`
This fixes some of the tests with AST_COMPARE=1
* tests_config/run_spec.js: Rename variables for clarity
* AST_COMPARE=1 tests compare unstringified objects
This makes the test error output shorter.
* fixup! Export parse() from src/parser.js
* Revert "Run AST comparison tests on Travis"
See https://github.com/prettier/prettier/pull/1553#issuecomment-300027747
This reverts commit 49873a956c532f23fd216551a35ae35c1a18407e.
* fixup! fixup! Export parse() from src/parser.js
* parser: Require babel-code-frame only when needed
This addresses:
* https://github.com/prettier/prettier/pull/1553#discussion_r115386253
* https://github.com/prettier/prettier/pull/1553#discussion_r115386250
* parser: Don't export now-unused parseWith* functions
Addresses https://github.com/prettier/prettier/pull/1553#discussion_r115386964
* Move cleanAST/massageAST into own file, don't export
This addresses:
* https://github.com/prettier/prettier/pull/1553#discussion_r115386993
* https://github.com/prettier/prettier/pull/1553#discussion_r115386611
* Don't destructure require() result (Node v4 compat.)
* Fix copy/paste error
Adding typescript broke the docs build and is causing issues with create-react-app bundler. Let's use a small hack to hide it from static analysis, but still works in node.
Fixes#986
* WIP immediate feedback
* typescript parser is drop-in replacement for flow parser
* Add new TypeScript Parser snapshots where drop-in replacement possible
* Snapshot updates after rebasing
* Remove unnecessary stripping of properties on TypeScript parser AST
* Remove annotated issues
* Move TS dependencies to dev for now
* Use babel-code-frame for syntax errors
* Support the `--color` option more explicitly
* Update rollup config to handle babel-code-frame
* Use exact dependencies