From d28d7f732ae5c5017c7e4c2497a744a781e48dab Mon Sep 17 00:00:00 2001 From: Adrian Date: Fri, 7 Apr 2017 16:38:50 +0200 Subject: Add support for linting Handlebars templates with ember-template-lint (#452) * Ember-template-lint Handlebars template linter: initial handler, test. * Handlebars support with ember-template-lint: basic documentation entries. --- ale_linters/handlebars/embertemplatelint.vim | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 ale_linters/handlebars/embertemplatelint.vim (limited to 'ale_linters/handlebars/embertemplatelint.vim') 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 +" 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', +\}) -- cgit v1.2.3