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

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: 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