Add a fuzzy JSON decoding function for ignoring json_decode errors for linters

This commit is contained in:
w0rp
2017-07-27 00:06:15 +01:00
parent ded1bc14df
commit db4d68eae7
2 changed files with 41 additions and 0 deletions

View File

@@ -167,3 +167,23 @@ endfunction
function! ale#util#EscapePCRE(unsafe_string) abort
return substitute(a:unsafe_string, '\([\-\[\]{}()*+?.^$|]\)', '\\\1', 'g')
endfunction
" Given a String or a List of String values, try and decode the string(s)
" as a JSON value which can be decoded with json_decode. If the JSON string
" is invalid, the default argument value will be returned instead.
"
" This function is useful in code where the data can't be trusted to be valid
" JSON, and where throwing exceptions is mostly just irritating.
function! ale#util#FuzzyJSONDecode(data, default) abort
if empty(a:data)
return a:default
endif
let l:str = type(a:data) == type('') ? a:data : join(a:data, '')
try
return json_decode(l:str)
catch /E474/
return a:default
endtry
endfunction