@@ -69,6 +69,7 @@ function! s:_vital_loaded(V) abort
6969 let s: V = a: V
7070 let s: string = s: V .import (' Data.String' )
7171 let s: bytes = s: V .import (' Data.List.Byte' )
72+ let s: t = s: V .import (' Vim.Type' ).types
7273endfunction
7374
7475function ! s: _vital_depends () abort
@@ -132,35 +133,35 @@ endfunction
132133
133134function ! s: _encode (val, settings) abort
134135 let t = type (a: val )
135- if t == 0
136+ if t == s: t . number
136137 return a: val
137- elseif t == 1
138+ elseif t == s: t . string
138139 let s = iconv (a: val , a: settings .from_encoding, ' utf-8' )
139140 let s = substitute (s , ' [\x01-\x1f\\"]' , ' \=s:control_chars[submatch(0)]' , ' g' )
140141 return ' "' . s . ' "'
141- elseif t == 2
142+ elseif t == s: t . func
142143 if s: const .true == a: val
143144 return ' true'
144145 elseif s: const .false == a: val
145146 return ' false'
146147 elseif s: const .null == a: val
147148 return ' null'
148149 endif
149- elseif t == 3
150+ elseif t == s: t . list
150151 return s: _encode_list (a: val , a: settings )
151- elseif t == 4
152+ elseif t == s: t . dict
152153 return s: _encode_dict (a: val , a: settings )
153- elseif t == 5
154+ elseif t == s: t . float
154155 let val = string (a: val )
155156 if a: settings .allow_nan
156157 let val = get (s: float_constants , val, val)
157158 elseif has_key (s: float_constants , val)
158159 throw ' vital: Web.JSON: Invalid float value: ' . val
159160 endif
160161 return val
161- elseif t == 6 || t == 7
162+ elseif t == s: t .bool || t == s: t . none
162163 return get (s: special_constants , a: val )
163- elseif t == 10
164+ elseif t == s: t .blob
164165 return s: _encode_list (s: bytes .from_blob (a: val ), a: settings )
165166 endif
166167 throw ' vital: Web.JSON: Invalid argument: ' . string (a: val )
0 commit comments