canon 0.3.39 → 0.3.40
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7ceb43d90065cc39a64f8c74b6317dd9f8752aaa807ec7869ae3188c9e494b43
|
|
4
|
+
data.tar.gz: d6375f29977244331faff0d8dd54396d52494133d77e4286011804a63bd1d23f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bed4791632c2d75f6db4e89e5c991b05a92593fdfaa16d7b20c21dbf5be3070914b0b4214567e9ca3045db8f9d3a8312a218acca28574214d76d817ee09706fd
|
|
7
|
+
data.tar.gz: 0d3f8b7bad01bd3bd1e089f5488dac9cd23ca9761ab287ad3f5f0340e918262e5b4fcf63c4bb64ddb427e19c3e1bec878b0bef9aaf93b596c5a2a1f125dadd99
|
|
@@ -67,8 +67,8 @@ module Canon
|
|
|
67
67
|
output = []
|
|
68
68
|
|
|
69
69
|
# Detect non-ASCII characters
|
|
70
|
-
|
|
71
|
-
non_ascii
|
|
70
|
+
non_ascii = Legend.detect_non_ascii(doc1, @visualization_map)
|
|
71
|
+
non_ascii.merge!(Legend.detect_non_ascii(doc2, @visualization_map))
|
|
72
72
|
|
|
73
73
|
# Add Unicode legend if needed
|
|
74
74
|
unless non_ascii.empty?
|
|
@@ -19,8 +19,8 @@ module Canon
|
|
|
19
19
|
lines2 = doc2.split("\n", -1)
|
|
20
20
|
|
|
21
21
|
# Detect non-ASCII characters in the diff
|
|
22
|
-
|
|
23
|
-
non_ascii
|
|
22
|
+
non_ascii = Legend.detect_non_ascii(doc1, @visualization_map)
|
|
23
|
+
non_ascii.merge!(Legend.detect_non_ascii(doc2, @visualization_map))
|
|
24
24
|
|
|
25
25
|
# Add Unicode legend if any non-ASCII characters detected
|
|
26
26
|
unless non_ascii.empty?
|
|
@@ -72,9 +72,11 @@ module Canon
|
|
|
72
72
|
|
|
73
73
|
output = []
|
|
74
74
|
|
|
75
|
-
# Detect non-ASCII characters
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
# Detect non-ASCII characters — scan the source strings
|
|
76
|
+
# directly; joining the split lines back into one document
|
|
77
|
+
# per render was pure garbage.
|
|
78
|
+
non_ascii = Legend.detect_non_ascii(doc1, @visualization_map)
|
|
79
|
+
non_ascii.merge!(Legend.detect_non_ascii(doc2, @visualization_map))
|
|
78
80
|
|
|
79
81
|
# Add Unicode legend if needed
|
|
80
82
|
unless non_ascii.empty?
|
data/lib/canon/version.rb
CHANGED
|
@@ -225,6 +225,13 @@ compare_against: nil)
|
|
|
225
225
|
failure_means: "Slow formatting affects serialization performance. C14N is critical for digital signatures and XML canonicalization.",
|
|
226
226
|
compare_against: "Previous branch (main).",
|
|
227
227
|
},
|
|
228
|
+
by_line_rendering: {
|
|
229
|
+
name: "By-Line Rendering",
|
|
230
|
+
icon: "🖨️",
|
|
231
|
+
description: "Verbose by_line diff rendering (enricher, line builder, formatters). Referees the #86 rendering lane.",
|
|
232
|
+
failure_means: "Slow diff display affects developer-facing CLI output and CI failure reports.",
|
|
233
|
+
compare_against: "Previous branch (main). Inputs: documents with scattered value differences.",
|
|
234
|
+
},
|
|
228
235
|
data_comparison: {
|
|
229
236
|
name: "Data Comparison",
|
|
230
237
|
icon: "🧮",
|
|
@@ -272,6 +279,9 @@ compare_against: nil)
|
|
|
272
279
|
{ name: "JSON", method: :json_format, desc: "JSON formatting" },
|
|
273
280
|
{ name: "YAML", method: :yaml_format, desc: "YAML formatting" },
|
|
274
281
|
],
|
|
282
|
+
by_line_rendering: [
|
|
283
|
+
{ name: "XML", method: :by_line_render_xml, desc: "by_line XML render" },
|
|
284
|
+
],
|
|
275
285
|
data_comparison: [
|
|
276
286
|
{ name: "JSON", method: :json_compare_equivalent,
|
|
277
287
|
desc: "JSON equivalence" },
|
|
@@ -568,6 +578,18 @@ compare_against: nil)
|
|
|
568
578
|
yaml = DataGenerator.generate_yaml(items: @items)
|
|
569
579
|
data = YAML.safe_load(yaml, permitted_classes: [Time])
|
|
570
580
|
measure { Canon.format_yaml(data) }
|
|
581
|
+
when :by_line_render_xml
|
|
582
|
+
xml1 = DataGenerator.generate_xml(items: @items)
|
|
583
|
+
xml2 = DataGenerator.generate_xml(items: @items)
|
|
584
|
+
formatter = Canon::DiffFormatter.new(mode: :by_line,
|
|
585
|
+
display_preprocessing: :pretty_print,
|
|
586
|
+
use_color: false)
|
|
587
|
+
result = Canon::Comparison.equivalent?(xml1, xml2, format: :xml,
|
|
588
|
+
verbose: true)
|
|
589
|
+
measure do
|
|
590
|
+
formatter.format(result.differences, :xml,
|
|
591
|
+
doc1: xml1, doc2: xml2)
|
|
592
|
+
end
|
|
571
593
|
when :json_compare_equivalent
|
|
572
594
|
json1 = DataGenerator.generate_json(items: @items)
|
|
573
595
|
json2 = DataGenerator.generate_json(items: @items)
|