-*eval.txt* For Vim version 7.4. Last change: 2016 Feb 23
+*eval.txt* For Vim version 7.4. Last change: 2016 Feb 27
VIM REFERENCE MANUAL by Bram Moolenaar
Vim values are converted as follows:
Number decimal number
Float floating point number
+ Float nan "NaN"
+ Float inf "Infinity"
String in double quotes (possibly null)
Funcref not possible, error
List as an array (possibly null); when
v:true "true"
v:none "null"
v:null "null"
- Note that using v:none is permitted, although the JSON
- standard does not allow empty items. This can be useful for
- omitting items in an array:
- [0,,,,,5] ~
- This is much more efficient than:
- [0,null,null,null,null,5] ~
- But a strict JSON parser will not accept it.
+ Note that NaN and Infinity are passed on as values. This is
+ missing in the JSON standard, but several implementations do
+ allow it. If not then you will get an error.
keys({dict}) *keys()*
Return a |List| with all the keys of {dict}. The |List| is in
# define isnan(x) _isnan(x)
# define isinf(x) (!_finite(x) && !_isnan(x))
# endif
-# if defined(_MSC_VER) && !defined(INFINITY)
+# if !defined(INFINITY) && defined(DBL_MAX)
# define INFINITY (DBL_MAX+DBL_MAX)
+# endif
+# if !defined(NAN) && defined(INFINITY)
# define NAN (INFINITY-INFINITY)
# endif
#endif
case VAR_FLOAT:
#ifdef FEAT_FLOAT
# if defined(HAVE_MATH_H)
- if ((options & JSON_JS) && isnan(val->vval.v_float))
+ if (isnan(val->vval.v_float))
ga_concat(gap, (char_u *)"NaN");
- else if ((options & JSON_JS) && isinf(val->vval.v_float))
+ else if (isinf(val->vval.v_float))
ga_concat(gap, (char_u *)"Infinity");
- else if (isnan(val->vval.v_float) || isinf(val->vval.v_float))
- ga_concat(gap, (char_u *)"null");
else
# endif
{
if has('float')
let s:jsonfl = '12.34'
let s:varfl = 12.34
- let s:jsoninf = 'null'
- let s:jsinf = 'Infinity'
+ let s:jsoninf = 'Infinity'
let s:varinf = 1.0 / 0.0
- let s:jsonnan = 'null'
- let s:jsnan = 'NaN'
+ let s:jsonnan = 'NaN'
let s:varnan = 0.0 / 0.0
endif
call assert_equal(s:jsonnr, js_encode(s:varnr))
if has('float')
call assert_equal(s:jsonfl, js_encode(s:varfl))
- call assert_equal(s:jsinf, js_encode(s:varinf))
- call assert_equal(s:jsnan, js_encode(s:varnan))
+ call assert_equal(s:jsoninf, js_encode(s:varinf))
+ call assert_equal(s:jsonnan, js_encode(s:varnan))
endif
call assert_equal(s:jsonl1, js_encode(s:varl1))
call assert_equal(s:varnr, js_decode(s:jsonnr))
if has('float')
call assert_equal(s:varfl, js_decode(s:jsonfl))
- call assert_equal(s:varinf, js_decode(s:jsinf))
- call assert_true(isnan(js_decode(s:jsnan)))
+ call assert_equal(s:varinf, js_decode(s:jsoninf))
+ call assert_true(isnan(js_decode(s:jsonnan)))
endif
call assert_equal(s:varl1, js_decode(s:jsonl1))
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 1430,
/**/
1429,
/**/