difftastic 0.1.2-arm64-darwin → 0.2.0-arm64-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: 379884c537a7c6975c08612648f7b0ddd6542f717165aa062468191546d48a38
4
- data.tar.gz: 314e80b578fb78a2ebaa4553e555bd4bda3be3b43940b1e4631d5a11693fc0a9
3
+ metadata.gz: 10c96ba68b00ad12dec90a68806251d374fae9ae1191dec58a770176fc2a8dc8
4
+ data.tar.gz: 265e46d0ce8716cbca17e96a6222fffa1963b93f6700a3a42c8cd08b7bfe553b
5
5
  SHA512:
6
- metadata.gz: 1b71d10300eb129c9c283103c6e592cae34449e2485f5527b15ceeb36d135467cdcbe5a810b3b48eefa827fe2f6c0e0931e406028de11f1dee6b1ddb0dcd9877
7
- data.tar.gz: 7e775bdf1ffd3360e15068e72424e94e2c85d4a1507db158895cca54949e7748251f187906ac688c9f8fb81c0443c2abcb726589f5454cf2a18a826562781c05
6
+ metadata.gz: 950c1bbb3daa1eda9cc5a0c3f2af60cf40b2b8f3f98a26a3e4278ae4b86a4551d36744e3373e0b781fce520ea37bf44b5e74b7619366e88c83a249c1934f1661
7
+ data.tar.gz: bbeae867ea8c460428f10f639056605074966a806448761c9edfed3969fc8e80bd86df90cfe75c13f49e2dd6e81751abd594a536b1228c0511fa8b796fed456b
@@ -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-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