@yuneta/gobj-js 7.25.1 → 7.25.2

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,11 @@ 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 -- unless KW_WILD_NUMBER
3610
+ * asks to read a number (0 is false), a string ("true"/"false"
3611
+ * in any case, else its integer) or null (false). Before gobj-js
3612
+ * 7.25.2 the value went through Boolean(), so "false" was TRUE.
3609
3613
  ************************************************************/
3610
3614
  function kw_get_bool(gobj, kw, path, default_value, flag) {
3611
3615
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3613,6 +3617,7 @@ var gobjJs = (function(exports) {
3613
3617
  const required = flag && flag & kw_flag_t.KW_REQUIRED;
3614
3618
  const create = flag && flag & kw_flag_t.KW_CREATE;
3615
3619
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3620
+ const wild = flag && flag & kw_flag_t.KW_WILD_NUMBER;
3616
3621
  if (b === void 0) {
3617
3622
  if (create) {
3618
3623
  let v = Boolean(default_value);
@@ -3624,8 +3629,23 @@ var gobjJs = (function(exports) {
3624
3629
  }
3625
3630
  return Boolean(default_value);
3626
3631
  }
3632
+ let value;
3633
+ if (is_boolean(b)) value = b;
3634
+ else if (wild && is_number(b)) value = b !== 0;
3635
+ else if (wild && is_string(b)) {
3636
+ if (b.toLowerCase() === "true") value = true;
3637
+ else if (b.toLowerCase() === "false") value = false;
3638
+ else value = (parseInt(b) || 0) !== 0;
3639
+ } else if (wild && b === null) value = false;
3640
+ else {
3641
+ if (required) {
3642
+ log_error(`${gobj_short_name(gobj)}: path value MUST BE a boolean: ${path}`);
3643
+ trace_msg(kw);
3644
+ }
3645
+ return Boolean(default_value);
3646
+ }
3627
3647
  if (extract) kw_delete(gobj, kw, path);
3628
- return Boolean(b);
3648
+ return value;
3629
3649
  }
3630
3650
  /************************************************************
3631
3651
  *
@@ -3745,7 +3765,11 @@ var gobjJs = (function(exports) {
3745
3765
  return v;
3746
3766
  }
3747
3767
  /************************************************************
3748
- *
3768
+ * As the C kw_get_dict(): a dict found is the answer, and
3769
+ * anything else gives the default back AS GIVEN (null stays
3770
+ * null). KW_CREATE stores a dict default, never a null one.
3771
+ * Before gobj-js 7.25.2 the answer went through Object(), so a
3772
+ * null default came back as {} and a 0 as a Number object.
3749
3773
  ************************************************************/
3750
3774
  function kw_get_dict(gobj, kw, path, default_value, flag) {
3751
3775
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3754,25 +3778,25 @@ var gobjJs = (function(exports) {
3754
3778
  const create = flag && flag & kw_flag_t.KW_CREATE;
3755
3779
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3756
3780
  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) {
3781
+ if (create && is_object(default_value) && kw) {
3782
+ kw_set_dict_value(gobj, kw, path, default_value);
3783
+ return default_value;
3784
+ }
3785
+ if (required) {
3762
3786
  log_error(`path not found: '${path}'`);
3763
3787
  trace_json(kw);
3764
3788
  }
3765
- return Object(default_value);
3789
+ return default_value;
3766
3790
  }
3767
- if (extract) kw_delete(gobj, kw, path);
3768
3791
  if (!is_object(v)) {
3769
3792
  if (required) {
3770
- log_error(`path value MUST BE a dict: ${path}`);
3793
+ log_error(`${gobj_short_name(gobj)}: path value MUST BE a dict: ${path}`);
3771
3794
  trace_msg(kw);
3772
3795
  }
3773
- return Object(default_value);
3796
+ return default_value;
3774
3797
  }
3775
- return Object(v);
3798
+ if (extract) kw_delete(gobj, kw, path);
3799
+ return v;
3776
3800
  }
3777
3801
  /************************************************************
3778
3802
  *
@@ -3798,7 +3822,12 @@ var gobjJs = (function(exports) {
3798
3822
  return v;
3799
3823
  }
3800
3824
  /************************************************************
3801
- *
3825
+ * As the C kw_get_list(): a list found is the answer, and
3826
+ * anything else gives the default back AS GIVEN. KW_CREATE
3827
+ * stores a list default, never a null one. Before gobj-js
3828
+ * 7.25.2 the answer went through Array(), which WRAPS its
3829
+ * argument: a list found came back as [list], a default of []
3830
+ * as [[]] and a null one as [null].
3802
3831
  ************************************************************/
3803
3832
  function kw_get_list(gobj, kw, path, default_value, flag) {
3804
3833
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3807,25 +3836,25 @@ var gobjJs = (function(exports) {
3807
3836
  const create = flag && flag & kw_flag_t.KW_CREATE;
3808
3837
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3809
3838
  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) {
3839
+ if (create && is_array(default_value) && kw) {
3840
+ kw_set_dict_value(gobj, kw, path, default_value);
3841
+ return default_value;
3842
+ }
3843
+ if (required) {
3815
3844
  log_error(`path not found: '${path}'`);
3816
3845
  trace_json(kw);
3817
3846
  }
3818
- return Array(default_value);
3847
+ return default_value;
3819
3848
  }
3820
- if (extract) kw_delete(gobj, kw, path);
3821
3849
  if (!is_array(v)) {
3822
3850
  if (required) {
3823
- log_error(`path value MUST BE an array: ${path}`);
3851
+ log_error(`${gobj_short_name(gobj)}: path value MUST BE an array: ${path}`);
3824
3852
  trace_msg(kw);
3825
3853
  }
3826
- return Array(default_value);
3854
+ return default_value;
3827
3855
  }
3828
- return Array(v);
3856
+ if (extract) kw_delete(gobj, kw, path);
3857
+ return v;
3829
3858
  }
3830
3859
  /************************************************************
3831
3860
  *
@@ -3861,7 +3890,7 @@ var gobjJs = (function(exports) {
3861
3890
  log_error("kw is not an object");
3862
3891
  return -1;
3863
3892
  }
3864
- let subdict = kw_get_dict(gobj, kw, path, {}, true, true);
3893
+ let subdict = kw_get_dict(gobj, kw, path, {}, kw_flag_t.KW_CREATE);
3865
3894
  if (!is_object(subdict)) {
3866
3895
  log_error("subdict is not an object");
3867
3896
  return -1;