diff options
author | w0rp <w0rp@users.noreply.github.com> | 2018-01-24 10:40:57 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-24 10:40:57 +0000 |
commit | 9849c79ff767b9f2e3498230bb29071eeb5a77ef (patch) | |
tree | c0816ce9c042dfb023074f5e46e3d95ffdd08cd6 /ale_linters/eruby | |
parent | b28a6ddbe4cf573ea993288a6ad4db569d535adf (diff) | |
parent | aa29c91cdc9c5dc737e93c1f91080aa174363bef (diff) | |
download | ale-9849c79ff767b9f2e3498230bb29071eeb5a77ef.zip |
Merge pull request #1157 from elebow/eruby-add-erubi-linter
[eruby] Add erubi linter
Diffstat (limited to 'ale_linters/eruby')
-rw-r--r-- | ale_linters/eruby/erubi.vim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/ale_linters/eruby/erubi.vim b/ale_linters/eruby/erubi.vim new file mode 100644 index 00000000..6f2d3ac6 --- /dev/null +++ b/ale_linters/eruby/erubi.vim @@ -0,0 +1,35 @@ +" Author: Eddie Lebow https://github.com/elebow +" Description: eruby checker using `erubi` + +function! ale_linters#eruby#erubi#CheckErubi(buffer) abort + return 'ruby -r erubi/capture_end -e ' . ale#Escape('""') +endfunction + +function! ale_linters#eruby#erubi#GetCommand(buffer, check_erubi_output) abort + let l:rails_root = ale#ruby#FindRailsRoot(a:buffer) + + if (!empty(a:check_erubi_output)) + " The empty command in CheckErubi returns nothing if erubi runs and + " emits an error if erubi is not present + return '' + endif + + if empty(l:rails_root) + return 'ruby -r erubi/capture_end -e ' . ale#Escape('puts Erubi::CaptureEndEngine.new($stdin.read).src') . '< %t | ruby -c' + endif + + " Rails-flavored eRuby does not comply with the standard as understood by + " Erubi, so we'll have to do some substitution. This does not reduce the + " effectiveness of the linter---the translated code is still evaluated. + return 'ruby -r erubi/capture_end -e ' . ale#Escape('puts Erubi::CaptureEndEngine.new($stdin.read.gsub(%{<%=},%{<%}), nil, %{-}).src') . '< %t | ruby -c' +endfunction + +call ale#linter#Define('eruby', { +\ 'name': 'erubi', +\ 'executable': 'ruby', +\ 'command_chain': [ +\ {'callback': 'ale_linters#eruby#erubi#CheckErubi'}, +\ {'callback': 'ale_linters#eruby#erubi#GetCommand', 'output_stream': 'stderr'}, +\ ], +\ 'callback': 'ale#handlers#ruby#HandleSyntaxErrors', +\}) |