@@ -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
7576endfunction
7677
7778function ! s: _vital_depends () abort
78- return [' Data.String' , ' Data.List.Byte' ]
79+ return [' Data.String' , ' Data.List.Byte' , ' Vim.Type ' ]
7980endfunction
8081
8182" @vimlint(EVL102, 1, l:null)
@@ -135,27 +136,27 @@ endfunction
135136
136137function ! 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