difftastic 0.1.2-x86_64-darwin → 0.2.0-x86_64-darwin

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: 9a2b6b2f81cd13b44a4c81f0ffdd9cacd44ba01b26726136ee0a034008afd4dd
4
- data.tar.gz: 9ef30b217238d9fefd20ed439154286035a2a16899fd87896ef2ef8080dd0eec
3
+ metadata.gz: 49cf69106a9979f7f93f699124f5232902dc61af93e61c64b26919abd5a3ce6d
4
+ data.tar.gz: 9a6c9cccb7931d879caefc17b30c847c89d44fe1044a9e43e3a80c86f4c1d3fd
5
5
  SHA512:
6
- metadata.gz: 3910991e16a96f3a6d48b572491266fd0cbadce94b1d414c45432a1ef828ecfdb491874b35a3e05ba53c4972f23badaed62a903fb2d4ee7f3c59f076d1d6e860
7
- data.tar.gz: dd462c0d3375aef7f19aecf394fd254f8e86c78882a46443b95be1d6d8b1dd4468af81aa6a1cd16c8bbc8e5468af6777452fc046d9af0d2ab625e92edd869c17
6
+ metadata.gz: d803bb0650e155b79b6f37b8361a2b1bf98729c846c60ecbfa841bf54e6d3cd1e8b0efc4b347121abd1e892e9a23f8a60b7b9b0089485584306492ba3945a721
7
+ data.tar.gz: 0e5a3cede9611b810180f0330ce93ee5bb84a3f62f8d20fbb1024e08f88c4304abef04bcec56eef3343f62b89c86989ad485d58a6a10079abc0452abb9e68661
@@ -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: x86_64-darwin
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