Skip to content

Commit f8de29b

Browse files
committed
Web.JSON: Use Vim.Type for detecting type.
1 parent c661d01 commit f8de29b

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

autoload/vital/__vital__/Web/JSON.vim

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,11 @@ function! s:_vital_loaded(V) abort
7272
let s:V = a:V
7373
let s:string = s:V.import('Data.String')
7474
let s:bytes = s:V.import('Data.List.Byte')
75+
let s:t = s:V.import('Vim.Type').types
7576
endfunction
7677

7778
function! s:_vital_depends() abort
78-
return ['Data.String', 'Data.List.Byte']
79+
return ['Data.String', 'Data.List.Byte', 'Vim.Type']
7980
endfunction
8081

8182
" @vimlint(EVL102, 1, l:null)
@@ -135,27 +136,27 @@ endfunction
135136

136137
function! s:_encode(val, settings) abort
137138
let t = type(a:val)
138-
if t == 0
139+
if t ==# s:t.number
139140
return a:val
140-
elseif t == 1
141+
elseif t ==# s:t.string
141142
let s = iconv(a:val, a:settings.from_encoding, 'utf-8')
142143
let s = substitute(s, '[\x01-\x1f\\"]', '\=s:control_chars[submatch(0)]', 'g')
143144
return '"' . s . '"'
144-
elseif t == 3
145+
elseif t ==# s:t.list
145146
return s:_encode_list(a:val, a:settings)
146-
elseif t == 4
147+
elseif t ==# s:t.dict
147148
return s:_encode_dict(a:val, a:settings)
148-
elseif t == 5
149+
elseif t ==# s:t.float
149150
let val = string(a:val)
150151
if a:settings.allow_nan
151152
let val = get(s:float_constants, val, val)
152153
elseif has_key(s:float_constants, val)
153154
throw 'vital: Web.JSON: Invalid float value: ' . val
154155
endif
155156
return val
156-
elseif t == 6 || t == 7
157+
elseif t ==# s:t.bool || t ==# s:t.none
157158
return get(s:special_constants, a:val)
158-
elseif t == 10
159+
elseif t ==# s:t.blob
159160
return s:_encode_list(s:bytes.from_blob(a:val), a:settings)
160161
endif
161162
throw 'vital: Web.JSON: Invalid argument: ' . string(a:val)

0 commit comments

Comments
 (0)