difftastic 0.1.2-arm64-linux → 0.2.0-arm64-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f8cbb936322c76af988d7bf714f2d8f31c51bad304ca669365e5aff37b8982c
4
- data.tar.gz: 886a81849018435199ec93c5b35d7e703cdd47bac8836eab74736441b74ad858
3
+ metadata.gz: 0fbc3be8dce0e1ad37c492d70b4c3cdd0eec404fe1f14c4e19c4472054615e47
4
+ data.tar.gz: 163b287be87e5eecbc874b8440bdd1fe515ce3507e1c6ead4a48c96a4ef79734
5
5
  SHA512:
6
- metadata.gz: dac982dbb4b2fc13ad6c6e2c857735c9e9983c5eb187a16466bc855ff248b176b64afd1ff9b2187adec15f0005521193122afce7f47ea7a1970f37752bd676bf
7
- data.tar.gz: ecb237465ed4aa8581c39ed41c264f9afbfa284417ebbafd4b58735481dbe2191f5b061c44f76b74f8b0fe545f15dc43fc0414e47e1e92217e70338c50b563bb
6
+ metadata.gz: f0291a0e6c2218e20f80e3ca8f64a2aeccf3b462afc12a5f9c9050a0c1bfbcab3f665ad3dd66ddf4b80acb2444a7ac63f3fd97727b322d0d5f73564085c23ece
7
+ data.tar.gz: 0d5e96e597675ebdb80fbbda152ad6fdc80393aa74324d2fa4f4d3d5a87d5930310e3d2f0165a184b441e94ac6427053f5f9b7a85ededc7179fb4b56a21baa62
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Difftastic
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/difftastic.rb CHANGED
@@ -71,57 +71,73 @@ module Difftastic
71
71
  exe_file
72
72
  end
73
73
 
74
- def self.pretty(object, buffer: +"", indent: 0)
74
+ def self.pretty(object, indent: 0, indent_width: 2, max_width: 80, indentation_bytes: "\t")
75
75
  case object
76
76
  when Hash
77
- buffer << "{\n"
77
+ buffer = +"{\n"
78
78
  indent += 1
79
79
  object.each do |key, value|
80
80
  buffer << (" " * indent)
81
- pretty(key, buffer:, indent:)
81
+ buffer << pretty(key, indent:)
82
82
  buffer << " => "
83
- pretty(value, buffer:, indent:)
83
+ buffer << pretty(value, indent:)
84
84
  buffer << ",\n"
85
85
  end
86
86
  indent -= 1
87
87
  buffer << (" " * indent)
88
88
  buffer << "}"
89
89
  when Array
90
- buffer << "[\n"
91
- indent += 1
92
- object.each do |value|
93
- buffer << (" " * indent)
94
- pretty(value, buffer:, indent:)
95
- buffer << ",\n"
90
+ new_lines = false
91
+ length = 0
92
+ items = object.map do |item|
93
+ pretty_item = pretty(item, indent: indent + 1)
94
+ new_lines = true if pretty_item.include?("\n")
95
+ length += pretty_item.bytesize
96
+ pretty_item
97
+ end
98
+
99
+ if new_lines || length > max_width - (indent * indent_width)
100
+ "[\n#{indentation_bytes * (indent + 1)}#{items.join(",\n#{indentation_bytes * (indent + 1)}")},\n#{indentation_bytes * indent}]"
101
+ else
102
+ "[#{items.join(', ')}]"
96
103
  end
97
- indent -= 1
98
- buffer << (" " * indent)
99
- buffer << "]"
100
104
  when Set
101
- buffer << "Set[\n"
102
- indent += 1
103
- object.to_a.sort!.each do |value|
104
- buffer << (" " * indent)
105
- pretty(value, buffer:, indent:)
106
- buffer << ",\n"
105
+ new_lines = false
106
+ length = 0
107
+ items = object.to_a.sort!.map do |item|
108
+ pretty_item = pretty(item, indent: indent + 1)
109
+ new_lines = true if pretty_item.include?("\n")
110
+ length += pretty_item.bytesize
111
+ pretty_item
107
112
  end
108
- indent -= 1
109
- buffer << (" " * indent)
110
- buffer << "]"
113
+
114
+ if new_lines || length > max_width - (indent * indent_width)
115
+ "Set[\n#{indentation_bytes * (indent + 1)}#{items.join(",\n#{indentation_bytes * (indent + 1)}")},\n#{indentation_bytes * indent}]"
116
+ else
117
+ "Set[#{items.join(', ')}]"
118
+ end
119
+ when Module
120
+ object.name
111
121
  when Symbol, String, Integer, Float, Regexp, Range, Rational, Complex, true, false, nil
112
- buffer << object.inspect
122
+ object.inspect
113
123
  else
114
- buffer << "#{object.class.name}(\n"
115
- indent += 1
116
- object.instance_variables.each do |name|
124
+ buffer = +""
125
+ instance_variables = object.instance_variables
126
+ if instance_variables.length > 0
127
+ buffer << "#{object.class.name}(\n"
128
+ indent += 1
129
+ object.instance_variables.each do |name|
130
+ buffer << (" " * indent)
131
+ buffer << ":#{name} => "
132
+ buffer << pretty(object.instance_variable_get(name), indent:)
133
+ buffer << ",\n"
134
+ end
135
+ indent -= 1
117
136
  buffer << (" " * indent)
118
- buffer << ":#{name} => "
119
- pretty(object.instance_variable_get(name), buffer:, indent:)
120
- buffer << ",\n"
137
+ buffer << ")"
138
+ else
139
+ buffer << "#{object.class.name}()"
121
140
  end
122
- indent -= 1
123
- buffer << (" " * indent)
124
- buffer << ")"
125
141
  end
126
142
  end
127
143
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: difftastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: arm64-linux
6
6
  authors:
7
7
  - Joel Drapper
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-01-22 00:00:00.000000000 Z
10
+ date: 2025-01-23 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  email:
13
13
  - joel@drapper.me