awesome_print 1.7.0 → 1.8.0
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 +4 -4
- data/.gitignore +3 -0
- data/Appraisals +11 -0
- data/CHANGELOG.md +10 -0
- data/CONTRIBUTING.md +1 -1
- data/README.md +47 -38
- data/Rakefile +5 -5
- data/lib/ap.rb +2 -2
- data/lib/awesome_print.rb +18 -17
- data/lib/awesome_print/colorize.rb +1 -1
- data/lib/awesome_print/core_ext/{array.rb → awesome_method_array.rb} +16 -18
- data/lib/awesome_print/core_ext/class.rb +3 -2
- data/lib/awesome_print/core_ext/kernel.rb +1 -1
- data/lib/awesome_print/core_ext/logger.rb +1 -1
- data/lib/awesome_print/core_ext/method.rb +2 -2
- data/lib/awesome_print/core_ext/object.rb +3 -2
- data/lib/awesome_print/core_ext/string.rb +3 -3
- data/lib/awesome_print/custom_defaults.rb +57 -0
- data/lib/awesome_print/ext/action_view.rb +8 -4
- data/lib/awesome_print/ext/active_record.rb +19 -11
- data/lib/awesome_print/ext/active_support.rb +1 -1
- data/lib/awesome_print/ext/mongo_mapper.rb +16 -13
- data/lib/awesome_print/ext/mongoid.rb +8 -6
- data/lib/awesome_print/ext/nobrainer.rb +8 -5
- data/lib/awesome_print/ext/nokogiri.rb +4 -4
- data/lib/awesome_print/ext/ostruct.rb +1 -1
- data/lib/awesome_print/ext/ripple.rb +5 -6
- data/lib/awesome_print/ext/sequel.rb +7 -6
- data/lib/awesome_print/formatter.rb +11 -19
- data/lib/awesome_print/formatters.rb +15 -0
- data/lib/awesome_print/formatters/array_formatter.rb +108 -42
- data/lib/awesome_print/formatters/base_formatter.rb +13 -11
- data/lib/awesome_print/formatters/class_formatter.rb +2 -1
- data/lib/awesome_print/formatters/dir_formatter.rb +1 -1
- data/lib/awesome_print/formatters/file_formatter.rb +1 -1
- data/lib/awesome_print/formatters/hash_formatter.rb +74 -22
- data/lib/awesome_print/formatters/object_formatter.rb +9 -14
- data/lib/awesome_print/formatters/struct_formatter.rb +71 -0
- data/lib/awesome_print/inspector.rb +77 -93
- data/lib/awesome_print/version.rb +2 -2
- data/spec/active_record_helper.rb +8 -2
- data/spec/colors_spec.rb +30 -30
- data/spec/core_ext/logger_spec.rb +43 -0
- data/spec/core_ext/string_spec.rb +20 -0
- data/spec/ext/action_view_spec.rb +18 -0
- data/spec/ext/active_record_spec.rb +252 -0
- data/spec/ext/active_support_spec.rb +26 -0
- data/spec/ext/mongo_mapper_spec.rb +261 -0
- data/spec/ext/mongoid_spec.rb +104 -0
- data/spec/ext/nobrainer_spec.rb +59 -0
- data/spec/ext/nokogiri_spec.rb +46 -0
- data/spec/ext/ostruct_spec.rb +22 -0
- data/spec/ext/ripple_spec.rb +48 -0
- data/spec/formats_spec.rb +193 -165
- data/spec/methods_spec.rb +116 -128
- data/spec/misc_spec.rb +104 -108
- data/spec/objects_spec.rb +70 -28
- data/spec/spec_helper.rb +27 -10
- data/spec/support/active_record_data.rb +20 -0
- data/spec/support/active_record_data/3_2_diana.txt +24 -0
- data/spec/support/active_record_data/3_2_diana_legacy.txt +24 -0
- data/spec/support/active_record_data/3_2_multi.txt +50 -0
- data/spec/support/active_record_data/3_2_multi_legacy.txt +50 -0
- data/spec/support/active_record_data/4_0_diana.txt +98 -0
- data/spec/support/active_record_data/4_0_multi.txt +198 -0
- data/spec/support/active_record_data/4_1_diana.txt +97 -0
- data/spec/support/active_record_data/4_1_multi.txt +196 -0
- data/spec/support/active_record_data/4_2_diana.txt +109 -0
- data/spec/support/active_record_data/4_2_diana_legacy.txt +109 -0
- data/spec/support/active_record_data/4_2_multi.txt +220 -0
- data/spec/support/active_record_data/4_2_multi_legacy.txt +220 -0
- data/spec/support/active_record_data/5_0_diana.txt +105 -0
- data/spec/support/active_record_data/5_0_multi.txt +212 -0
- data/spec/support/ext_verifier.rb +42 -0
- data/spec/support/mongoid_versions.rb +22 -0
- data/spec/support/rails_versions.rb +35 -0
- metadata +79 -4
data/spec/misc_spec.rb
CHANGED
@@ -1,47 +1,43 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe
|
3
|
+
RSpec.describe 'AwesomePrint' do
|
4
4
|
|
5
|
-
describe
|
6
|
-
|
7
|
-
stub_dotfile!
|
8
|
-
end
|
9
|
-
|
10
|
-
it "handle weird objects that return nil on inspect" do
|
5
|
+
describe 'Misc' do
|
6
|
+
it 'handle weird objects that return nil on inspect' do
|
11
7
|
weird = Class.new do
|
12
8
|
def inspect
|
13
9
|
nil
|
14
10
|
end
|
15
11
|
end
|
16
|
-
expect(weird.new.ai(:
|
12
|
+
expect(weird.new.ai(plain: true)).to eq('')
|
17
13
|
end
|
18
14
|
|
19
|
-
it
|
15
|
+
it 'handle frozen object.inspect' do
|
20
16
|
weird = Class.new do
|
21
17
|
def inspect
|
22
|
-
|
18
|
+
'ice'.freeze
|
23
19
|
end
|
24
20
|
end
|
25
|
-
expect(weird.new.ai(:
|
21
|
+
expect(weird.new.ai(plain: false)).to eq('ice')
|
26
22
|
end
|
27
23
|
|
28
|
-
# See https://github.com/
|
29
|
-
it
|
30
|
-
hash = {
|
24
|
+
# See https://github.com/awesome-print/awesome_print/issues/35
|
25
|
+
it 'handle array grep when pattern contains / chapacter' do
|
26
|
+
hash = { '1/x' => 1, '2//x' => :"2" }
|
31
27
|
grepped = hash.keys.sort.grep(/^(\d+)\//) { $1 }
|
32
|
-
expect(grepped.ai(:
|
28
|
+
expect(grepped.ai(plain: true, multiline: false)).to eq('[ "1", "2" ]')
|
33
29
|
end
|
34
30
|
|
35
|
-
# See https://github.com/
|
36
|
-
if RUBY_VERSION >=
|
31
|
+
# See https://github.com/awesome-print/awesome_print/issues/85
|
32
|
+
if RUBY_VERSION >= '1.8.7'
|
37
33
|
it "handle array grep when a method is defined in C and thus doesn't have a binding" do
|
38
34
|
arr = (0..6).to_a
|
39
35
|
grepped = arr.grep(1..4, &:succ)
|
40
|
-
expect(grepped.ai(:
|
36
|
+
expect(grepped.ai(plain: true, multiline: false)).to eq('[ 2, 3, 4, 5 ]')
|
41
37
|
end
|
42
38
|
end
|
43
39
|
|
44
|
-
it
|
40
|
+
it 'returns value passed as a parameter' do
|
45
41
|
object = rand
|
46
42
|
allow(self).to receive(:puts)
|
47
43
|
expect(ap object).to eq(object)
|
@@ -53,20 +49,20 @@ RSpec.describe "AwesomePrint" do
|
|
53
49
|
expect { rand.ai }.not_to raise_error
|
54
50
|
end
|
55
51
|
|
56
|
-
it
|
57
|
-
expect(ENV.ai(:
|
52
|
+
it 'format ENV as hash' do
|
53
|
+
expect(ENV.ai(plain: true)).to eq(ENV.to_hash.ai(plain: true))
|
58
54
|
expect(ENV.ai).to eq(ENV.to_hash.ai)
|
59
55
|
end
|
60
56
|
|
61
|
-
# See https://github.com/
|
62
|
-
it
|
63
|
-
require
|
64
|
-
ipaddr = IPAddr.new(
|
65
|
-
expect(ipaddr.ai).to eq(
|
57
|
+
# See https://github.com/awesome-print/awesome_print/issues/134
|
58
|
+
it 'IPAddr workaround' do
|
59
|
+
require 'ipaddr'
|
60
|
+
ipaddr = IPAddr.new('3ffe:505:2::1')
|
61
|
+
expect(ipaddr.ai).to eq('#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>')
|
66
62
|
end
|
67
63
|
|
68
|
-
# See https://github.com/
|
69
|
-
it
|
64
|
+
# See https://github.com/awesome-print/awesome_print/issues/139
|
65
|
+
it 'Object that overrides == and expects the :id method' do
|
70
66
|
weird = Class.new do
|
71
67
|
# Raises NoMethodError: undefined method `id' when "other" is nil or ENV.
|
72
68
|
def ==(other)
|
@@ -79,87 +75,75 @@ RSpec.describe "AwesomePrint" do
|
|
79
75
|
end
|
80
76
|
|
81
77
|
#------------------------------------------------------------------------------
|
82
|
-
describe
|
83
|
-
|
84
|
-
stub_dotfile!
|
85
|
-
end
|
86
|
-
|
87
|
-
it "wraps ap output with plain <pre> tag" do
|
78
|
+
describe 'HTML output' do
|
79
|
+
it 'wraps ap output with plain <pre> tag' do
|
88
80
|
markup = rand
|
89
|
-
expect(markup.ai(:
|
81
|
+
expect(markup.ai(html: true, plain: true)).to eq("<pre>#{markup}</pre>")
|
90
82
|
end
|
91
83
|
|
92
|
-
it
|
84
|
+
it 'wraps ap output with <pre> tag with colorized <kbd>' do
|
93
85
|
markup = rand
|
94
|
-
expect(markup.ai(:
|
86
|
+
expect(markup.ai(html: true)).to eq(%Q|<pre><kbd style="color:blue">#{markup}</kbd></pre>|)
|
95
87
|
end
|
96
88
|
|
97
|
-
it
|
98
|
-
markup = [
|
99
|
-
expect(markup.ai(:
|
100
|
-
<pre>[
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
]</pre>
|
105
|
-
EOS
|
89
|
+
it 'wraps multiline ap output with <pre> tag with colorized <kbd>' do
|
90
|
+
markup = [1, :two, 'three']
|
91
|
+
expect(markup.ai(html: true)).to eq <<-EOS.strip_heredoc.strip
|
92
|
+
<pre>[
|
93
|
+
<kbd style="color:white">[0] </kbd><kbd style="color:blue">1</kbd>,
|
94
|
+
<kbd style="color:white">[1] </kbd><kbd style="color:darkcyan">:two</kbd>,
|
95
|
+
<kbd style="color:white">[2] </kbd><kbd style="color:brown">"three"</kbd>
|
96
|
+
]</pre>
|
97
|
+
EOS
|
106
98
|
end
|
107
99
|
|
108
|
-
it
|
109
|
-
markup = [
|
110
|
-
expect(markup.ai(:
|
111
|
-
<pre>[
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
]</pre>
|
116
|
-
|
100
|
+
it 'wraps hash ap output with only an outer <pre> tag' do
|
101
|
+
markup = [{ 'hello' => 'world' }]
|
102
|
+
expect(markup.ai(html: true)).to eq <<-EOS.strip_heredoc.strip
|
103
|
+
<pre>[
|
104
|
+
<kbd style="color:white">[0] </kbd>{
|
105
|
+
"hello"<kbd style="color:slategray"> => </kbd><kbd style="color:brown">"world"</kbd>
|
106
|
+
}
|
107
|
+
]</pre>
|
108
|
+
EOS
|
117
109
|
end
|
118
110
|
|
119
|
-
it
|
111
|
+
it 'encodes HTML entities (plain)' do
|
120
112
|
markup = ' &<hello>'
|
121
|
-
expect(markup.ai(:
|
113
|
+
expect(markup.ai(html: true, plain: true)).to eq('<pre>" &<hello>"</pre>')
|
122
114
|
end
|
123
115
|
|
124
|
-
it
|
116
|
+
it 'encodes HTML entities (color)' do
|
125
117
|
markup = ' &<hello>'
|
126
|
-
expect(markup.ai(:
|
118
|
+
expect(markup.ai(html: true)).to eq('<pre><kbd style="color:brown">" &<hello>"</kbd></pre>')
|
127
119
|
end
|
128
120
|
end
|
129
121
|
|
130
122
|
#------------------------------------------------------------------------------
|
131
|
-
describe
|
132
|
-
before do
|
133
|
-
stub_dotfile!
|
134
|
-
end
|
135
|
-
|
123
|
+
describe 'AwesomePrint.defaults' do
|
136
124
|
after do
|
137
125
|
AwesomePrint.defaults = nil
|
138
126
|
end
|
139
127
|
|
140
|
-
# See https://github.com/
|
141
|
-
it
|
142
|
-
AwesomePrint.defaults = { :
|
143
|
-
hash = { [0, 0, 255] => :yellow, :red =>
|
144
|
-
out = hash.ai(:
|
145
|
-
expect(out).to eq <<-EOS.strip
|
146
|
-
{
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
}
|
151
|
-
EOS
|
128
|
+
# See https://github.com/awesome-print/awesome_print/issues/98
|
129
|
+
it 'should properly merge the defaults' do
|
130
|
+
AwesomePrint.defaults = { indent: -2, sort_keys: true }
|
131
|
+
hash = { [0, 0, 255] => :yellow, :red => 'rgb(255, 0, 0)', 'magenta' => 'rgb(255, 0, 255)' }
|
132
|
+
out = hash.ai(plain: true)
|
133
|
+
expect(out).to eq <<-EOS.strip_heredoc.strip
|
134
|
+
{
|
135
|
+
[ 0, 0, 255 ] => :yellow,
|
136
|
+
"magenta" => "rgb(255, 0, 255)",
|
137
|
+
:red => "rgb(255, 0, 0)"
|
138
|
+
}
|
139
|
+
EOS
|
152
140
|
end
|
153
141
|
end
|
154
142
|
|
155
143
|
#------------------------------------------------------------------------------
|
156
|
-
describe
|
157
|
-
before do
|
158
|
-
stub_dotfile!
|
159
|
-
end
|
160
|
-
|
144
|
+
describe 'Coexistence with the colorize gem' do
|
161
145
|
before do # Redefine String#red just like colorize gem does it.
|
162
|
-
@awesome_method =
|
146
|
+
@awesome_method = ''.method(:red)
|
163
147
|
|
164
148
|
String.instance_eval do
|
165
149
|
define_method :red do # Method arity is now 0 in Ruby 1.9+.
|
@@ -175,76 +159,88 @@ EOS
|
|
175
159
|
end
|
176
160
|
end
|
177
161
|
|
178
|
-
it
|
179
|
-
out =
|
180
|
-
if RUBY_VERSION >=
|
162
|
+
it 'shoud not raise ArgumentError when formatting HTML' do
|
163
|
+
out = 'hello'.ai(color: { string: :red }, html: true)
|
164
|
+
if RUBY_VERSION >= '1.9'
|
181
165
|
expect(out).to eq(%Q|<pre>[red]<kbd style="color:red">"hello"</kbd>[/red]</pre>|)
|
182
166
|
else
|
183
167
|
expect(out).to eq(%Q|<pre>[red]"hello"[/red]</pre>|)
|
184
168
|
end
|
185
169
|
end
|
186
170
|
|
187
|
-
it
|
188
|
-
out =
|
171
|
+
it 'shoud not raise ArgumentError when formatting HTML (shade color)' do
|
172
|
+
out = 'hello'.ai(color: { string: :redish }, html: true)
|
189
173
|
expect(out).to eq(%Q|<pre><kbd style="color:darkred">"hello"</kbd></pre>|)
|
190
174
|
end
|
191
175
|
|
192
|
-
it
|
193
|
-
out =
|
176
|
+
it 'shoud not raise ArgumentError when formatting non-HTML' do
|
177
|
+
out = 'hello'.ai(color: { string: :red }, html: false)
|
194
178
|
expect(out).to eq(%Q|[red]"hello"[/red]|)
|
195
179
|
end
|
196
180
|
|
197
|
-
it
|
198
|
-
out =
|
181
|
+
it 'shoud not raise ArgumentError when formatting non-HTML (shade color)' do
|
182
|
+
out = 'hello'.ai(color: { string: :redish }, html: false)
|
199
183
|
expect(out).to eq(%Q|\e[0;31m"hello"\e[0m|)
|
200
184
|
end
|
201
185
|
end
|
202
186
|
|
203
187
|
#------------------------------------------------------------------------------
|
204
|
-
describe
|
205
|
-
it
|
188
|
+
describe 'Console' do
|
189
|
+
it 'should detect IRB' do
|
206
190
|
class IRB; end
|
207
191
|
ENV.delete('RAILS_ENV')
|
208
192
|
expect(AwesomePrint.console?).to eq(true)
|
209
193
|
expect(AwesomePrint.rails_console?).to eq(false)
|
210
|
-
Object.instance_eval{ remove_const :IRB }
|
194
|
+
Object.instance_eval { remove_const :IRB }
|
211
195
|
end
|
212
196
|
|
213
|
-
it
|
197
|
+
it 'should detect Pry' do
|
214
198
|
class Pry; end
|
215
199
|
ENV.delete('RAILS_ENV')
|
216
200
|
expect(AwesomePrint.console?).to eq(true)
|
217
201
|
expect(AwesomePrint.rails_console?).to eq(false)
|
218
|
-
Object.instance_eval{ remove_const :Pry }
|
202
|
+
Object.instance_eval { remove_const :Pry }
|
219
203
|
end
|
220
204
|
|
221
|
-
it
|
205
|
+
it 'should detect Rails::Console' do
|
222
206
|
class IRB; end
|
223
207
|
module Rails; class Console; end; end
|
224
208
|
expect(AwesomePrint.console?).to eq(true)
|
225
209
|
expect(AwesomePrint.rails_console?).to eq(true)
|
226
|
-
Object.instance_eval{ remove_const :IRB }
|
227
|
-
Object.instance_eval{ remove_const :Rails }
|
210
|
+
Object.instance_eval { remove_const :IRB }
|
211
|
+
Object.instance_eval { remove_const :Rails }
|
228
212
|
end
|
229
213
|
|
230
214
|
it "should detect ENV['RAILS_ENV']" do
|
231
215
|
class Pry; end
|
232
|
-
ENV[
|
216
|
+
ENV['RAILS_ENV'] = 'development'
|
233
217
|
expect(AwesomePrint.console?).to eq(true)
|
234
218
|
expect(AwesomePrint.rails_console?).to eq(true)
|
235
|
-
Object.instance_eval{ remove_const :Pry }
|
219
|
+
Object.instance_eval { remove_const :Pry }
|
236
220
|
end
|
237
221
|
|
238
|
-
it
|
239
|
-
expect(capture! { ap([
|
240
|
-
expect(capture! { ap({ :
|
222
|
+
it 'should return the actual object when *not* running under console' do
|
223
|
+
expect(capture! { ap([1, 2, 3]) }).to eq([1, 2, 3])
|
224
|
+
expect(capture! { ap({ a: 1 }) }).to eq({ a: 1 })
|
241
225
|
end
|
242
226
|
|
243
|
-
it
|
227
|
+
it 'should return nil when running under console' do
|
244
228
|
class IRB; end
|
245
|
-
expect(capture! { ap([
|
246
|
-
expect(capture! { ap({ :
|
247
|
-
Object.instance_eval{ remove_const :IRB }
|
229
|
+
expect(capture! { ap([1, 2, 3]) }).to eq(nil)
|
230
|
+
expect(capture! { ap({ a: 1 }) }).to eq(nil)
|
231
|
+
Object.instance_eval { remove_const :IRB }
|
232
|
+
end
|
233
|
+
|
234
|
+
it 'handles NoMethodError on IRB implicit #ai' do
|
235
|
+
module IRB; class Irb; end; end
|
236
|
+
irb_context = double('irb_context', last_value: BasicObject.new)
|
237
|
+
IRB.define_singleton_method :version, -> { 'test_version' }
|
238
|
+
irb = IRB::Irb.new
|
239
|
+
irb.instance_eval { @context = irb_context }
|
240
|
+
AwesomePrint.irb!
|
241
|
+
expect(irb).to receive(:puts).with("(Object doesn't support #ai)")
|
242
|
+
expect { irb.output_value }.to_not raise_error
|
243
|
+
Object.instance_eval { remove_const :IRB }
|
248
244
|
end
|
249
245
|
end
|
250
246
|
end
|
data/spec/objects_spec.rb
CHANGED
@@ -1,28 +1,26 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
RSpec.describe
|
4
|
-
before do
|
5
|
-
stub_dotfile!
|
6
|
-
end
|
7
|
-
|
3
|
+
RSpec.describe 'Objects' do
|
8
4
|
after do
|
9
|
-
Object.instance_eval{ remove_const :Hello } if defined?(Hello)
|
5
|
+
Object.instance_eval { remove_const :Hello } if defined?(Hello)
|
10
6
|
end
|
11
7
|
|
12
|
-
describe
|
13
|
-
it
|
8
|
+
describe 'Formatting an object' do
|
9
|
+
it 'attributes' do
|
14
10
|
class Hello
|
15
11
|
attr_reader :abra
|
16
12
|
attr_writer :ca
|
17
13
|
attr_accessor :dabra
|
18
14
|
|
19
15
|
def initialize
|
20
|
-
@abra
|
16
|
+
@abra = 1
|
17
|
+
@ca = 2
|
18
|
+
@dabra = 3
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
24
22
|
hello = Hello.new
|
25
|
-
out = hello.ai(:
|
23
|
+
out = hello.ai(plain: true, raw: true)
|
26
24
|
str = <<-EOS.strip
|
27
25
|
#<Hello:placeholder_id
|
28
26
|
attr_accessor :dabra = 3,
|
@@ -31,18 +29,20 @@ RSpec.describe "Objects" do
|
|
31
29
|
>
|
32
30
|
EOS
|
33
31
|
expect(out).to be_similar_to(str)
|
34
|
-
expect(hello.ai(:
|
32
|
+
expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
|
35
33
|
end
|
36
34
|
|
37
|
-
it
|
35
|
+
it 'instance variables' do
|
38
36
|
class Hello
|
39
37
|
def initialize
|
40
|
-
@abra
|
38
|
+
@abra = 1
|
39
|
+
@ca = 2
|
40
|
+
@dabra = 3
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
hello = Hello.new
|
45
|
-
out = hello.ai(:
|
45
|
+
out = hello.ai(plain: true, raw: true)
|
46
46
|
str = <<-EOS.strip
|
47
47
|
#<Hello:placeholder_id
|
48
48
|
@abra = 1,
|
@@ -51,23 +51,27 @@ EOS
|
|
51
51
|
>
|
52
52
|
EOS
|
53
53
|
expect(out).to be_similar_to(str)
|
54
|
-
expect(hello.ai(:
|
54
|
+
expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
|
55
55
|
end
|
56
56
|
|
57
|
-
it
|
57
|
+
it 'attributes and instance variables' do
|
58
58
|
class Hello
|
59
59
|
attr_reader :abra
|
60
60
|
attr_writer :ca
|
61
61
|
attr_accessor :dabra
|
62
62
|
|
63
63
|
def initialize
|
64
|
-
@abra
|
65
|
-
@
|
64
|
+
@abra = 1
|
65
|
+
@ca = 2
|
66
|
+
@dabra = 3
|
67
|
+
@scooby = 3
|
68
|
+
@dooby = 2
|
69
|
+
@doo = 1
|
66
70
|
end
|
67
71
|
end
|
68
72
|
|
69
73
|
hello = Hello.new
|
70
|
-
out = hello.ai(:
|
74
|
+
out = hello.ai(plain: true, raw: true)
|
71
75
|
str = <<-EOS.strip
|
72
76
|
#<Hello:placeholder_id
|
73
77
|
@doo = 1,
|
@@ -79,22 +83,23 @@ EOS
|
|
79
83
|
>
|
80
84
|
EOS
|
81
85
|
expect(out).to be_similar_to(str)
|
82
|
-
expect(hello.ai(:
|
86
|
+
expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
|
83
87
|
end
|
84
88
|
|
85
|
-
it
|
89
|
+
it 'without the plain options print the colorized values' do
|
86
90
|
class Hello
|
87
91
|
attr_reader :abra
|
88
92
|
attr_writer :ca
|
89
93
|
|
90
94
|
def initialize
|
91
|
-
@abra
|
95
|
+
@abra = 1
|
96
|
+
@ca = 2
|
92
97
|
@dabra = 3
|
93
98
|
end
|
94
99
|
end
|
95
100
|
|
96
101
|
hello = Hello.new
|
97
|
-
out = hello.ai(:
|
102
|
+
out = hello.ai(raw: true)
|
98
103
|
str = <<-EOS.strip
|
99
104
|
#<Hello:placeholder_id
|
100
105
|
\e[0;36m@dabra\e[0m\e[0;37m = \e[0m\e[1;34m3\e[0m,
|
@@ -103,27 +108,64 @@ EOS
|
|
103
108
|
>
|
104
109
|
EOS
|
105
110
|
expect(out).to be_similar_to(str)
|
106
|
-
expect(hello.ai(:
|
111
|
+
expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
|
107
112
|
end
|
108
113
|
|
109
|
-
it
|
114
|
+
it 'with multine as false show inline values' do
|
110
115
|
class Hello
|
111
116
|
attr_reader :abra
|
112
117
|
attr_writer :ca
|
113
118
|
|
114
119
|
def initialize
|
115
|
-
@abra
|
120
|
+
@abra = 1
|
121
|
+
@ca = 2
|
116
122
|
@dabra = 3
|
117
123
|
end
|
118
124
|
end
|
119
125
|
|
120
126
|
hello = Hello.new
|
121
|
-
out = hello.ai(:
|
127
|
+
out = hello.ai(multiline: false, plain: true, raw: true)
|
122
128
|
str = <<-EOS.strip
|
123
129
|
#<Hello:placeholder_id @dabra = 3, attr_reader :abra = 1, attr_writer :ca = 2>
|
124
130
|
EOS
|
125
131
|
expect(out).to be_similar_to(str)
|
126
|
-
expect(hello.ai(:
|
132
|
+
expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'without the sort_vars option does not sort instance variables' do
|
136
|
+
class Hello
|
137
|
+
attr_reader :abra
|
138
|
+
attr_writer :ca
|
139
|
+
attr_accessor :dabra
|
140
|
+
|
141
|
+
def initialize
|
142
|
+
@abra = 1
|
143
|
+
@ca = 2
|
144
|
+
@dabra = 3
|
145
|
+
@scooby = 3
|
146
|
+
@dooby = 2
|
147
|
+
@doo = 1
|
148
|
+
end
|
149
|
+
|
150
|
+
def instance_variables
|
151
|
+
[:@scooby, :@dooby, :@doo, :@abra, :@ca, :@dabra]
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
hello = Hello.new
|
156
|
+
out = hello.ai(plain: true, raw: true, sort_vars: false)
|
157
|
+
str = <<-EOS.strip
|
158
|
+
#<Hello:placeholder_id
|
159
|
+
@scooby = 3,
|
160
|
+
@dooby = 2,
|
161
|
+
@doo = 1,
|
162
|
+
attr_reader :abra = 1,
|
163
|
+
attr_writer :ca = 2,
|
164
|
+
attr_accessor :dabra = 3
|
165
|
+
>
|
166
|
+
EOS
|
167
|
+
expect(out).to be_similar_to(str)
|
168
|
+
expect(hello.ai(plain: true, raw: false)).to eq(hello.inspect)
|
127
169
|
end
|
128
170
|
end
|
129
171
|
end
|