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: 6b65514ddc21b35416e7856a21f17f084cde6f6176a0f84dd8ee03a3ec7c8604
4
- data.tar.gz: e6390a45d84dc78708aa3f043f053c41bba8b68c30170b11a58282581365c09d
3
+ metadata.gz: 7ceb43d90065cc39a64f8c74b6317dd9f8752aaa807ec7869ae3188c9e494b43
4
+ data.tar.gz: d6375f29977244331faff0d8dd54396d52494133d77e4286011804a63bd1d23f
5
5
  SHA512:
6
- metadata.gz: 338db190efc246cb7a23f06b4a6f3dc620e969e3029cc2384f52bf8b082f6903dd21883b29316bcff676bb36f446e1fcad8cab434d8590f40b57a32a6d56baca
7
- data.tar.gz: 602303bc515970ac9085e1a5184d8684604b80c5047d65cc3bf6bb6aa2854fdce1bd9eb3a61b4ee8e0f0c74f3f347d63d62133c9e8df93b51d146eca67807da9
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
- all_text = (lines1 + lines2).join
71
- non_ascii = Legend.detect_non_ascii(all_text, @visualization_map)
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
- all_text = (lines1 + lines2).join
23
- non_ascii = Legend.detect_non_ascii(all_text, @visualization_map)
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
- all_text = (lines1 + lines2).join
77
- non_ascii = Legend.detect_non_ascii(all_text, @visualization_map)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Canon
4
- VERSION = "0.3.39"
4
+ VERSION = "0.3.40"
5
5
  end
@@ -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)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.39
4
+ version: 0.3.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.