Skip to content

Commit

Permalink
Add babylon as default Prettier parser (#2220)
Browse files Browse the repository at this point in the history
* Mimic Prettier's default parser by setting it to `babylon`
* Add tests to check default Prettier `parser`
* Set Prettier default parser based on version
* Update the comment to explain the reason for an explicit default
  • Loading branch information
chaucerbao authored and w0rp committed Jan 22, 2019
1 parent d0284f2 commit f12d312
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
10 changes: 9 additions & 1 deletion autoload/ale/fixers/prettier.vim
Expand Up @@ -47,6 +47,15 @@ function! ale#fixers#prettier#ApplyFixForVersion(buffer, version_output) abort
" Append the --parser flag depending on the current filetype (unless it's
" already set in g:javascript_prettier_options).
if empty(expand('#' . a:buffer . ':e')) && match(l:options, '--parser') == -1
" Mimic Prettier's defaults. In cases without a file extension or
" filetype (scratch buffer), Prettier needs `parser` set to know how
" to process the buffer.
if ale#semver#GTE(l:version, [1, 16, 0])
let l:parser = 'babel'
else
let l:parser = 'babylon'
endif

let l:prettier_parsers = {
\ 'typescript': 'typescript',
\ 'css': 'css',
Expand All @@ -60,7 +69,6 @@ function! ale#fixers#prettier#ApplyFixForVersion(buffer, version_output) abort
\ 'yaml': 'yaml',
\ 'html': 'html',
\}
let l:parser = ''

for l:filetype in split(getbufvar(a:buffer, '&filetype'), '\.')
if has_key(l:prettier_parsers, l:filetype)
Expand Down
28 changes: 28 additions & 0 deletions test/fixers/test_prettier_fixer_callback.vader
Expand Up @@ -96,6 +96,34 @@ Execute(The version number should be cached):
\ },
\ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), [])

Execute(Should set --parser to `babylon` by default, < 1.16.0):
call ale#test#SetFilename('../prettier-test-files/testfile')

set filetype=javascript

AssertEqual
\ {
\ 'command': ale#path#CdString(expand('%:p:h'))
\ . ale#Escape(g:ale_javascript_prettier_executable)
\ . ' --parser babylon'
\ . ' --stdin-filepath %s --stdin',
\ },
\ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.6.0'])

Execute(Should set --parser to `babel` by default, >= 1.16.0):
call ale#test#SetFilename('../prettier-test-files/testfile')

set filetype=javascript

AssertEqual
\ {
\ 'command': ale#path#CdString(expand('%:p:h'))
\ . ale#Escape(g:ale_javascript_prettier_executable)
\ . ' --parser babel'
\ . ' --stdin-filepath %s --stdin',
\ },
\ ale#fixers#prettier#ApplyFixForVersion(bufnr(''), ['1.16.0'])

Execute(Should set --parser based on filetype, TypeScript):
call ale#test#SetFilename('../prettier-test-files/testfile')

Expand Down

0 comments on commit f12d312

Please sign in to comment.