@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.
- package/README.md +6 -0
- package/dist/gobj-js.cjs.js +67 -34
- package/dist/gobj-js.cjs.js.map +1 -1
- package/dist/gobj-js.cjs.min.js +141 -154
- package/dist/gobj-js.cjs.min.js.map +1 -1
- package/dist/gobj-js.es.js +67 -34
- package/dist/gobj-js.es.js.map +1 -1
- package/dist/gobj-js.es.min.js +224 -237
- package/dist/gobj-js.es.min.js.map +1 -1
- package/dist/gobj-js.iife.js +67 -34
- package/dist/gobj-js.iife.js.map +1 -1
- package/dist/gobj-js.iife.min.js +216 -229
- package/dist/gobj-js.iife.min.js.map +1 -1
- package/dist/gobj-js.umd.js +67 -34
- package/dist/gobj-js.umd.js.map +1 -1
- package/dist/gobj-js.umd.min.js +313 -326
- package/dist/gobj-js.umd.min.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -527,6 +527,12 @@ kw_get_str (gobj, kw, path, default_value, flag)
|
|
|
527
527
|
kw_get_dict(gobj, kw, path, default_value, flag)
|
|
528
528
|
kw_get_list(gobj, kw, path, default_value, flag)
|
|
529
529
|
kw_get_dict_value(gobj, kw, path, default_value, flag)
|
|
530
|
+
// A typed reader answers the value when it has the reader's type, and
|
|
531
|
+
// the default AS GIVEN otherwise (absent key or other type), as in C:
|
|
532
|
+
// kw_get_list(gobj, {x: [1, 2]}, "x", [], 0) → [1, 2] (the same array)
|
|
533
|
+
// kw_get_dict(gobj, {}, "x", null, 0) → null
|
|
534
|
+
// kw_get_bool(gobj, {x: "false"}, "x", true, 0) → true (not a boolean)
|
|
535
|
+
// kw_get_bool(gobj, {x: "false"}, "x", true, KW_WILD_NUMBER) → false
|
|
530
536
|
|
|
531
537
|
kw_set_dict_value(gobj, kw, path, value)
|
|
532
538
|
kw_set_subdict_value(gobj, kw, path, key, value)
|
package/dist/gobj-js.cjs.js
CHANGED
|
@@ -3215,8 +3215,8 @@ function trace_msg(format) {
|
|
|
3215
3215
|
}
|
|
3216
3216
|
function trace_json(jn, msg) {
|
|
3217
3217
|
if (console_wants("json", msg)) {
|
|
3218
|
-
if (msg)
|
|
3219
|
-
|
|
3218
|
+
if (msg) _console.warn("=====> " + msg);
|
|
3219
|
+
_console.dir(jn);
|
|
3220
3220
|
}
|
|
3221
3221
|
emit_log_callback("json", jn, current_timestamp());
|
|
3222
3222
|
}
|
|
@@ -3604,7 +3604,11 @@ function kw_delete(gobj, kw, path) {
|
|
|
3604
3604
|
return 0;
|
|
3605
3605
|
}
|
|
3606
3606
|
/************************************************************
|
|
3607
|
-
*
|
|
3607
|
+
* As the C kw_get_bool(): a boolean found is the answer, and
|
|
3608
|
+
* anything else gives the default back -- unless KW_WILD_NUMBER
|
|
3609
|
+
* asks to read a number (0 is false), a string ("true"/"false"
|
|
3610
|
+
* in any case, else its integer) or null (false). Before gobj-js
|
|
3611
|
+
* 7.25.2 the value went through Boolean(), so "false" was TRUE.
|
|
3608
3612
|
************************************************************/
|
|
3609
3613
|
function kw_get_bool(gobj, kw, path, default_value, flag) {
|
|
3610
3614
|
if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
|
|
@@ -3612,6 +3616,7 @@ function kw_get_bool(gobj, kw, path, default_value, flag) {
|
|
|
3612
3616
|
const required = flag && flag & kw_flag_t.KW_REQUIRED;
|
|
3613
3617
|
const create = flag && flag & kw_flag_t.KW_CREATE;
|
|
3614
3618
|
const extract = flag && flag & kw_flag_t.KW_EXTRACT;
|
|
3619
|
+
const wild = flag && flag & kw_flag_t.KW_WILD_NUMBER;
|
|
3615
3620
|
if (b === void 0) {
|
|
3616
3621
|
if (create) {
|
|
3617
3622
|
let v = Boolean(default_value);
|
|
@@ -3623,8 +3628,23 @@ function kw_get_bool(gobj, kw, path, default_value, flag) {
|
|
|
3623
3628
|
}
|
|
3624
3629
|
return Boolean(default_value);
|
|
3625
3630
|
}
|
|
3631
|
+
let value;
|
|
3632
|
+
if (is_boolean(b)) value = b;
|
|
3633
|
+
else if (wild && is_number(b)) value = b !== 0;
|
|
3634
|
+
else if (wild && is_string(b)) {
|
|
3635
|
+
if (b.toLowerCase() === "true") value = true;
|
|
3636
|
+
else if (b.toLowerCase() === "false") value = false;
|
|
3637
|
+
else value = (parseInt(b) || 0) !== 0;
|
|
3638
|
+
} else if (wild && b === null) value = false;
|
|
3639
|
+
else {
|
|
3640
|
+
if (required) {
|
|
3641
|
+
log_error(`${gobj_short_name(gobj)}: path value MUST BE a boolean: ${path}`);
|
|
3642
|
+
trace_msg(kw);
|
|
3643
|
+
}
|
|
3644
|
+
return Boolean(default_value);
|
|
3645
|
+
}
|
|
3626
3646
|
if (extract) kw_delete(gobj, kw, path);
|
|
3627
|
-
return
|
|
3647
|
+
return value;
|
|
3628
3648
|
}
|
|
3629
3649
|
/************************************************************
|
|
3630
3650
|
*
|
|
@@ -3687,7 +3707,12 @@ function kw_get_real(gobj, kw, path, default_value, flag) {
|
|
|
3687
3707
|
return Number(v);
|
|
3688
3708
|
}
|
|
3689
3709
|
/************************************************************
|
|
3690
|
-
*
|
|
3710
|
+
* The default comes back AS GIVEN, as in the C kw_get_str()
|
|
3711
|
+
* (`const char *default_value`, where 0 is NULL). Turned into
|
|
3712
|
+
* a string, a default of 0 or null was "0" or "null", which is
|
|
3713
|
+
* TRUE: an `if(value)` on the answer took an absent key for a
|
|
3714
|
+
* present one. KW_CREATE stores a string default, and null for
|
|
3715
|
+
* any other, as C stores json_null() for a NULL default.
|
|
3691
3716
|
************************************************************/
|
|
3692
3717
|
function kw_get_str(gobj, kw, path, default_value, flag) {
|
|
3693
3718
|
if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
|
|
@@ -3697,14 +3722,13 @@ function kw_get_str(gobj, kw, path, default_value, flag) {
|
|
|
3697
3722
|
const extract = flag && flag & kw_flag_t.KW_EXTRACT;
|
|
3698
3723
|
if (v === void 0) {
|
|
3699
3724
|
if (create) {
|
|
3700
|
-
|
|
3701
|
-
|
|
3702
|
-
return v;
|
|
3725
|
+
kw_set_dict_value(gobj, kw, path, is_string(default_value) ? default_value : null);
|
|
3726
|
+
return default_value;
|
|
3703
3727
|
} else if (required) {
|
|
3704
3728
|
log_error(`path not found: '${path}'`);
|
|
3705
3729
|
trace_json(kw);
|
|
3706
3730
|
}
|
|
3707
|
-
return
|
|
3731
|
+
return default_value;
|
|
3708
3732
|
}
|
|
3709
3733
|
if (extract) kw_delete(gobj, kw, path);
|
|
3710
3734
|
if (!is_string(v)) {
|
|
@@ -3712,9 +3736,9 @@ function kw_get_str(gobj, kw, path, default_value, flag) {
|
|
|
3712
3736
|
log_error(`${gobj_short_name(gobj)}: path value MUST BE a string: ${path}`);
|
|
3713
3737
|
trace_msg(kw);
|
|
3714
3738
|
}
|
|
3715
|
-
return
|
|
3739
|
+
return default_value;
|
|
3716
3740
|
}
|
|
3717
|
-
return
|
|
3741
|
+
return v;
|
|
3718
3742
|
}
|
|
3719
3743
|
/************************************************************
|
|
3720
3744
|
*
|
|
@@ -3740,7 +3764,11 @@ function kw_get_pointer(gobj, kw, path, default_value, flag) {
|
|
|
3740
3764
|
return v;
|
|
3741
3765
|
}
|
|
3742
3766
|
/************************************************************
|
|
3743
|
-
*
|
|
3767
|
+
* As the C kw_get_dict(): a dict found is the answer, and
|
|
3768
|
+
* anything else gives the default back AS GIVEN (null stays
|
|
3769
|
+
* null). KW_CREATE stores a dict default, never a null one.
|
|
3770
|
+
* Before gobj-js 7.25.2 the answer went through Object(), so a
|
|
3771
|
+
* null default came back as {} and a 0 as a Number object.
|
|
3744
3772
|
************************************************************/
|
|
3745
3773
|
function kw_get_dict(gobj, kw, path, default_value, flag) {
|
|
3746
3774
|
if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
|
|
@@ -3749,25 +3777,25 @@ function kw_get_dict(gobj, kw, path, default_value, flag) {
|
|
|
3749
3777
|
const create = flag && flag & kw_flag_t.KW_CREATE;
|
|
3750
3778
|
const extract = flag && flag & kw_flag_t.KW_EXTRACT;
|
|
3751
3779
|
if (v === void 0) {
|
|
3752
|
-
if (create) {
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
|
|
3756
|
-
|
|
3780
|
+
if (create && is_object(default_value) && kw) {
|
|
3781
|
+
kw_set_dict_value(gobj, kw, path, default_value);
|
|
3782
|
+
return default_value;
|
|
3783
|
+
}
|
|
3784
|
+
if (required) {
|
|
3757
3785
|
log_error(`path not found: '${path}'`);
|
|
3758
3786
|
trace_json(kw);
|
|
3759
3787
|
}
|
|
3760
|
-
return
|
|
3788
|
+
return default_value;
|
|
3761
3789
|
}
|
|
3762
|
-
if (extract) kw_delete(gobj, kw, path);
|
|
3763
3790
|
if (!is_object(v)) {
|
|
3764
3791
|
if (required) {
|
|
3765
|
-
log_error(
|
|
3792
|
+
log_error(`${gobj_short_name(gobj)}: path value MUST BE a dict: ${path}`);
|
|
3766
3793
|
trace_msg(kw);
|
|
3767
3794
|
}
|
|
3768
|
-
return
|
|
3795
|
+
return default_value;
|
|
3769
3796
|
}
|
|
3770
|
-
|
|
3797
|
+
if (extract) kw_delete(gobj, kw, path);
|
|
3798
|
+
return v;
|
|
3771
3799
|
}
|
|
3772
3800
|
/************************************************************
|
|
3773
3801
|
*
|
|
@@ -3793,7 +3821,12 @@ function kw_get_dict_value(gobj, kw, path, default_value, flag) {
|
|
|
3793
3821
|
return v;
|
|
3794
3822
|
}
|
|
3795
3823
|
/************************************************************
|
|
3796
|
-
*
|
|
3824
|
+
* As the C kw_get_list(): a list found is the answer, and
|
|
3825
|
+
* anything else gives the default back AS GIVEN. KW_CREATE
|
|
3826
|
+
* stores a list default, never a null one. Before gobj-js
|
|
3827
|
+
* 7.25.2 the answer went through Array(), which WRAPS its
|
|
3828
|
+
* argument: a list found came back as [list], a default of []
|
|
3829
|
+
* as [[]] and a null one as [null].
|
|
3797
3830
|
************************************************************/
|
|
3798
3831
|
function kw_get_list(gobj, kw, path, default_value, flag) {
|
|
3799
3832
|
if (gobj && !is_gobj(gobj)) log_error(`GObj bad instanceof`);
|
|
@@ -3802,25 +3835,25 @@ function kw_get_list(gobj, kw, path, default_value, flag) {
|
|
|
3802
3835
|
const create = flag && flag & kw_flag_t.KW_CREATE;
|
|
3803
3836
|
const extract = flag && flag & kw_flag_t.KW_EXTRACT;
|
|
3804
3837
|
if (v === void 0) {
|
|
3805
|
-
if (create) {
|
|
3806
|
-
|
|
3807
|
-
|
|
3808
|
-
|
|
3809
|
-
|
|
3838
|
+
if (create && is_array(default_value) && kw) {
|
|
3839
|
+
kw_set_dict_value(gobj, kw, path, default_value);
|
|
3840
|
+
return default_value;
|
|
3841
|
+
}
|
|
3842
|
+
if (required) {
|
|
3810
3843
|
log_error(`path not found: '${path}'`);
|
|
3811
3844
|
trace_json(kw);
|
|
3812
3845
|
}
|
|
3813
|
-
return
|
|
3846
|
+
return default_value;
|
|
3814
3847
|
}
|
|
3815
|
-
if (extract) kw_delete(gobj, kw, path);
|
|
3816
3848
|
if (!is_array(v)) {
|
|
3817
3849
|
if (required) {
|
|
3818
|
-
log_error(
|
|
3850
|
+
log_error(`${gobj_short_name(gobj)}: path value MUST BE an array: ${path}`);
|
|
3819
3851
|
trace_msg(kw);
|
|
3820
3852
|
}
|
|
3821
|
-
return
|
|
3853
|
+
return default_value;
|
|
3822
3854
|
}
|
|
3823
|
-
|
|
3855
|
+
if (extract) kw_delete(gobj, kw, path);
|
|
3856
|
+
return v;
|
|
3824
3857
|
}
|
|
3825
3858
|
/************************************************************
|
|
3826
3859
|
*
|
|
@@ -3856,7 +3889,7 @@ function kw_set_subdict_value(gobj, kw, path, key, value) {
|
|
|
3856
3889
|
log_error("kw is not an object");
|
|
3857
3890
|
return -1;
|
|
3858
3891
|
}
|
|
3859
|
-
let subdict = kw_get_dict(gobj, kw, path, {},
|
|
3892
|
+
let subdict = kw_get_dict(gobj, kw, path, {}, kw_flag_t.KW_CREATE);
|
|
3860
3893
|
if (!is_object(subdict)) {
|
|
3861
3894
|
log_error("subdict is not an object");
|
|
3862
3895
|
return -1;
|