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
M?TTuS^7Z@w2R5FGqW}N^
literal 0
HcmV?d00001
diff --git a/docs/document type box example - JSONL mode.PNG b/docs/document type box example - JSONL mode.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..a2bfe93a34606aab43f3f2f64f4edebf0d7ee800
GIT binary patch
literal 15228
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
literal 0
HcmV?d00001
diff --git a/docs/document type box example - REGEX mode.PNG b/docs/document type box example - REGEX mode.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..27b3ed38692810623c359e494660c5f701b6dec0
GIT binary patch
literal 11702
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
M%AFe}O6CFo59&1_&j0`b
literal 0
HcmV?d00001
diff --git a/most recent errors.txt b/most recent errors.txt
index 7034631..b3ef6bb 100644
--- a/most recent errors.txt
+++ b/most recent errors.txt
@@ -1,4 +1,4 @@
-Test results for JsonTools v5.8.0.15 on Notepad++ 8.5.8 64bit
+Test results for JsonTools v5.8.0.17 on Notepad++ 8.5.8 64bit
NOTE: Ctrl-F (regular expressions *on*) for "Failed [1-9]\d*" to find all failed tests
Tests failed: YAML dumper
=========================
@@ -114,7 +114,7 @@ Testing RemesPath parser and compiler
The queried JSON in the RemesParser tests is named foo:{"foo": [[0, 1, 2], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]], "bar": {"a": false, "b": ["a`g", "bah"]}, "baz": "z", "quz": {}, "jub": [], "guzo": [[[1]], [[2], [3]]], "7": [{"foo": 2}, 1], "_": {"0": 0}}
Failed 0 tests.
-Passed 453 tests.
+Passed 454 tests.
=========================
Testing RemesPath throws errors on bad inputs
=========================
@@ -133,7 +133,7 @@ Testing RemesPath produces sane outputs on randomly generated queries
Fuzz tests query
{"a": [-4, -3., -2., -1, 0, 1, 2., 3., 4], "bc": NaN,"c`d": "df", "q": ["", "a", "jk", "ian", "", "32", "u", "aa", "moun"],"f": 1,"g": 1,"h": 1,"i": 1,"j": 1}
-Ran 10000 fuzz tests
+Ran 5000 fuzz tests
Failed 0 fuzz tests
=========================
Testing multi-statement queries in RemesPath
@@ -195,40 +195,40 @@ Testing UI tests
=========================
Failed 0 tests
-Passed 298 tests
+Passed 330 tests
=========================
Testing JsonParser performance
=========================
Preview of json: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c"
...
-To convert JSON string of size 89556 into JNode took 2.705 +/- 1.982 ms over 32 trials
-Load times (ms): 2, 2, 1, 3, 1, 2, 5, 1, 1, 1, 3, 1, 1, 4, 1, 1, 11, 4, 1, 1, 4, 1, 1, 1, 2, 4, 1, 2, 2, 2, 2, 1
+To convert JSON string of size 89556 into JNode took 2.432 +/- 1.576 ms over 32 trials
+Load times (ms): 1, 2, 9, 1, 2, 3, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 2, 1, 1, 4, 1, 1, 1, 3, 1, 1, 4, 1, 1, 1, 3, 1
=========================
Performance tests for RemesPath (float arithmetic)
=========================
-Compiling query "@[@[:].a * @[:].t < @[:].e]" into took 2.482 +/- 15.103 microseconds over 40 trials
-To run pre-compiled query "@[@[:].a * @[:].t < @[:].e]" on JNode from JSON of size 89556 into took 0.029 +/- 0.013 ms over 40 trials
-Query times (ms): 0.058, 0.058, 0.023, 0.023, 0.023, 0.023, 0.023, 0.025, 0.023, 0.023, 0.023, 0.023, 0.023, 0.024, 0.024, 0.023, 0.023, 0.023, 0.023, 0.024, 0.023, 0.023, 0.023, 0.022, 0.023, 0.039, 0.074, 0.04, 0.035, 0.025, 0.034, 0.075, 0.024, 0.024, 0.034, 0.023, 0.023, 0.028, 0.025, 0.024
+Compiling query "@[@[:].a * @[:].t < @[:].e]" into took 2.335 +/- 14.15 microseconds over 40 trials
+To run pre-compiled query "@[@[:].a * @[:].t < @[:].e]" on JNode from JSON of size 89556 into took 0.115 +/- 0.557 ms over 40 trials
+Query times (ms): 0.07, 0.036, 0.025, 0.023, 0.023, 0.023, 0.023, 0.029, 0.023, 0.024, 0.023, 0.023, 0.023, 0.028, 0.023, 0.023, 0.023, 0.024, 0.023, 0.026, 0.023, 0.024, 0.023, 0.023, 0.024, 0.026, 0.023, 0.023, 0.024, 0.023, 0.023, 0.025, 0.024, 0.023, 0.023, 0.023, 0.024, 0.025, 0.024, 3.594
Preview of result: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c"
...
=========================
Performance tests for RemesPath (string operations)
=========================
-Compiling query "@[@[:].z =~ `(?i)[a-z]{5}`]" into took 2.975 +/- 17.954 microseconds over 40 trials
-To run pre-compiled query "@[@[:].z =~ `(?i)[a-z]{5}`]" on JNode from JSON of size 89556 into took 0.112 +/- 0.02 ms over 40 trials
-Query times (ms): 0.191, 0.165, 0.112, 0.114, 0.112, 0.116, 0.104, 0.111, 0.102, 0.107, 0.128, 0.113, 0.109, 0.111, 0.112, 0.111, 0.111, 0.113, 0.149, 0.112, 0.095, 0.098, 0.106, 0.098, 0.103, 0.107, 0.119, 0.106, 0.105, 0.103, 0.108, 0.123, 0.115, 0.116, 0.104, 0.121, 0.106, 0.111, 0.072, 0.064
+Compiling query "@[@[:].z =~ `(?i)[a-z]{5}`]" into took 2.068 +/- 12.431 microseconds over 40 trials
+To run pre-compiled query "@[@[:].z =~ `(?i)[a-z]{5}`]" on JNode from JSON of size 89556 into took 0.055 +/- 0.01 ms over 40 trials
+Query times (ms): 0.111, 0.055, 0.054, 0.054, 0.082, 0.054, 0.053, 0.054, 0.054, 0.053, 0.051, 0.052, 0.052, 0.052, 0.051, 0.052, 0.052, 0.052, 0.052, 0.051, 0.052, 0.051, 0.052, 0.052, 0.052, 0.052, 0.052, 0.053, 0.052, 0.053, 0.052, 0.053, 0.052, 0.052, 0.052, 0.052, 0.052, 0.053, 0.052, 0.052
Preview of result: [{"A": "\n]o1VQ5t6g", "a": 4710024278, "b": 3268860721, "B": "g4Y7+ew^.v", "C": "NK nmax_notq, `when q=true, nmax = ` + str(nmax_q), `when q=false, nmax= ` + str(nmax_notq))" into took 5.272 +/- 31.406 microseconds over 40 trials
+ifelse(nmax_q > nmax_notq, `when q=true, nmax = ` + str(nmax_q), `when q=false, nmax= ` + str(nmax_notq))" into took 4.99 +/- 29.866 microseconds over 40 trials
To run pre-compiled query "var qmask = @[:].q;
var nmax_q = max(@[qmask].n);
var nmax_notq = max(@[not qmask].n);
-ifelse(nmax_q > nmax_notq, `when q=true, nmax = ` + str(nmax_q), `when q=false, nmax= ` + str(nmax_notq))" on JNode from JSON of size 89556 into took 0.033 +/- 0.042 ms over 40 trials
-Query times (ms): 0.088, 0.027, 0.028, 0.025, 0.018, 0.048, 0.018, 0.017, 0.017, 0.287, 0.026, 0.026, 0.024, 0.025, 0.025, 0.023, 0.024, 0.025, 0.025, 0.032, 0.026, 0.016, 0.016, 0.016, 0.021, 0.023, 0.024, 0.04, 0.025, 0.025, 0.026, 0.025, 0.024, 0.026, 0.024, 0.025, 0.025, 0.025, 0.025, 0.026
+ifelse(nmax_q > nmax_notq, `when q=true, nmax = ` + str(nmax_q), `when q=false, nmax= ` + str(nmax_notq))" on JNode from JSON of size 89556 into took 0.025 +/- 0.031 ms over 40 trials
+Query times (ms): 0.076, 0.026, 0.028, 0.038, 0.024, 0.048, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.206, 0.031, 0.016, 0.016, 0.016, 0.015, 0.016, 0.016, 0.015, 0.016, 0.016, 0.016, 0.015, 0.016, 0.016, 0.016, 0.015, 0.015, 0.016, 0.015, 0.016
Preview of result: "when q=false, nmax= 9830935647.0"
...
=========================
@@ -267,11 +267,11 @@ Performance tests for RemesPath (references to compile-time constant variables)
Compiling query "var X = X;
var onetwo = j`[1, 2]`;
-@[:]->at(@, X)->at(@, onetwo)" into took 3.157 +/- 19.094 microseconds over 40 trials
+@[:]->at(@, X)->at(@, onetwo)" into took 2.65 +/- 15.941 microseconds over 40 trials
To run pre-compiled query "var X = X;
var onetwo = j`[1, 2]`;
-@[:]->at(@, X)->at(@, onetwo)" on JNode from JSON of size 89556 into took 0.016 +/- 0.01 ms over 40 trials
-Query times (ms): 0.054, 0.026, 0.016, 0.02, 0.013, 0.012, 0.013, 0.013, 0.015, 0.05, 0.028, 0.013, 0.012, 0.013, 0.039, 0.012, 0.013, 0.012, 0.013, 0.013, 0.012, 0.013, 0.013, 0.012, 0.013, 0.012, 0.013, 0.013, 0.012, 0.013, 0.013, 0.012, 0.013, 0.012, 0.013, 0.012, 0.012, 0.013, 0.013, 0.012
+@[:]->at(@, X)->at(@, onetwo)" on JNode from JSON of size 89556 into took 0.014 +/- 0.005 ms over 40 trials
+Query times (ms): 0.038, 0.013, 0.013, 0.012, 0.012, 0.012, 0.012, 0.012, 0.013, 0.03, 0.012, 0.012, 0.013, 0.012, 0.012, 0.013, 0.012, 0.013, 0.013, 0.012, 0.012, 0.012, 0.012, 0.013, 0.012, 0.013, 0.012, 0.012, 0.013, 0.012, 0.013, 0.013, 0.012, 0.013, 0.012, 0.013, 0.012, 0.012, 0.012, 0.012
Preview of result: [[1695727848, 0.287562638736685], [2126430375, 0.00767794129708177], [5310550656, 0.380769772645687], [2519183283, 0.153176220930558], [6610062385, 0.662996225870666], [987168256, 0.924410189999928], [6615003609, 0.917112691225947], [4465232046, 0.684311931851536], [8654414565, 0.631485392105992], [
...
=========================
@@ -280,29 +280,29 @@ Performance tests for RemesPath (references to variables that are not compile-ti
Compiling query "var X = @->`X`;
var onetwo = @{1, 2};
-@[:]->at(@, X)->at(@, onetwo)" into took 4.12 +/- 24.849 microseconds over 40 trials
+@[:]->at(@, X)->at(@, onetwo)" into took 2.662 +/- 15.939 microseconds over 40 trials
To run pre-compiled query "var X = @->`X`;
var onetwo = @{1, 2};
-@[:]->at(@, X)->at(@, onetwo)" on JNode from JSON of size 89556 into took 0.031 +/- 0.011 ms over 40 trials
-Query times (ms): 0.091, 0.029, 0.029, 0.028, 0.028, 0.04, 0.028, 0.058, 0.028, 0.028, 0.028, 0.028, 0.027, 0.028, 0.028, 0.027, 0.028, 0.028, 0.027, 0.028, 0.028, 0.028, 0.028, 0.028, 0.027, 0.029, 0.027, 0.028, 0.028, 0.028, 0.028, 0.034, 0.028, 0.027, 0.029, 0.028, 0.028, 0.028, 0.028, 0.027
+@[:]->at(@, X)->at(@, onetwo)" on JNode from JSON of size 89556 into took 0.017 +/- 0.005 ms over 40 trials
+Query times (ms): 0.051, 0.016, 0.016, 0.016, 0.015, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.015, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.015, 0.016, 0.016, 0.016, 0.016, 0.016, 0.015, 0.016, 0.016, 0.016, 0.016, 0.016, 0.016, 0.017, 0.017, 0.016, 0.016
Preview of result: [[1695727848, 0.287562638736685], [2126430375, 0.00767794129708177], [5310550656, 0.380769772645687], [2519183283, 0.153176220930558], [6610062385, 0.662996225870666], [987168256, 0.924410189999928], [6615003609, 0.917112691225947], [4465232046, 0.684311931851536], [8654414565, 0.631485392105992], [
...
=========================
Performance tests for RemesPath (simple string mutations)
=========================
-Compiling query "@[:].z = s_sub(@, g, B)" into took 2.535 +/- 15.319 microseconds over 40 trials
-To run pre-compiled query "@[:].z = s_sub(@, g, B)" on JNode from JSON of size 89556 into took 0.025 +/- 0.007 ms over 40 trials
-Query times (ms): 0.054, 0.025, 0.022, 0.022, 0.021, 0.024, 0.027, 0.026, 0.022, 0.031, 0.022, 0.02, 0.021, 0.021, 0.019, 0.024, 0.022, 0.023, 0.026, 0.023, 0.024, 0.023, 0.024, 0.03, 0.021, 0.024, 0.02, 0.02, 0.021, 0.02, 0.02, 0.035, 0.032, 0.035, 0.022, 0.028, 0.031, 0.032, 0.016, 0.015
+Compiling query "@[:].z = s_sub(@, g, B)" into took 1.79 +/- 10.842 microseconds over 40 trials
+To run pre-compiled query "@[:].z = s_sub(@, g, B)" on JNode from JSON of size 89556 into took 0.014 +/- 0.007 ms over 40 trials
+Query times (ms): 0.024, 0.011, 0.011, 0.01, 0.009, 0.01, 0.011, 0.01, 0.01, 0.01, 0.014, 0.013, 0.014, 0.013, 0.015, 0.012, 0.011, 0.012, 0.012, 0.01, 0.012, 0.011, 0.011, 0.011, 0.01, 0.01, 0.014, 0.013, 0.016, 0.01, 0.011, 0.011, 0.011, 0.011, 0.013, 0.044, 0.029, 0.025, 0.024, 0.015
Preview of result: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c"
...
=========================
Performance tests for RemesPath (simple number mutations)
=========================
-Compiling query "@[:].x = ifelse(@ < 0.5, @ + 3, @ - 3)" into took 2.815 +/- 16.955 microseconds over 40 trials
-To run pre-compiled query "@[:].x = ifelse(@ < 0.5, @ + 3, @ - 3)" on JNode from JSON of size 89556 into took 0.09 +/- 0.36 ms over 40 trials
-Query times (ms): 0.044, 0.029, 0.026, 0.024, 0.025, 0.026, 0.051, 0.034, 0.04, 0.027, 0.024, 0.027, 0.026, 0.026, 0.024, 0.023, 0.024, 0.024, 0.034, 0.032, 0.066, 0.044, 0.027, 0.026, 0.026, 0.024, 0.025, 0.025, 0.023, 0.024, 0.023, 0.024, 0.03, 0.088, 2.334, 0.047, 0.034, 0.038, 0.036, 0.035
+Compiling query "@[:].x = ifelse(@ < 0.5, @ + 3, @ - 3)" into took 18.682 +/- 116.032 microseconds over 40 trials
+To run pre-compiled query "@[:].x = ifelse(@ < 0.5, @ + 3, @ - 3)" on JNode from JSON of size 89556 into took 0.027 +/- 0.009 ms over 40 trials
+Query times (ms): 0.036, 0.022, 0.021, 0.021, 0.02, 0.021, 0.021, 0.02, 0.021, 0.02, 0.02, 0.02, 0.029, 0.025, 0.021, 0.042, 0.03, 0.057, 0.047, 0.029, 0.022, 0.021, 0.022, 0.021, 0.028, 0.027, 0.026, 0.021, 0.021, 0.02, 0.021, 0.042, 0.042, 0.038, 0.042, 0.026, 0.025, 0.027, 0.028, 0.025
Preview of result: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c"
...
=========================
@@ -312,12 +312,12 @@ Performance tests for RemesPath (mutations with a for loop)
Compiling query "var xhalf = @[:].x < 0.5;
for lx = zip(@[:].l, xhalf);
lx[0] = ifelse(lx[1], foo, bar);
-end for;" into took 6.272 +/- 38.195 microseconds over 40 trials
+end for;" into took 4.422 +/- 26.802 microseconds over 40 trials
To run pre-compiled query "var xhalf = @[:].x < 0.5;
for lx = zip(@[:].l, xhalf);
lx[0] = ifelse(lx[1], foo, bar);
-end for;" on JNode from JSON of size 89556 into took 0.064 +/- 0.023 ms over 40 trials
-Query times (ms): 0.092, 0.101, 0.116, 0.053, 0.063, 0.059, 0.087, 0.063, 0.062, 0.063, 0.064, 0.058, 0.057, 0.034, 0.038, 0.085, 0.085, 0.067, 0.062, 0.049, 0.044, 0.043, 0.043, 0.043, 0.041, 0.055, 0.07, 0.049, 0.05, 0.051, 0.049, 0.091, 0.068, 0.062, 0.061, 0.102, 0.14, 0.052, 0.038, 0.051
+end for;" on JNode from JSON of size 89556 into took 0.053 +/- 0.023 ms over 40 trials
+Query times (ms): 0.061, 0.038, 0.037, 0.037, 0.036, 0.036, 0.037, 0.035, 0.049, 0.09, 0.081, 0.055, 0.04, 0.039, 0.043, 0.044, 0.04, 0.041, 0.04, 0.04, 0.04, 0.042, 0.089, 0.066, 0.044, 0.043, 0.038, 0.044, 0.037, 0.034, 0.035, 0.141, 0.089, 0.06, 0.053, 0.056, 0.065, 0.071, 0.061, 0.099
Preview of result: [["bar", false], ["bar", false], ["foo", true], ["foo", true], ["foo", true], ["foo", true], ["foo", true], ["bar", false], ["bar", false], ["bar", false], ["foo", true], ["foo", true], ["bar", false], ["bar", false], ["foo", true], ["bar", false], ["bar", false], ["bar", false], ["foo", true], ["ba
...
=========================
@@ -326,18 +326,18 @@ Testing performance of JSON compression and pretty-printing
Preview of json: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c"
...
-To compress JNode from JSON string of 89556 took 3.984 +/- 0.471 ms over 64 trials (minimal whitespace, sort_keys=TRUE)
-To compress JNode from JSON string of 89556 took 2.148 +/- 0.475 ms over 64 trials (minimal whitespace, sort_keys=FALSE)
-To Google-style pretty-print JNode from JSON string of 89556 took 4.269 +/- 0.549 ms over 64 trials (sort_keys=true, indent=4)
-To Whitesmith-style pretty-print JNode from JSON string of 89556 took 4.328 +/- 0.448 ms over 64 trials (sort_keys=true, indent=4)
-To PPrint-style pretty-print JNode from JSON string of 89556 took 7.543 +/- 1.133 ms over 64 trials (sort_keys=true, indent=4)
+To compress JNode from JSON string of 89556 took 3.923 +/- 0.473 ms over 64 trials (minimal whitespace, sort_keys=TRUE)
+To compress JNode from JSON string of 89556 took 2.144 +/- 0.267 ms over 64 trials (minimal whitespace, sort_keys=FALSE)
+To Google-style pretty-print JNode from JSON string of 89556 took 4.823 +/- 0.912 ms over 64 trials (sort_keys=true, indent=4)
+To Whitesmith-style pretty-print JNode from JSON string of 89556 took 4.274 +/- 0.587 ms over 64 trials (sort_keys=true, indent=4)
+To PPrint-style pretty-print JNode from JSON string of 89556 took 6.174 +/- 0.485 ms over 64 trials (sort_keys=true, indent=4)
=========================
Testing performance of JsonSchemaValidator and random JSON creation
=========================
-To create a random set of tweet JSON of size 140467 (15 tweets) based on the matching schema took 6.966 +/- 3.393 ms over 64 trials
-To compile the tweet schema to a validation function took 0.232 +/- 0.057 ms over 64 trials
-To validate tweet JSON of size 140467 (15 tweets) based on the compiled schema took 1.13 +/- 0.276 ms over 64 trials
+To create a random set of tweet JSON of size 169566 (15 tweets) based on the matching schema took 6.868 +/- 3.266 ms over 64 trials
+To compile the tweet schema to a validation function took 0.389 +/- 0.786 ms over 64 trials
+To validate tweet JSON of size 169566 (15 tweets) based on the compiled schema took 1.064 +/- 0.172 ms over 64 trials
=========================
Testing JSON grepper's API request tool
=========================
|