diff options
Diffstat (limited to 'ale_linters/handlebars/embertemplatelint.vim')
-rw-r--r-- | ale_linters/handlebars/embertemplatelint.vim | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ale_linters/handlebars/embertemplatelint.vim b/ale_linters/handlebars/embertemplatelint.vim new file mode 100644 index 00000000..7a630e19 --- /dev/null +++ b/ale_linters/handlebars/embertemplatelint.vim @@ -0,0 +1,55 @@ +" Author: Adrian Zalewski <aazalewski@hotmail.com> +" Description: Ember-template-lint for checking Handlebars files + +let g:ale_handlebars_embertemplatelint_executable = +\ get(g:, 'ale_handlebars_embertemplatelint_executable', 'ember-template-lint') + +let g:ale_handlebars_embertemplatelint_use_global = +\ get(g:, 'ale_handlebars_embertemplatelint_use_global', 0) + +function! ale_linters#handlebars#embertemplatelint#GetExecutable(buffer) abort + if g:ale_handlebars_embertemplatelint_use_global + return g:ale_handlebars_embertemplatelint_executable + endif + + return ale#util#ResolveLocalPath( + \ a:buffer, + \ 'node_modules/.bin/ember-template-lint', + \ g:ale_handlebars_embertemplatelint_executable + \) +endfunction + +function! ale_linters#handlebars#embertemplatelint#GetCommand(buffer) abort + return ale_linters#handlebars#embertemplatelint#GetExecutable(a:buffer) + \ . ' --json %t' +endfunction + +function! ale_linters#handlebars#embertemplatelint#Handle(buffer, lines) abort + if len(a:lines) == 0 + return [] + end + + let l:output = [] + + let l:input_json = json_decode(join(a:lines, '')) + let l:file_errors = values(l:input_json)[0] + + for l:error in l:file_errors + call add(l:output, { + \ 'bufnr': a:buffer, + \ 'lnum': l:error.line, + \ 'col': l:error.column, + \ 'text': l:error.rule . ': ' . l:error.message, + \ 'type': l:error.severity == 1 ? 'W' : 'E', + \}) + endfor + + return l:output +endfunction + +call ale#linter#Define('handlebars', { +\ 'name': 'ember-template-lint', +\ 'executable_callback': 'ale_linters#handlebars#embertemplatelint#GetExecutable', +\ 'command_callback': 'ale_linters#handlebars#embertemplatelint#GetCommand', +\ 'callback': 'ale_linters#handlebars#embertemplatelint#Handle', +\}) |