@yuneta/gobj-js 7.25.1 → 7.25.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3216,8 +3216,8 @@ var gobjJs = (function(exports) {
3216
3216
  }
3217
3217
  function trace_json(jn, msg) {
3218
3218
  if (console_wants("json", msg)) {
3219
- if (msg) window.console.warn("=====> " + msg);
3220
- window.console.dir(jn);
3219
+ if (msg) _console.warn("=====> " + msg);
3220
+ _console.dir(jn);
3221
3221
  }
3222
3222
  emit_log_callback("json", jn, current_timestamp());
3223
3223
  }
@@ -3605,7 +3605,14 @@ var gobjJs = (function(exports) {
3605
3605
  return 0;
3606
3606
  }
3607
3607
  /************************************************************
3608
- *
3608
+ * As the C kw_get_bool(): a boolean found is the answer, and
3609
+ * anything else gives the default back, LOGGED ("path MUST BE a
3610
+ * json boolean", required or not) -- unless KW_WILD_NUMBER asks
3611
+ * to read a number (0 is false), a string ("true"/"false" in any
3612
+ * case, else its integer) or null (false); a list or a dict is
3613
+ * then false, logged too. Before gobj-js 7.25.2 the value went
3614
+ * through Boolean(), so "false" was TRUE; before 7.25.3 a value
3615
+ * of the wrong type gave the default back in silence.
3609
3616
  ************************************************************/
3610
3617
  function kw_get_bool(gobj, kw, path, default_value, flag) {
3611
3618
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3613,6 +3620,7 @@ var gobjJs = (function(exports) {
3613
3620
  const required = flag && flag & kw_flag_t.KW_REQUIRED;
3614
3621
  const create = flag && flag & kw_flag_t.KW_CREATE;
3615
3622
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3623
+ const wild = flag && flag & kw_flag_t.KW_WILD_NUMBER;
3616
3624
  if (b === void 0) {
3617
3625
  if (create) {
3618
3626
  let v = Boolean(default_value);
@@ -3624,8 +3632,25 @@ var gobjJs = (function(exports) {
3624
3632
  }
3625
3633
  return Boolean(default_value);
3626
3634
  }
3635
+ let value;
3636
+ if (is_boolean(b)) value = b;
3637
+ else if (wild && is_number(b)) value = b !== 0;
3638
+ else if (wild && is_string(b)) {
3639
+ if (b.toLowerCase() === "true") value = true;
3640
+ else if (b.toLowerCase() === "false") value = false;
3641
+ else value = (parseInt(b) || 0) !== 0;
3642
+ } else if (wild && b === null) value = false;
3643
+ else if (wild) {
3644
+ log_error(`${gobj ? gobj_short_name(gobj) + ": " : ""}path MUST BE a simple json element: '${path}'`);
3645
+ trace_json(kw);
3646
+ return false;
3647
+ } else {
3648
+ log_error(`${gobj ? gobj_short_name(gobj) + ": " : ""}path MUST BE a json boolean: '${path}'`);
3649
+ trace_json(kw);
3650
+ return Boolean(default_value);
3651
+ }
3627
3652
  if (extract) kw_delete(gobj, kw, path);
3628
- return Boolean(b);
3653
+ return value;
3629
3654
  }
3630
3655
  /************************************************************
3631
3656
  *
@@ -3745,7 +3770,11 @@ var gobjJs = (function(exports) {
3745
3770
  return v;
3746
3771
  }
3747
3772
  /************************************************************
3748
- *
3773
+ * As the C kw_get_dict(): a dict found is the answer, and
3774
+ * anything else gives the default back AS GIVEN (null stays
3775
+ * null). KW_CREATE stores a dict default, never a null one.
3776
+ * Before gobj-js 7.25.2 the answer went through Object(), so a
3777
+ * null default came back as {} and a 0 as a Number object.
3749
3778
  ************************************************************/
3750
3779
  function kw_get_dict(gobj, kw, path, default_value, flag) {
3751
3780
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3754,25 +3783,25 @@ var gobjJs = (function(exports) {
3754
3783
  const create = flag && flag & kw_flag_t.KW_CREATE;
3755
3784
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3756
3785
  if (v === void 0) {
3757
- if (create) {
3758
- let v = Object(default_value);
3759
- kw_set_dict_value(gobj, kw, path, v);
3760
- return v;
3761
- } else if (required) {
3786
+ if (create && is_object(default_value) && kw) {
3787
+ kw_set_dict_value(gobj, kw, path, default_value);
3788
+ return default_value;
3789
+ }
3790
+ if (required) {
3762
3791
  log_error(`path not found: '${path}'`);
3763
3792
  trace_json(kw);
3764
3793
  }
3765
- return Object(default_value);
3794
+ return default_value;
3766
3795
  }
3767
- if (extract) kw_delete(gobj, kw, path);
3768
3796
  if (!is_object(v)) {
3769
3797
  if (required) {
3770
- log_error(`path value MUST BE a dict: ${path}`);
3798
+ log_error(`${gobj_short_name(gobj)}: path value MUST BE a dict: ${path}`);
3771
3799
  trace_msg(kw);
3772
3800
  }
3773
- return Object(default_value);
3801
+ return default_value;
3774
3802
  }
3775
- return Object(v);
3803
+ if (extract) kw_delete(gobj, kw, path);
3804
+ return v;
3776
3805
  }
3777
3806
  /************************************************************
3778
3807
  *
@@ -3798,7 +3827,12 @@ var gobjJs = (function(exports) {
3798
3827
  return v;
3799
3828
  }
3800
3829
  /************************************************************
3801
- *
3830
+ * As the C kw_get_list(): a list found is the answer, and
3831
+ * anything else gives the default back AS GIVEN. KW_CREATE
3832
+ * stores a list default, never a null one. Before gobj-js
3833
+ * 7.25.2 the answer went through Array(), which WRAPS its
3834
+ * argument: a list found came back as [list], a default of []
3835
+ * as [[]] and a null one as [null].
3802
3836
  ************************************************************/
3803
3837
  function kw_get_list(gobj, kw, path, default_value, flag) {
3804
3838
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3807,25 +3841,25 @@ var gobjJs = (function(exports) {
3807
3841
  const create = flag && flag & kw_flag_t.KW_CREATE;
3808
3842
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3809
3843
  if (v === void 0) {
3810
- if (create) {
3811
- let v = Array(default_value);
3812
- kw_set_dict_value(gobj, kw, path, v);
3813
- return v;
3814
- } else if (required) {
3844
+ if (create && is_array(default_value) && kw) {
3845
+ kw_set_dict_value(gobj, kw, path, default_value);
3846
+ return default_value;
3847
+ }
3848
+ if (required) {
3815
3849
  log_error(`path not found: '${path}'`);
3816
3850
  trace_json(kw);
3817
3851
  }
3818
- return Array(default_value);
3852
+ return default_value;
3819
3853
  }
3820
- if (extract) kw_delete(gobj, kw, path);
3821
3854
  if (!is_array(v)) {
3822
3855
  if (required) {
3823
- log_error(`path value MUST BE an array: ${path}`);
3856
+ log_error(`${gobj_short_name(gobj)}: path value MUST BE an array: ${path}`);
3824
3857
  trace_msg(kw);
3825
3858
  }
3826
- return Array(default_value);
3859
+ return default_value;
3827
3860
  }
3828
- return Array(v);
3861
+ if (extract) kw_delete(gobj, kw, path);
3862
+ return v;
3829
3863
  }
3830
3864
  /************************************************************
3831
3865
  *
@@ -3861,7 +3895,7 @@ var gobjJs = (function(exports) {
3861
3895
  log_error("kw is not an object");
3862
3896
  return -1;
3863
3897
  }
3864
- let subdict = kw_get_dict(gobj, kw, path, {}, true, true);
3898
+ let subdict = kw_get_dict(gobj, kw, path, {}, kw_flag_t.KW_CREATE);
3865
3899
  if (!is_object(subdict)) {
3866
3900
  log_error("subdict is not an object");
3867
3901
  return -1;