yeptris 0.6.26.2-powerpc64le-linux → 0.6.28.3-powerpc64le-linux
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.
- checksums.yaml +4 -4
- data/ext/yeptris_native/json_ruby.c +21 -4
- data/lib/yeptris/3.4/native.so +0 -0
- data/lib/yeptris/psych.rb +16 -2
- data/lib/yeptris/valueml.rb +18 -3
- data/lib/yeptris.rb +1 -1
- data/libyeptris.so +0 -0
- data/vendor/libyeptris/CMakeLists.txt +1 -1
- data/vendor/libyeptris/src/yeptris/dom/ytape.c +1382 -19
- data/vendor/libyeptris/src/yeptris/dom/ytape.h +20 -1
- data/vendor/libyeptris/src/yeptris/parse.c +26 -2
- data/vendor/libyeptris/src/yeptris/scan/json.c +10 -7
- data/vendor/libyeptris/src/yeptris/tape.c +724 -395
- data/vendor/libyeptris/src/yeptris/tape_in.h +2 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 59a8ac563b8b1a5e4d9e97616e3b4c1c0721d9d53daf10d2cb03d42513207948
|
|
4
|
+
data.tar.gz: 6a4d565c878be41e836a80e720b71d52e5a94ca859d4ca0afaa476c3aa0ae6e2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '05963ff7cae99604b9e7bff9cd3aeccb73a921f4d228a72e2f26d7058191a7f5809dd64d7bd4de8704f9a8e2935077187e96e07b5ed44503f602eac03f711f3a'
|
|
7
|
+
data.tar.gz: 50eb9480d3f33a3168cb527cd6ef4c63fdc83651ea43b457d160b99be0e25fcc3ed076a686f2fca444fc0739dd0810d0e7fe0ed0a5f3d45f01d61ee3575a481b
|
|
@@ -320,15 +320,32 @@ void yep_rb_set_gc_mode(int mode) {
|
|
|
320
320
|
#include <time.h>
|
|
321
321
|
|
|
322
322
|
|
|
323
|
+
/* portable monotonic seconds: clock_gettime macro-expands to Ruby's
|
|
324
|
+
* rb_w32_clock_gettime on mingw toolchains, which the windows-11-arm
|
|
325
|
+
* Ruby does not export (undefined symbol at link) */
|
|
326
|
+
#ifdef _WIN32
|
|
327
|
+
#include <windows.h>
|
|
328
|
+
static double yep_now_s(void) {
|
|
329
|
+
LARGE_INTEGER c, f;
|
|
330
|
+
QueryPerformanceCounter(&c);
|
|
331
|
+
QueryPerformanceFrequency(&f);
|
|
332
|
+
return (double)c.QuadPart / (double)f.QuadPart;
|
|
333
|
+
}
|
|
334
|
+
#else
|
|
335
|
+
static double yep_now_s(void) {
|
|
336
|
+
struct timespec t;
|
|
337
|
+
clock_gettime(CLOCK_MONOTONIC, &t);
|
|
338
|
+
return (double)t.tv_sec + (double)t.tv_nsec / 1e9;
|
|
339
|
+
}
|
|
340
|
+
#endif
|
|
341
|
+
|
|
323
342
|
double yep_rb_scan_time(const char* p, size_t len, int n) {
|
|
324
343
|
static const YeptrisVisitVTable none = {0};
|
|
325
|
-
|
|
326
|
-
clock_gettime(CLOCK_MONOTONIC, &t0);
|
|
344
|
+
double s0 = yep_now_s();
|
|
327
345
|
for (int i = 0; i < n; i++) {
|
|
328
346
|
(void)yeptris_visit_json(p, len, &none, NULL);
|
|
329
347
|
}
|
|
330
|
-
|
|
331
|
-
return (double)(t1.tv_sec - t0.tv_sec) + (double)(t1.tv_nsec - t0.tv_nsec) / 1e9;
|
|
348
|
+
return yep_now_s() - s0;
|
|
332
349
|
}
|
|
333
350
|
|
|
334
351
|
VALUE yep_rb_parse_json(const char* p, size_t len, int strict_dup) {
|
data/lib/yeptris/3.4/native.so
CHANGED
|
Binary file
|
data/lib/yeptris/psych.rb
CHANGED
|
@@ -182,12 +182,26 @@ module Yeptris
|
|
|
182
182
|
Visitors::ToRuby.visit(tree.children.first)
|
|
183
183
|
end
|
|
184
184
|
|
|
185
|
-
def
|
|
185
|
+
def deep_symbolize_keys(obj)
|
|
186
|
+
case obj
|
|
187
|
+
when Hash
|
|
188
|
+
obj.each_with_object({}) do |(k, v), out|
|
|
189
|
+
out[k.is_a?(String) ? k.to_sym : k] = deep_symbolize_keys(v)
|
|
190
|
+
end
|
|
191
|
+
when Array then obj.map { |v| deep_symbolize_keys(v) }
|
|
192
|
+
else obj
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def safe_load(yaml, permitted_classes: [::Date, ::Time], aliases: false,
|
|
197
|
+
symbolize_names: false, **)
|
|
186
198
|
begin
|
|
187
199
|
doc = Yeptris::Document.parse(yaml, schema: :compat_11)
|
|
188
200
|
return nil if doc.nil? # the legal empty stream
|
|
189
201
|
|
|
190
|
-
force_utf8_scalars(walk_safe(doc.root(0), permitted_classes, aliases))
|
|
202
|
+
res = force_utf8_scalars(walk_safe(doc.root(0), permitted_classes, aliases))
|
|
203
|
+
res = deep_symbolize_keys(res) if symbolize_names
|
|
204
|
+
res
|
|
191
205
|
rescue ::Yeptris::ParseError => e
|
|
192
206
|
doc&.free unless doc&.freed?
|
|
193
207
|
translate_parse_error(e)
|
data/lib/yeptris/valueml.rb
CHANGED
|
@@ -242,7 +242,13 @@ module Yeptris
|
|
|
242
242
|
pending_key.pop
|
|
243
243
|
pending_key_tag.pop
|
|
244
244
|
target = merge_target.pop
|
|
245
|
-
|
|
245
|
+
if target
|
|
246
|
+
if closed.is_a?(Hash) || (closed.is_a?(Array) && closed.all? { |e| e.is_a?(Hash) })
|
|
247
|
+
Materializer.merge_into(target, closed)
|
|
248
|
+
else
|
|
249
|
+
target["<<"] = closed # Psych keeps non-mergeable merge values literally
|
|
250
|
+
end
|
|
251
|
+
end
|
|
246
252
|
when DOC
|
|
247
253
|
docs.push(nil)
|
|
248
254
|
when ALIAS
|
|
@@ -402,7 +408,13 @@ module Yeptris
|
|
|
402
408
|
pending_key.pop
|
|
403
409
|
pending_key_tag.pop
|
|
404
410
|
target = merge_target.pop
|
|
405
|
-
|
|
411
|
+
if target
|
|
412
|
+
if closed.is_a?(Hash) || (closed.is_a?(Array) && closed.all? { |e| e.is_a?(Hash) })
|
|
413
|
+
Materializer.merge_into(target, closed)
|
|
414
|
+
else
|
|
415
|
+
target["<<"] = closed # Psych keeps non-mergeable merge values literally
|
|
416
|
+
end
|
|
417
|
+
end
|
|
406
418
|
when DOC
|
|
407
419
|
docs.push(nil)
|
|
408
420
|
when ALIAS
|
|
@@ -442,9 +454,12 @@ module Yeptris
|
|
|
442
454
|
if key == "<<" && pending_key_tag[-1] == 9 # TAG_MERGE
|
|
443
455
|
if (v.is_a?(Hash) || v.is_a?(Array)) && v.empty?
|
|
444
456
|
parent # deferred: contents arrive after the open
|
|
445
|
-
|
|
457
|
+
elsif v.is_a?(Hash) || (v.is_a?(Array) && v.all? { |e| e.is_a?(Hash) })
|
|
446
458
|
Materializer.merge_into(parent, v)
|
|
447
459
|
nil
|
|
460
|
+
else
|
|
461
|
+
parent["<<"] = v # Psych keeps non-mergeable merge values literally
|
|
462
|
+
nil
|
|
448
463
|
end
|
|
449
464
|
else
|
|
450
465
|
parent[key] = v
|
data/lib/yeptris.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module Yeptris
|
|
4
4
|
# The gem's version lives in the parent namespace's file — the last
|
|
5
5
|
# internal require (yeptris/version) retired with it.
|
|
6
|
-
VERSION = "0.6.
|
|
6
|
+
VERSION = "0.6.28.3".freeze
|
|
7
7
|
|
|
8
8
|
# Informational notices are OPT-IN (yeptris-ruby#217): consumers
|
|
9
9
|
# embed yeptris inside CLIs that assert clean stderr, and a
|
data/libyeptris.so
CHANGED
|
Binary file
|