@yuneta/gobj-js 7.25.0 → 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
  *
@@ -3688,7 +3708,12 @@ var gobjJs = (function(exports) {
3688
3708
  return Number(v);
3689
3709
  }
3690
3710
  /************************************************************
3691
- *
3711
+ * The default comes back AS GIVEN, as in the C kw_get_str()
3712
+ * (`const char *default_value`, where 0 is NULL). Turned into
3713
+ * a string, a default of 0 or null was "0" or "null", which is
3714
+ * TRUE: an `if(value)` on the answer took an absent key for a
3715
+ * present one. KW_CREATE stores a string default, and null for
3716
+ * any other, as C stores json_null() for a NULL default.
3692
3717
  ************************************************************/
3693
3718
  function kw_get_str(gobj, kw, path, default_value, flag) {
3694
3719
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3698,14 +3723,13 @@ var gobjJs = (function(exports) {
3698
3723
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3699
3724
  if (v === void 0) {
3700
3725
  if (create) {
3701
- let v = String(default_value);
3702
- kw_set_dict_value(gobj, kw, path, v);
3703
- return v;
3726
+ kw_set_dict_value(gobj, kw, path, is_string(default_value) ? default_value : null);
3727
+ return default_value;
3704
3728
  } else if (required) {
3705
3729
  log_error(`path not found: '${path}'`);
3706
3730
  trace_json(kw);
3707
3731
  }
3708
- return String(default_value);
3732
+ return default_value;
3709
3733
  }
3710
3734
  if (extract) kw_delete(gobj, kw, path);
3711
3735
  if (!is_string(v)) {
@@ -3713,9 +3737,9 @@ var gobjJs = (function(exports) {
3713
3737
  log_error(`${gobj_short_name(gobj)}: path value MUST BE a string: ${path}`);
3714
3738
  trace_msg(kw);
3715
3739
  }
3716
- return String(default_value);
3740
+ return default_value;
3717
3741
  }
3718
- return String(v);
3742
+ return v;
3719
3743
  }
3720
3744
  /************************************************************
3721
3745
  *
@@ -3741,7 +3765,11 @@ var gobjJs = (function(exports) {
3741
3765
  return v;
3742
3766
  }
3743
3767
  /************************************************************
3744
- *
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.
3745
3773
  ************************************************************/
3746
3774
  function kw_get_dict(gobj, kw, path, default_value, flag) {
3747
3775
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3750,25 +3778,25 @@ var gobjJs = (function(exports) {
3750
3778
  const create = flag && flag & kw_flag_t.KW_CREATE;
3751
3779
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3752
3780
  if (v === void 0) {
3753
- if (create) {
3754
- let v = Object(default_value);
3755
- kw_set_dict_value(gobj, kw, path, v);
3756
- return v;
3757
- } 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) {
3758
3786
  log_error(`path not found: '${path}'`);
3759
3787
  trace_json(kw);
3760
3788
  }
3761
- return Object(default_value);
3789
+ return default_value;
3762
3790
  }
3763
- if (extract) kw_delete(gobj, kw, path);
3764
3791
  if (!is_object(v)) {
3765
3792
  if (required) {
3766
- log_error(`path value MUST BE a dict: ${path}`);
3793
+ log_error(`${gobj_short_name(gobj)}: path value MUST BE a dict: ${path}`);
3767
3794
  trace_msg(kw);
3768
3795
  }
3769
- return Object(default_value);
3796
+ return default_value;
3770
3797
  }
3771
- return Object(v);
3798
+ if (extract) kw_delete(gobj, kw, path);
3799
+ return v;
3772
3800
  }
3773
3801
  /************************************************************
3774
3802
  *
@@ -3794,7 +3822,12 @@ var gobjJs = (function(exports) {
3794
3822
  return v;
3795
3823
  }
3796
3824
  /************************************************************
3797
- *
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].
3798
3831
  ************************************************************/
3799
3832
  function kw_get_list(gobj, kw, path, default_value, flag) {
3800
3833
  if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
@@ -3803,25 +3836,25 @@ var gobjJs = (function(exports) {
3803
3836
  const create = flag && flag & kw_flag_t.KW_CREATE;
3804
3837
  const extract = flag && flag & kw_flag_t.KW_EXTRACT;
3805
3838
  if (v === void 0) {
3806
- if (create) {
3807
- let v = Array(default_value);
3808
- kw_set_dict_value(gobj, kw, path, v);
3809
- return v;
3810
- } 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) {
3811
3844
  log_error(`path not found: '${path}'`);
3812
3845
  trace_json(kw);
3813
3846
  }
3814
- return Array(default_value);
3847
+ return default_value;
3815
3848
  }
3816
- if (extract) kw_delete(gobj, kw, path);
3817
3849
  if (!is_array(v)) {
3818
3850
  if (required) {
3819
- log_error(`path value MUST BE an array: ${path}`);
3851
+ log_error(`${gobj_short_name(gobj)}: path value MUST BE an array: ${path}`);
3820
3852
  trace_msg(kw);
3821
3853
  }
3822
- return Array(default_value);
3854
+ return default_value;
3823
3855
  }
3824
- return Array(v);
3856
+ if (extract) kw_delete(gobj, kw, path);
3857
+ return v;
3825
3858
  }
3826
3859
  /************************************************************
3827
3860
  *
@@ -3857,7 +3890,7 @@ var gobjJs = (function(exports) {
3857
3890
  log_error("kw is not an object");
3858
3891
  return -1;
3859
3892
  }
3860
- let subdict = kw_get_dict(gobj, kw, path, {}, true, true);
3893
+ let subdict = kw_get_dict(gobj, kw, path, {}, kw_flag_t.KW_CREATE);
3861
3894
  if (!is_object(subdict)) {
3862
3895
  log_error("subdict is not an object");
3863
3896
  return -1;