awesome_print 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/Appraisals +11 -0
  4. data/CHANGELOG.md +10 -0
  5. data/CONTRIBUTING.md +1 -1
  6. data/README.md +47 -38
  7. data/Rakefile +5 -5
  8. data/lib/ap.rb +2 -2
  9. data/lib/awesome_print.rb +18 -17
  10. data/lib/awesome_print/colorize.rb +1 -1
  11. data/lib/awesome_print/core_ext/{array.rb → awesome_method_array.rb} +16 -18
  12. data/lib/awesome_print/core_ext/class.rb +3 -2
  13. data/lib/awesome_print/core_ext/kernel.rb +1 -1
  14. data/lib/awesome_print/core_ext/logger.rb +1 -1
  15. data/lib/awesome_print/core_ext/method.rb +2 -2
  16. data/lib/awesome_print/core_ext/object.rb +3 -2
  17. data/lib/awesome_print/core_ext/string.rb +3 -3
  18. data/lib/awesome_print/custom_defaults.rb +57 -0
  19. data/lib/awesome_print/ext/action_view.rb +8 -4
  20. data/lib/awesome_print/ext/active_record.rb +19 -11
  21. data/lib/awesome_print/ext/active_support.rb +1 -1
  22. data/lib/awesome_print/ext/mongo_mapper.rb +16 -13
  23. data/lib/awesome_print/ext/mongoid.rb +8 -6
  24. data/lib/awesome_print/ext/nobrainer.rb +8 -5
  25. data/lib/awesome_print/ext/nokogiri.rb +4 -4
  26. data/lib/awesome_print/ext/ostruct.rb +1 -1
  27. data/lib/awesome_print/ext/ripple.rb +5 -6
  28. data/lib/awesome_print/ext/sequel.rb +7 -6
  29. data/lib/awesome_print/formatter.rb +11 -19
  30. data/lib/awesome_print/formatters.rb +15 -0
  31. data/lib/awesome_print/formatters/array_formatter.rb +108 -42
  32. data/lib/awesome_print/formatters/base_formatter.rb +13 -11
  33. data/lib/awesome_print/formatters/class_formatter.rb +2 -1
  34. data/lib/awesome_print/formatters/dir_formatter.rb +1 -1
  35. data/lib/awesome_print/formatters/file_formatter.rb +1 -1
  36. data/lib/awesome_print/formatters/hash_formatter.rb +74 -22
  37. data/lib/awesome_print/formatters/object_formatter.rb +9 -14
  38. data/lib/awesome_print/formatters/struct_formatter.rb +71 -0
  39. data/lib/awesome_print/inspector.rb +77 -93
  40. data/lib/awesome_print/version.rb +2 -2
  41. data/spec/active_record_helper.rb +8 -2
  42. data/spec/colors_spec.rb +30 -30
  43. data/spec/core_ext/logger_spec.rb +43 -0
  44. data/spec/core_ext/string_spec.rb +20 -0
  45. data/spec/ext/action_view_spec.rb +18 -0
  46. data/spec/ext/active_record_spec.rb +252 -0
  47. data/spec/ext/active_support_spec.rb +26 -0
  48. data/spec/ext/mongo_mapper_spec.rb +261 -0
  49. data/spec/ext/mongoid_spec.rb +104 -0
  50. data/spec/ext/nobrainer_spec.rb +59 -0
  51. data/spec/ext/nokogiri_spec.rb +46 -0
  52. data/spec/ext/ostruct_spec.rb +22 -0
  53. data/spec/ext/ripple_spec.rb +48 -0
  54. data/spec/formats_spec.rb +193 -165
  55. data/spec/methods_spec.rb +116 -128
  56. data/spec/misc_spec.rb +104 -108
  57. data/spec/objects_spec.rb +70 -28
  58. data/spec/spec_helper.rb +27 -10
  59. data/spec/support/active_record_data.rb +20 -0
  60. data/spec/support/active_record_data/3_2_diana.txt +24 -0
  61. data/spec/support/active_record_data/3_2_diana_legacy.txt +24 -0
  62. data/spec/support/active_record_data/3_2_multi.txt +50 -0
  63. data/spec/support/active_record_data/3_2_multi_legacy.txt +50 -0
  64. data/spec/support/active_record_data/4_0_diana.txt +98 -0
  65. data/spec/support/active_record_data/4_0_multi.txt +198 -0
  66. data/spec/support/active_record_data/4_1_diana.txt +97 -0
  67. data/spec/support/active_record_data/4_1_multi.txt +196 -0
  68. data/spec/support/active_record_data/4_2_diana.txt +109 -0
  69. data/spec/support/active_record_data/4_2_diana_legacy.txt +109 -0
  70. data/spec/support/active_record_data/4_2_multi.txt +220 -0
  71. data/spec/support/active_record_data/4_2_multi_legacy.txt +220 -0
  72. data/spec/support/active_record_data/5_0_diana.txt +105 -0
  73. data/spec/support/active_record_data/5_0_multi.txt +212 -0
  74. data/spec/support/ext_verifier.rb +42 -0
  75. data/spec/support/mongoid_versions.rb +22 -0
  76. data/spec/support/rails_versions.rb +35 -0
  77. metadata +79 -4
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'AwesomePrint/Mongoid', skip: -> { !ExtVerifier.has_mongoid? }.call do
4
+
5
+ if ExtVerifier.has_mongoid?
6
+ before :all do
7
+ class MongoUser
8
+ include Mongoid::Document
9
+
10
+ field :first_name, type: String
11
+ field :last_name, type: String
12
+ end
13
+ end
14
+
15
+ after :all do
16
+ Object.instance_eval { remove_const :MongoUser }
17
+ Object.instance_eval { remove_const :Chamelion }
18
+ end
19
+ end
20
+
21
+ before do
22
+ @ap = AwesomePrint::Inspector.new plain: true, sort_keys: true
23
+ end
24
+
25
+ it 'should print class instance' do
26
+ user = MongoUser.new first_name: 'Al', last_name: 'Capone'
27
+ out = @ap.send :awesome, user
28
+
29
+ object_id = user.id.inspect
30
+ str = <<-EOS.strip
31
+ #<MongoUser:placeholder_id> {
32
+ :_id => #{object_id},
33
+ :first_name => "Al",
34
+ :last_name => "Capone"
35
+ }
36
+ EOS
37
+ expect(out).to be_similar_to(str, { skip_bson: true })
38
+ end
39
+
40
+ it 'should print the class' do
41
+ class_spec = if mongoid_3_0?
42
+ <<-EOS.strip
43
+ class MongoUser < Object {
44
+ :_id => :"moped/bson/object_id",
45
+ :_type => :string,
46
+ :first_name => :string,
47
+ :last_name => :string
48
+ }
49
+ EOS
50
+ elsif mongoid_3_1?
51
+ <<-EOS.strip
52
+ class MongoUser < Object {
53
+ :_id => :"moped/bson/object_id",
54
+ :first_name => :string,
55
+ :last_name => :string
56
+ }
57
+ EOS
58
+ elsif mongoid_4_0?
59
+ <<-EOS.strip
60
+ class MongoUser < Object {
61
+ :_id => :"bson/object_id",
62
+ :first_name => :string,
63
+ :last_name => :string
64
+ }
65
+ EOS
66
+ end
67
+
68
+ expect(@ap.send(:awesome, MongoUser)).to eq class_spec
69
+ end
70
+
71
+ it 'should print the class when type is undefined' do
72
+ class Chamelion
73
+ include Mongoid::Document
74
+ field :last_attribute
75
+ end
76
+
77
+ class_spec = if mongoid_3_0?
78
+ <<-EOS.strip
79
+ class Chamelion < Object {
80
+ :_id => :"moped/bson/object_id",
81
+ :_type => :string,
82
+ :last_attribute => :object
83
+ }
84
+ EOS
85
+ elsif mongoid_3_1?
86
+ <<-EOS.strip
87
+ class Chamelion < Object {
88
+ :_id => :"moped/bson/object_id",
89
+ :last_attribute => :object
90
+ }
91
+ EOS
92
+ elsif mongoid_4_0?
93
+ <<-EOS.strip
94
+ class Chamelion < Object {
95
+ :_id => :"bson/object_id",
96
+ :last_attribute => :object
97
+ }
98
+ EOS
99
+ end
100
+
101
+
102
+ expect(@ap.send(:awesome, Chamelion)).to eq class_spec
103
+ end
104
+ end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'AwesomePrint/NoBrainer', skip: -> { !ExtVerifier.has_nobrainer? }.call do
4
+
5
+ if ExtVerifier.has_nobrainer?
6
+ before :all do
7
+ NoBrainer.configure do |config|
8
+ config.app_name = 'ap_test'
9
+ config.environment = :test
10
+ end
11
+ end
12
+
13
+ before :all do
14
+ class SomeModel
15
+ include NoBrainer::Document
16
+
17
+ field :first_name, type: String
18
+ field :last_name, type: String
19
+ field :some_field
20
+ end
21
+ end
22
+
23
+ after :all do
24
+ Object.instance_eval { remove_const :SomeModel }
25
+ end
26
+ end
27
+
28
+ before do
29
+ @ap = AwesomePrint::Inspector.new plain: true
30
+ end
31
+
32
+ it 'should print class instance' do
33
+ user = SomeModel.new first_name: 'Al', last_name: 'Capone'
34
+ out = @ap.send :awesome, user
35
+
36
+ object_id = user.id.inspect
37
+ str = <<-EOS.strip
38
+ #<SomeModel id: #{object_id}> {
39
+ :id => #{object_id},
40
+ :first_name => "Al",
41
+ :last_name => "Capone"
42
+ }
43
+ EOS
44
+ expect(out).to eq(str)
45
+ end
46
+
47
+ it 'should print the class' do
48
+ class_spec = <<-EOS.strip
49
+ class SomeModel < Object {
50
+ :id => :string,
51
+ :first_name => :string,
52
+ :last_name => :string,
53
+ :some_field => :object
54
+ }
55
+ EOS
56
+
57
+ expect(@ap.send(:awesome, SomeModel)).to eq class_spec
58
+ end
59
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'AwesomePrint/Nokogiri' do
4
+ it 'should colorize tags' do
5
+ xml = Nokogiri::XML('<html><body><h1></h1></body></html>')
6
+ expect(xml.ai).to eq <<-EOS
7
+ <?xml version=\"1.0\"?>\e[1;32m
8
+ \e[0m<\e[1;36mhtml\e[0m>\e[1;32m
9
+ \e[0m<\e[1;36mbody\e[0m>\e[1;32m
10
+ \e[0m<\e[1;36mh1\e[0m/>\e[1;32m
11
+ \e[0m<\e[1;36m/body\e[0m>\e[1;32m
12
+ \e[0m<\e[1;36m/html\e[0m>
13
+ EOS
14
+ end
15
+
16
+ it 'should colorize contents' do
17
+ xml = Nokogiri::XML('<html><body><h1>Hello</h1></body></html>')
18
+ expect(xml.ai).to eq <<-EOS
19
+ <?xml version=\"1.0\"?>\e[1;32m
20
+ \e[0m<\e[1;36mhtml\e[0m>\e[1;32m
21
+ \e[0m<\e[1;36mbody\e[0m>\e[1;32m
22
+ \e[0m<\e[1;36mh1\e[0m>\e[1;32mHello\e[0m<\e[1;36m/h1\e[0m>\e[1;32m
23
+ \e[0m<\e[1;36m/body\e[0m>\e[1;32m
24
+ \e[0m<\e[1;36m/html\e[0m>
25
+ EOS
26
+ end
27
+
28
+ it 'should colorize class and id' do
29
+ xml = Nokogiri::XML('<html><body><h1><span id="hello" class="world"></span></h1></body></html>')
30
+ expect(xml.ai).to eq <<-EOS
31
+ <?xml version=\"1.0\"?>\e[1;32m
32
+ \e[0m<\e[1;36mhtml\e[0m>\e[1;32m
33
+ \e[0m<\e[1;36mbody\e[0m>\e[1;32m
34
+ \e[0m<\e[1;36mh1\e[0m>\e[1;32m
35
+ \e[0m<\e[1;36mspan\e[0m \e[1;33mid=\"hello\"\e[0m \e[1;33mclass=\"world\"\e[0m/>\e[1;32m
36
+ \e[0m<\e[1;36m/h1\e[0m>\e[1;32m
37
+ \e[0m<\e[1;36m/body\e[0m>\e[1;32m
38
+ \e[0m<\e[1;36m/html\e[0m>
39
+ EOS
40
+ end
41
+
42
+ it 'handle empty NodeSet' do
43
+ xml = Nokogiri::XML::NodeSet.new(Nokogiri::XML(''))
44
+ expect(xml.ai).to eq('[]')
45
+ end
46
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'AwesomePrint Ostruct extension' do
4
+ before do
5
+ @ap = AwesomePrint::Inspector.new(plain: true, sort_keys: true)
6
+ end
7
+
8
+ it 'empty hash' do
9
+ struct = OpenStruct.new
10
+ expect(@ap.send(:awesome, struct)).to eq('OpenStruct {}')
11
+ end
12
+
13
+ it 'plain multiline' do
14
+ struct = OpenStruct.new name: 'Foo', address: 'Bar'
15
+ expect(@ap.send(:awesome, struct)).to eq <<-EOS.strip
16
+ OpenStruct {
17
+ :address => "Bar",
18
+ :name => "Foo"
19
+ }
20
+ EOS
21
+ end
22
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe 'AwesomePrint/Ripple', skip: -> { !ExtVerifier.has_ripple? }.call do
4
+
5
+ if ExtVerifier.has_ripple?
6
+ before :all do
7
+ class RippleUser
8
+ include Ripple::Document
9
+
10
+ key_on :_id
11
+ property :_id, String
12
+ property :first_name, String
13
+ property :last_name, String
14
+ end
15
+ end
16
+
17
+ after :all do
18
+ Object.instance_eval { remove_const :RippleUser }
19
+ end
20
+ end
21
+
22
+ before do
23
+ @ap = AwesomePrint::Inspector.new plain: true, sort_keys: true
24
+ end
25
+
26
+ it 'should print class instance' do
27
+ user = RippleUser.new _id: '12345', first_name: 'Al', last_name: 'Capone'
28
+ out = @ap.send :awesome, user
29
+
30
+ expect(out).to be_similar_to <<-EOS.strip
31
+ #<RippleUser:placeholder_id> {
32
+ :_id => "12345",
33
+ :first_name => "Al",
34
+ :last_name => "Capone"
35
+ }
36
+ EOS
37
+ end
38
+
39
+ it 'should print the class' do
40
+ expect(@ap.send(:awesome, RippleUser)).to eq <<-EOS.strip
41
+ class RippleUser < Object {
42
+ :_id => :string,
43
+ :first_name => :string,
44
+ :last_name => :string
45
+ }
46
+ EOS
47
+ end
48
+ end
@@ -1,24 +1,20 @@
1
1
  require 'spec_helper'
2
- require "bigdecimal"
3
- require "rational"
4
- require "set"
2
+ require 'bigdecimal'
3
+ require 'rational'
4
+ require 'set'
5
5
 
6
- RSpec.describe "AwesomePrint" do
7
- before do
8
- stub_dotfile!
9
- end
10
-
11
- describe "Array" do
6
+ RSpec.describe 'AwesomePrint' do
7
+ describe 'Array' do
12
8
  before do
13
- @arr = [ 1, :two, "three", [ nil, [ true, false] ] ]
9
+ @arr = [1, :two, 'three', [nil, [true, false]]]
14
10
  end
15
11
 
16
- it "empty array" do
17
- expect([].ai).to eq("[]")
12
+ it 'empty array' do
13
+ expect([].ai).to eq('[]')
18
14
  end
19
15
 
20
- it "plain multiline" do
21
- expect(@arr.ai(:plain => true)).to eq <<-EOS.strip
16
+ it 'plain multiline' do
17
+ expect(@arr.ai(plain: true)).to eq <<-EOS.strip
22
18
  [
23
19
  [0] 1,
24
20
  [1] :two,
@@ -34,8 +30,8 @@ RSpec.describe "AwesomePrint" do
34
30
  EOS
35
31
  end
36
32
 
37
- it "plain multiline without index" do
38
- expect(@arr.ai(:plain => true, :index => false)).to eq <<-EOS.strip
33
+ it 'plain multiline without index' do
34
+ expect(@arr.ai(plain: true, index: false)).to eq <<-EOS.strip
39
35
  [
40
36
  1,
41
37
  :two,
@@ -51,8 +47,8 @@ EOS
51
47
  EOS
52
48
  end
53
49
 
54
- it "plain multiline indented" do
55
- expect(@arr.ai(:plain => true, :indent => 2)).to eq <<-EOS.strip
50
+ it 'plain multiline indented' do
51
+ expect(@arr.ai(plain: true, indent: 2)).to eq <<-EOS.strip
56
52
  [
57
53
  [0] 1,
58
54
  [1] :two,
@@ -68,8 +64,8 @@ EOS
68
64
  EOS
69
65
  end
70
66
 
71
- it "plain multiline indented without index" do
72
- expect(@arr.ai(:plain => true, :indent => 2, :index => false)).to eq <<-EOS.strip
67
+ it 'plain multiline indented without index' do
68
+ expect(@arr.ai(plain: true, indent: 2, index: false)).to eq <<-EOS.strip
73
69
  [
74
70
  1,
75
71
  :two,
@@ -85,11 +81,11 @@ EOS
85
81
  EOS
86
82
  end
87
83
 
88
- it "plain single line" do
89
- expect(@arr.ai(:plain => true, :multiline => false)).to eq('[ 1, :two, "three", [ nil, [ true, false ] ] ]')
84
+ it 'plain single line' do
85
+ expect(@arr.ai(plain: true, multiline: false)).to eq('[ 1, :two, "three", [ nil, [ true, false ] ] ]')
90
86
  end
91
87
 
92
- it "colored multiline (default)" do
88
+ it 'colored multiline (default)' do
93
89
  expect(@arr.ai).to eq <<-EOS.strip
94
90
  [
95
91
  \e[1;37m[0] \e[0m\e[1;34m1\e[0m,
@@ -106,8 +102,8 @@ EOS
106
102
  EOS
107
103
  end
108
104
 
109
- it "colored multiline indented" do
110
- expect(@arr.ai(:indent => 8)).to eq <<-EOS.strip
105
+ it 'colored multiline indented' do
106
+ expect(@arr.ai(indent: 8)).to eq <<-EOS.strip
111
107
  [
112
108
  \e[1;37m[0] \e[0m\e[1;34m1\e[0m,
113
109
  \e[1;37m[1] \e[0m\e[0;36m:two\e[0m,
@@ -123,20 +119,20 @@ EOS
123
119
  EOS
124
120
  end
125
121
 
126
- it "colored single line" do
127
- expect(@arr.ai(:multiline => false)).to eq("[ \e[1;34m1\e[0m, \e[0;36m:two\e[0m, \e[0;33m\"three\"\e[0m, [ \e[1;31mnil\e[0m, [ \e[1;32mtrue\e[0m, \e[1;31mfalse\e[0m ] ] ]")
122
+ it 'colored single line' do
123
+ expect(@arr.ai(multiline: false)).to eq("[ \e[1;34m1\e[0m, \e[0;36m:two\e[0m, \e[0;33m\"three\"\e[0m, [ \e[1;31mnil\e[0m, [ \e[1;32mtrue\e[0m, \e[1;31mfalse\e[0m ] ] ]")
128
124
  end
129
125
  end
130
126
 
131
127
  #------------------------------------------------------------------------------
132
- describe "Nested Array" do
128
+ describe 'Nested Array' do
133
129
  before do
134
- @arr = [ 1, 2 ]
130
+ @arr = [1, 2]
135
131
  @arr << @arr
136
132
  end
137
133
 
138
- it "plain multiline" do
139
- expect(@arr.ai(:plain => true)).to eq <<-EOS.strip
134
+ it 'plain multiline' do
135
+ expect(@arr.ai(plain: true)).to eq <<-EOS.strip
140
136
  [
141
137
  [0] 1,
142
138
  [1] 2,
@@ -145,8 +141,8 @@ EOS
145
141
  EOS
146
142
  end
147
143
 
148
- it "plain multiline without index" do
149
- expect(@arr.ai(:plain => true, :index => false)).to eq <<-EOS.strip
144
+ it 'plain multiline without index' do
145
+ expect(@arr.ai(plain: true, index: false)).to eq <<-EOS.strip
150
146
  [
151
147
  1,
152
148
  2,
@@ -155,19 +151,19 @@ EOS
155
151
  EOS
156
152
  end
157
153
 
158
- it "plain single line" do
159
- expect(@arr.ai(:plain => true, :multiline => false)).to eq("[ 1, 2, [...] ]")
154
+ it 'plain single line' do
155
+ expect(@arr.ai(plain: true, multiline: false)).to eq('[ 1, 2, [...] ]')
160
156
  end
161
157
  end
162
158
 
163
159
  #------------------------------------------------------------------------------
164
- describe "Limited Output Array" do
160
+ describe 'Limited Output Array' do
165
161
  before(:each) do
166
162
  @arr = (1..1000).to_a
167
163
  end
168
164
 
169
- it "plain limited output large" do
170
- expect(@arr.ai(:plain => true, :limit => true)).to eq <<-EOS.strip
165
+ it 'plain limited output large' do
166
+ expect(@arr.ai(plain: true, limit: true)).to eq <<-EOS.strip
171
167
  [
172
168
  [ 0] 1,
173
169
  [ 1] 2,
@@ -180,9 +176,9 @@ EOS
180
176
  EOS
181
177
  end
182
178
 
183
- it "plain limited output small" do
179
+ it 'plain limited output small' do
184
180
  @arr = @arr[0..3]
185
- expect(@arr.ai(:plain => true, :limit => true)).to eq <<-EOS.strip
181
+ expect(@arr.ai(plain: true, limit: true)).to eq <<-EOS.strip
186
182
  [
187
183
  [0] 1,
188
184
  [1] 2,
@@ -192,8 +188,8 @@ EOS
192
188
  EOS
193
189
  end
194
190
 
195
- it "plain limited output with 10 lines" do
196
- expect(@arr.ai(:plain => true, :limit => 10)).to eq <<-EOS.strip
191
+ it 'plain limited output with 10 lines' do
192
+ expect(@arr.ai(plain: true, limit: 10)).to eq <<-EOS.strip
197
193
  [
198
194
  [ 0] 1,
199
195
  [ 1] 2,
@@ -209,8 +205,8 @@ EOS
209
205
  EOS
210
206
  end
211
207
 
212
- it "plain limited output with 11 lines" do
213
- expect(@arr.ai(:plain => true, :limit => 11)).to eq <<-EOS.strip
208
+ it 'plain limited output with 11 lines' do
209
+ expect(@arr.ai(plain: true, limit: 11)).to eq <<-EOS.strip
214
210
  [
215
211
  [ 0] 1,
216
212
  [ 1] 2,
@@ -229,13 +225,13 @@ EOS
229
225
  end
230
226
 
231
227
  #------------------------------------------------------------------------------
232
- describe "Limited Output Hash" do
228
+ describe 'Limited Output Hash' do
233
229
  before(:each) do
234
- @hash = ("a".."z").inject({}) { |h, v| h.merge({ v => v.to_sym }) }
230
+ @hash = ('a'..'z').inject({}) { |h, v| h.merge({ v => v.to_sym }) }
235
231
  end
236
232
 
237
- it "plain limited output" do
238
- expect(@hash.ai(:sort_keys => true, :plain => true, :limit => true)).to eq <<-EOS.strip
233
+ it 'plain limited output' do
234
+ expect(@hash.ai(sort_keys: true, plain: true, limit: true)).to eq <<-EOS.strip
239
235
  {
240
236
  "a" => :a,
241
237
  "b" => :b,
@@ -250,17 +246,17 @@ EOS
250
246
  end
251
247
 
252
248
  #------------------------------------------------------------------------------
253
- describe "Hash" do
249
+ describe 'Hash' do
254
250
  before do
255
- @hash = { 1 => { :sym => { "str" => { [1, 2, 3] => { { :k => :v } => Hash } } } } }
251
+ @hash = { 1 => { sym: { 'str' => { [1, 2, 3] => { { k: :v } => Hash } } } } }
256
252
  end
257
253
 
258
- it "empty hash" do
259
- expect({}.ai).to eq("{}")
254
+ it 'empty hash' do
255
+ expect({}.ai).to eq('{}')
260
256
  end
261
257
 
262
- it "plain multiline" do
263
- expect(@hash.ai(:plain => true)).to eq <<-EOS.strip
258
+ it 'plain multiline' do
259
+ expect(@hash.ai(plain: true)).to eq <<-EOS.strip
264
260
  {
265
261
  1 => {
266
262
  :sym => {
@@ -275,8 +271,24 @@ EOS
275
271
  EOS
276
272
  end
277
273
 
278
- it "plain multiline indented" do
279
- expect(@hash.ai(:plain => true, :indent => 1)).to eq <<-EOS.strip
274
+ it 'new hash syntax' do
275
+ expect(@hash.ai(plain: true, ruby19_syntax: true)).to eq <<-EOS.strip
276
+ {
277
+ 1 => {
278
+ sym: {
279
+ "str" => {
280
+ [ 1, 2, 3 ] => {
281
+ { k: :v } => Hash < Object
282
+ }
283
+ }
284
+ }
285
+ }
286
+ }
287
+ EOS
288
+ end
289
+
290
+ it 'plain multiline indented' do
291
+ expect(@hash.ai(plain: true, indent: 1)).to eq <<-EOS.strip
280
292
  {
281
293
  1 => {
282
294
  :sym => {
@@ -291,11 +303,11 @@ EOS
291
303
  EOS
292
304
  end
293
305
 
294
- it "plain single line" do
295
- expect(@hash.ai(:plain => true, :multiline => false)).to eq('{ 1 => { :sym => { "str" => { [ 1, 2, 3 ] => { { :k => :v } => Hash < Object } } } } }')
306
+ it 'plain single line' do
307
+ expect(@hash.ai(plain: true, multiline: false)).to eq('{ 1 => { :sym => { "str" => { [ 1, 2, 3 ] => { { :k => :v } => Hash < Object } } } } }')
296
308
  end
297
309
 
298
- it "colored multiline (default)" do
310
+ it 'colored multiline (default)' do
299
311
  expect(@hash.ai).to eq <<-EOS.strip
300
312
  {
301
313
  1\e[0;37m => \e[0m{
@@ -311,8 +323,24 @@ EOS
311
323
  EOS
312
324
  end
313
325
 
314
- it "colored multiline indented" do
315
- expect(@hash.ai(:indent => 2)).to eq <<-EOS.strip
326
+ it 'colored with new hash syntax' do
327
+ expect(@hash.ai(ruby19_syntax: true)).to eq <<-EOS.strip
328
+ {
329
+ 1\e[0;37m => \e[0m{
330
+ sym\e[0;37m: \e[0m{
331
+ \"str\"\e[0;37m => \e[0m{
332
+ [ 1, 2, 3 ]\e[0;37m => \e[0m{
333
+ { k: :v }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
339
+ EOS
340
+ end
341
+
342
+ it 'colored multiline indented' do
343
+ expect(@hash.ai(indent: 2)).to eq <<-EOS.strip
316
344
  {
317
345
  1\e[0;37m => \e[0m{
318
346
  :sym\e[0;37m => \e[0m{
@@ -327,40 +355,40 @@ EOS
327
355
  EOS
328
356
  end
329
357
 
330
- it "colored single line" do
331
- expect(@hash.ai(:multiline => false)).to eq("{ 1\e[0;37m => \e[0m{ :sym\e[0;37m => \e[0m{ \"str\"\e[0;37m => \e[0m{ [ 1, 2, 3 ]\e[0;37m => \e[0m{ { :k => :v }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m } } } } }")
358
+ it 'colored single line' do
359
+ expect(@hash.ai(multiline: false)).to eq("{ 1\e[0;37m => \e[0m{ :sym\e[0;37m => \e[0m{ \"str\"\e[0;37m => \e[0m{ [ 1, 2, 3 ]\e[0;37m => \e[0m{ { :k => :v }\e[0;37m => \e[0m\e[1;33mHash < Object\e[0m } } } } }")
332
360
  end
333
361
 
334
362
  end
335
363
 
336
364
  #------------------------------------------------------------------------------
337
- describe "Nested Hash" do
365
+ describe 'Nested Hash' do
338
366
  before do
339
367
  @hash = {}
340
368
  @hash[:a] = @hash
341
369
  end
342
370
 
343
- it "plain multiline" do
344
- expect(@hash.ai(:plain => true)).to eq <<-EOS.strip
371
+ it 'plain multiline' do
372
+ expect(@hash.ai(plain: true)).to eq <<-EOS.strip
345
373
  {
346
374
  :a => {...}
347
375
  }
348
376
  EOS
349
377
  end
350
378
 
351
- it "plain single line" do
352
- expect(@hash.ai(:plain => true, :multiline => false)).to eq('{ :a => {...} }')
379
+ it 'plain single line' do
380
+ expect(@hash.ai(plain: true, multiline: false)).to eq('{ :a => {...} }')
353
381
  end
354
382
  end
355
383
 
356
384
  #------------------------------------------------------------------------------
357
- describe "Hash with several keys" do
385
+ describe 'Hash with several keys' do
358
386
  before do
359
- @hash = {"b" => "b", :a => "a", :z => "z", "alpha" => "alpha"}
387
+ @hash = { 'b' => 'b', :a => 'a', :z => 'z', 'alpha' => 'alpha' }
360
388
  end
361
389
 
362
- it "plain multiline" do
363
- out = @hash.ai(:plain => true)
390
+ it 'plain multiline' do
391
+ out = @hash.ai(plain: true)
364
392
  if RUBY_VERSION.to_f < 1.9 # Order of @hash keys is not guaranteed.
365
393
  expect(out).to match(/^\{[^\}]+\}/m)
366
394
  expect(out).to match(/ "b" => "b",?/)
@@ -379,8 +407,8 @@ EOS
379
407
  end
380
408
  end
381
409
 
382
- it "plain multiline with sorted keys" do
383
- expect(@hash.ai(:plain => true, :sort_keys => true)).to eq <<-EOS.strip
410
+ it 'plain multiline with sorted keys' do
411
+ expect(@hash.ai(plain: true, sort_keys: true)).to eq <<-EOS.strip
384
412
  {
385
413
  :a => "a",
386
414
  "alpha" => "alpha",
@@ -393,14 +421,14 @@ EOS
393
421
  end
394
422
 
395
423
  #------------------------------------------------------------------------------
396
- describe "Negative options[:indent]" do
424
+ describe 'Negative options[:indent]' do
397
425
  #
398
426
  # With Ruby < 1.9 the order of hash keys is not defined so we can't
399
427
  # reliably compare the output string.
400
428
  #
401
- it "hash keys must be left aligned" do
402
- hash = { [0, 0, 255] => :yellow, :red => "rgb(255, 0, 0)", "magenta" => "rgb(255, 0, 255)" }
403
- out = hash.ai(:plain => true, :indent => -4, :sort_keys => true)
429
+ it 'hash keys must be left aligned' do
430
+ hash = { [0, 0, 255] => :yellow, :red => 'rgb(255, 0, 0)', 'magenta' => 'rgb(255, 0, 255)' }
431
+ out = hash.ai(plain: true, indent: -4, sort_keys: true)
404
432
  expect(out).to eq <<-EOS.strip
405
433
  {
406
434
  [ 0, 0, 255 ] => :yellow,
@@ -410,9 +438,9 @@ EOS
410
438
  EOS
411
439
  end
412
440
 
413
- it "nested hash keys should be indented (array of hashes)" do
414
- arr = [ { :a => 1, :bb => 22, :ccc => 333}, { 1 => :a, 22 => :bb, 333 => :ccc} ]
415
- out = arr.ai(:plain => true, :indent => -4, :sort_keys => true)
441
+ it 'nested hash keys should be indented (array of hashes)' do
442
+ arr = [{ a: 1, bb: 22, ccc: 333 }, { 1 => :a, 22 => :bb, 333 => :ccc }]
443
+ out = arr.ai(plain: true, indent: -4, sort_keys: true)
416
444
  expect(out).to eq <<-EOS.strip
417
445
  [
418
446
  [0] {
@@ -429,9 +457,9 @@ EOS
429
457
  EOS
430
458
  end
431
459
 
432
- it "nested hash keys should be indented (hash of hashes)" do
433
- arr = { :first => { :a => 1, :bb => 22, :ccc => 333}, :second => { 1 => :a, 22 => :bb, 333 => :ccc} }
434
- out = arr.ai(:plain => true, :indent => -4, :sort_keys => true)
460
+ it 'nested hash keys should be indented (hash of hashes)' do
461
+ arr = { first: { a: 1, bb: 22, ccc: 333 }, second: { 1 => :a, 22 => :bb, 333 => :ccc } }
462
+ out = arr.ai(plain: true, indent: -4, sort_keys: true)
435
463
  expect(out).to eq <<-EOS.strip
436
464
  {
437
465
  :first => {
@@ -450,131 +478,131 @@ EOS
450
478
  end
451
479
 
452
480
  #------------------------------------------------------------------------------
453
- describe "Class" do
454
- it "should show superclass (plain)" do
455
- expect(self.class.ai(:plain => true)).to eq("#{self.class} < #{self.class.superclass}")
481
+ describe 'Class' do
482
+ it 'should show superclass (plain)' do
483
+ expect(self.class.ai(plain: true)).to eq("#{self.class} < #{self.class.superclass}")
456
484
  end
457
485
 
458
- it "should show superclass (color)" do
486
+ it 'should show superclass (color)' do
459
487
  expect(self.class.ai).to eq("#{self.class} < #{self.class.superclass}".yellow)
460
488
  end
461
489
  end
462
490
 
463
491
  #------------------------------------------------------------------------------
464
- describe "File" do
465
- it "should display a file (plain)" do
466
- File.open(__FILE__, "r") do |f|
467
- expect(f.ai(:plain => true)).to eq("#{f.inspect}\n" << `ls -alF #{f.path}`.chop)
492
+ describe 'File' do
493
+ it 'should display a file (plain)' do
494
+ File.open(__FILE__, 'r') do |f|
495
+ expect(f.ai(plain: true)).to eq("#{f.inspect}\n" << `ls -alF #{f.path}`.chop)
468
496
  end
469
497
  end
470
498
  end
471
499
 
472
500
  #------------------------------------------------------------------------------
473
- describe "Dir" do
474
- it "should display a direcory (plain)" do
501
+ describe 'Dir' do
502
+ it 'should display a direcory (plain)' do
475
503
  Dir.open(File.dirname(__FILE__)) do |d|
476
- expect(d.ai(:plain => true)).to eq("#{d.inspect}\n" << `ls -alF #{d.path}`.chop)
504
+ expect(d.ai(plain: true)).to eq("#{d.inspect}\n" << `ls -alF #{d.path}`.chop)
477
505
  end
478
506
  end
479
507
  end
480
508
 
481
509
  #------------------------------------------------------------------------------
482
- describe "BigDecimal and Rational" do
483
- it "should present BigDecimal object with arbitrary precision" do
484
- big = BigDecimal("201020102010201020102010201020102010.4")
485
- expect(big.ai(:plain => true)).to eq("201020102010201020102010201020102010.4")
510
+ describe 'BigDecimal and Rational' do
511
+ it 'should present BigDecimal object with arbitrary precision' do
512
+ big = BigDecimal('201020102010201020102010201020102010.4')
513
+ expect(big.ai(plain: true)).to eq('201020102010201020102010201020102010.4')
486
514
  end
487
515
 
488
- it "should present Rational object with arbitrary precision" do
516
+ it 'should present Rational object with arbitrary precision' do
489
517
  rat = Rational(201020102010201020102010201020102010, 2)
490
- out = rat.ai(:plain => true)
518
+ out = rat.ai(plain: true)
491
519
  #
492
520
  # Ruby 1.9 slightly changed the format of Rational#to_s, see
493
521
  # http://techtime.getharvest.com/blog/harvest-is-now-on-ruby-1-dot-9-3 and
494
522
  # http://www.ruby-forum.com/topic/189397
495
523
  #
496
- if RUBY_VERSION < "1.9"
497
- expect(out).to eq("100510051005100510051005100510051005")
524
+ if RUBY_VERSION < '1.9'
525
+ expect(out).to eq('100510051005100510051005100510051005')
498
526
  else
499
- expect(out).to eq("100510051005100510051005100510051005/1")
527
+ expect(out).to eq('100510051005100510051005100510051005/1')
500
528
  end
501
529
  end
502
530
  end
503
531
 
504
532
  #------------------------------------------------------------------------------
505
- describe "Utility methods" do
506
- it "should merge options" do
533
+ describe 'Utility methods' do
534
+ it 'should merge options' do
507
535
  ap = AwesomePrint::Inspector.new
508
- ap.send(:merge_options!, { :color => { :array => :black }, :indent => 0 })
509
- options = ap.instance_variable_get("@options")
536
+ ap.send(:merge_options!, { color: { array: :black }, indent: 0 })
537
+ options = ap.instance_variable_get('@options')
510
538
  expect(options[:color][:array]).to eq(:black)
511
539
  expect(options[:indent]).to eq(0)
512
540
  end
513
541
  end
514
542
 
515
543
  #------------------------------------------------------------------------------
516
- describe "Set" do
544
+ describe 'Set' do
517
545
  before do
518
- @arr = [1, :two, "three" ]
546
+ @arr = [1, :two, 'three']
519
547
  @set = Set.new(@arr)
520
548
  end
521
549
 
522
- it "empty set" do
550
+ it 'empty set' do
523
551
  expect(Set.new.ai).to eq([].ai)
524
552
  end
525
553
 
526
- if RUBY_VERSION > "1.9"
527
- it "plain multiline" do
528
- expect(@set.ai(:plain => true)).to eq(@arr.ai(:plain => true))
554
+ if RUBY_VERSION > '1.9'
555
+ it 'plain multiline' do
556
+ expect(@set.ai(plain: true)).to eq(@arr.ai(plain: true))
529
557
  end
530
558
 
531
- it "plain multiline indented" do
532
- expect(@set.ai(:plain => true, :indent => 1)).to eq(@arr.ai(:plain => true, :indent => 1))
559
+ it 'plain multiline indented' do
560
+ expect(@set.ai(plain: true, indent: 1)).to eq(@arr.ai(plain: true, indent: 1))
533
561
  end
534
562
 
535
- it "plain single line" do
536
- expect(@set.ai(:plain => true, :multiline => false)).to eq(@arr.ai(:plain => true, :multiline => false))
563
+ it 'plain single line' do
564
+ expect(@set.ai(plain: true, multiline: false)).to eq(@arr.ai(plain: true, multiline: false))
537
565
  end
538
566
 
539
- it "colored multiline (default)" do
567
+ it 'colored multiline (default)' do
540
568
  expect(@set.ai).to eq(@arr.ai)
541
569
  end
542
570
  else # Prior to Ruby 1.9 the order of set values is unpredicatble.
543
- it "plain multiline" do
544
- expect(@set.sort_by{ |x| x.to_s }.ai(:plain => true)).to eq(@arr.sort_by{ |x| x.to_s }.ai(:plain => true))
571
+ it 'plain multiline' do
572
+ expect(@set.sort_by { |x| x.to_s }.ai(plain: true)).to eq(@arr.sort_by { |x| x.to_s }.ai(plain: true))
545
573
  end
546
574
 
547
- it "plain multiline indented" do
548
- expect(@set.sort_by{ |x| x.to_s }.ai(:plain => true, :indent => 1)).to eq(@arr.sort_by{ |x| x.to_s }.ai(:plain => true, :indent => 1))
575
+ it 'plain multiline indented' do
576
+ expect(@set.sort_by { |x| x.to_s }.ai(plain: true, indent: 1)).to eq(@arr.sort_by { |x| x.to_s }.ai(plain: true, indent: 1))
549
577
  end
550
578
 
551
- it "plain single line" do
552
- expect(@set.sort_by{ |x| x.to_s }.ai(:plain => true, :multiline => false)).to eq(@arr.sort_by{ |x| x.to_s }.ai(:plain => true, :multiline => false))
579
+ it 'plain single line' do
580
+ expect(@set.sort_by { |x| x.to_s }.ai(plain: true, multiline: false)).to eq(@arr.sort_by { |x| x.to_s }.ai(plain: true, multiline: false))
553
581
  end
554
582
 
555
- it "colored multiline (default)" do
556
- expect(@set.sort_by{ |x| x.to_s }.ai).to eq(@arr.sort_by{ |x| x.to_s }.ai)
583
+ it 'colored multiline (default)' do
584
+ expect(@set.sort_by { |x| x.to_s }.ai).to eq(@arr.sort_by { |x| x.to_s }.ai)
557
585
  end
558
586
  end
559
587
  end
560
588
 
561
589
  #------------------------------------------------------------------------------
562
- describe "Struct" do
590
+ describe 'Struct' do
563
591
  before do
564
592
  @struct = unless defined?(Struct::SimpleStruct)
565
- Struct.new("SimpleStruct", :name, :address).new
593
+ Struct.new('SimpleStruct', :name, :address).new
566
594
  else
567
595
  Struct::SimpleStruct.new
568
596
  end
569
- @struct.name = "Herman Munster"
570
- @struct.address = "1313 Mockingbird Lane"
597
+ @struct.name = 'Herman Munster'
598
+ @struct.address = '1313 Mockingbird Lane'
571
599
  end
572
600
 
573
- it "empty struct" do
574
- expect(Struct.new("EmptyStruct").ai).to eq("\e[1;33mStruct::EmptyStruct < Struct\e[0m")
601
+ it 'empty struct' do
602
+ expect(Struct.new('EmptyStruct').ai).to eq("\e[1;33mStruct::EmptyStruct < Struct\e[0m")
575
603
  end
576
604
 
577
- it "plain multiline" do
605
+ it 'plain multiline' do
578
606
  s1 = <<-EOS.strip
579
607
  address = \"1313 Mockingbird Lane\",
580
608
  name = \"Herman Munster\"
@@ -583,10 +611,10 @@ EOS
583
611
  name = \"Herman Munster\",
584
612
  address = \"1313 Mockingbird Lane\"
585
613
  EOS
586
- expect(@struct.ai(:plain => true)).to satisfy { |out| out.match(s1) || out.match(s2) }
614
+ expect(@struct.ai(plain: true)).to satisfy { |out| out.match(s1) || out.match(s2) }
587
615
  end
588
616
 
589
- it "plain multiline indented" do
617
+ it 'plain multiline indented' do
590
618
  s1 = <<-EOS.strip
591
619
  address = "1313 Mockingbird Lane",
592
620
  name = "Herman Munster"
@@ -595,16 +623,16 @@ EOS
595
623
  name = "Herman Munster",
596
624
  address = "1313 Mockingbird Lane"
597
625
  EOS
598
- expect(@struct.ai(:plain => true, :indent => 1)).to satisfy { |out| out.match(s1) || out.match(s2) }
626
+ expect(@struct.ai(plain: true, indent: 1)).to satisfy { |out| out.match(s1) || out.match(s2) }
599
627
  end
600
628
 
601
- it "plain single line" do
602
- s1 = "address = \"1313 Mockingbird Lane\", name = \"Herman Munster\""
603
- s2 = "name = \"Herman Munster\", address = \"1313 Mockingbird Lane\""
604
- expect(@struct.ai(:plain => true, :multiline => false)).to satisfy { |out| out.match(s1) || out.match(s2) }
629
+ it 'plain single line' do
630
+ s1 = 'address = "1313 Mockingbird Lane", name = "Herman Munster"'
631
+ s2 = 'name = "Herman Munster", address = "1313 Mockingbird Lane"'
632
+ expect(@struct.ai(plain: true, multiline: false)).to satisfy { |out| out.match(s1) || out.match(s2) }
605
633
  end
606
634
 
607
- it "colored multiline (default)" do
635
+ it 'colored multiline (default)' do
608
636
  s1 = <<-EOS.strip
609
637
  address\e[0;37m = \e[0m\e[0;33m\"1313 Mockingbird Lane\"\e[0m,
610
638
  name\e[0;37m = \e[0m\e[0;33m\"Herman Munster\"\e[0m
@@ -618,16 +646,16 @@ EOS
618
646
  end
619
647
 
620
648
  #------------------------------------------------------------------------------
621
- describe "Inherited from standard Ruby classes" do
649
+ describe 'Inherited from standard Ruby classes' do
622
650
  after do
623
- Object.instance_eval{ remove_const :My } if defined?(My)
651
+ Object.instance_eval { remove_const :My } if defined?(My)
624
652
  end
625
653
 
626
- it "inherited from Array should be displayed as Array" do
654
+ it 'inherited from Array should be displayed as Array' do
627
655
  class My < Array; end
628
656
 
629
- my = My.new([ 1, :two, "three", [ nil, [ true, false ] ] ])
630
- expect(my.ai(:plain => true)).to eq <<-EOS.strip
657
+ my = My.new([1, :two, 'three', [nil, [true, false]]])
658
+ expect(my.ai(plain: true)).to eq <<-EOS.strip
631
659
  [
632
660
  [0] 1,
633
661
  [1] :two,
@@ -643,11 +671,11 @@ EOS
643
671
  EOS
644
672
  end
645
673
 
646
- it "inherited from Hash should be displayed as Hash" do
674
+ it 'inherited from Hash should be displayed as Hash' do
647
675
  class My < Hash; end
648
676
 
649
- my = My[ { 1 => { :sym => { "str" => { [1, 2, 3] => { { :k => :v } => Hash } } } } } ]
650
- expect(my.ai(:plain => true)).to eq <<-EOS.strip
677
+ my = My[{ 1 => { sym: { 'str' => { [1, 2, 3] => { { k: :v } => Hash } } } } }]
678
+ expect(my.ai(plain: true)).to eq <<-EOS.strip
651
679
  {
652
680
  1 => {
653
681
  :sym => {
@@ -662,31 +690,31 @@ EOS
662
690
  EOS
663
691
  end
664
692
 
665
- it "inherited from File should be displayed as File" do
693
+ it 'inherited from File should be displayed as File' do
666
694
  class My < File; end
667
695
 
668
696
  my = File.new('/dev/null') rescue File.new('nul')
669
- expect(my.ai(:plain => true)).to eq("#{my.inspect}\n" << `ls -alF #{my.path}`.chop)
697
+ expect(my.ai(plain: true)).to eq("#{my.inspect}\n" << `ls -alF #{my.path}`.chop)
670
698
  end
671
699
 
672
- it "inherited from Dir should be displayed as Dir" do
700
+ it 'inherited from Dir should be displayed as Dir' do
673
701
  class My < Dir; end
674
702
 
675
703
  require 'tmpdir'
676
704
  my = My.new(Dir.tmpdir)
677
- expect(my.ai(:plain => true)).to eq("#{my.inspect}\n" << `ls -alF #{my.path}`.chop)
705
+ expect(my.ai(plain: true)).to eq("#{my.inspect}\n" << `ls -alF #{my.path}`.chop)
678
706
  end
679
707
 
680
- it "should handle a class that defines its own #send method" do
708
+ it 'should handle a class that defines its own #send method' do
681
709
  class My
682
710
  def send(arg1, arg2, arg3); end
683
711
  end
684
712
 
685
713
  my = My.new
686
- expect { my.methods.ai(:plain => true) }.not_to raise_error
714
+ expect { my.methods.ai(plain: true) }.not_to raise_error
687
715
  end
688
716
 
689
- it "should handle a class defines its own #method method (ex. request.method)" do
717
+ it 'should handle a class defines its own #method method (ex. request.method)' do
690
718
  class My
691
719
  def method
692
720
  'POST'
@@ -694,21 +722,21 @@ EOS
694
722
  end
695
723
 
696
724
  my = My.new
697
- expect { my.methods.ai(:plain => true) }.not_to raise_error
725
+ expect { my.methods.ai(plain: true) }.not_to raise_error
698
726
  end
699
727
 
700
- describe "should handle a class that defines its own #to_hash method" do
701
- it "that takes arguments" do
728
+ describe 'should handle a class that defines its own #to_hash method' do
729
+ it 'that takes arguments' do
702
730
  class My
703
731
  def to_hash(a, b)
704
732
  end
705
733
  end
706
734
 
707
735
  my = My.new
708
- expect { my.ai(:plain => true) }.not_to raise_error
736
+ expect { my.ai(plain: true) }.not_to raise_error
709
737
  end
710
738
 
711
- it "that returns nil" do
739
+ it 'that returns nil' do
712
740
  class My
713
741
  def to_hash()
714
742
  return nil
@@ -716,7 +744,7 @@ EOS
716
744
  end
717
745
 
718
746
  my = My.new
719
- expect { my.ai(:plain => true) }.not_to raise_error
747
+ expect { my.ai(plain: true) }.not_to raise_error
720
748
  end
721
749
 
722
750
  it "that returns an object that doesn't support #keys" do
@@ -730,7 +758,7 @@ EOS
730
758
  end
731
759
 
732
760
  my = My.new
733
- expect { my.ai(:plain => true) }.not_to raise_error
761
+ expect { my.ai(plain: true) }.not_to raise_error
734
762
  end
735
763
 
736
764
  it "that returns an object that doesn't support subscripting" do
@@ -744,7 +772,7 @@ EOS
744
772
  end
745
773
 
746
774
  my = My.new
747
- expect { my.ai(:plain => true) }.not_to raise_error
775
+ expect { my.ai(plain: true) }.not_to raise_error
748
776
  end
749
777
  end
750
778
  end