awesome_print 0.1.3 → 0.1.4
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.
- data/CHANGELOG +6 -0
- data/README.md +5 -5
- data/VERSION +1 -1
- data/lib/ap/awesome_print.rb +26 -20
- data/spec/awesome_print_spec.rb +29 -0
- data/spec/rails_spec.rb +24 -19
- data/spec/spec_helper.rb +5 -1
- metadata +3 -3
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
0.1.4
|
2
|
+
- Format BigDecimal and Rational objects as Float scalars
|
3
|
+
- Explicit options parameter can override custom defaults
|
4
|
+
- Custom defaults are not interfering when running specs
|
5
|
+
- Custom defaults now work correctly with Ruby 1.9.x
|
6
|
+
|
1
7
|
0.1.3
|
2
8
|
- Added support for setting custom defaults in ~/.aprc
|
3
9
|
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ Default options:
|
|
23
23
|
:multiline => true,
|
24
24
|
:plain => false,
|
25
25
|
:indent => 4,
|
26
|
-
:
|
26
|
+
:color => {
|
27
27
|
:array => :white,
|
28
28
|
:bignum => :blue,
|
29
29
|
:class => :yellow,
|
@@ -47,7 +47,7 @@ Supported color names:
|
|
47
47
|
### Examples ###
|
48
48
|
$ cat > 1.rb
|
49
49
|
require "ap"
|
50
|
-
data = [ false, 42, %w(
|
50
|
+
data = [ false, 42, %w(forty two), { :now => Time.now, :class => Time.now.class, :distance => 42e42 } ]
|
51
51
|
ap data
|
52
52
|
^D
|
53
53
|
$ ruby 1.rb
|
@@ -55,7 +55,7 @@ Supported color names:
|
|
55
55
|
[0] false,
|
56
56
|
[1] 42,
|
57
57
|
[2] [
|
58
|
-
[0] "
|
58
|
+
[0] "forty",
|
59
59
|
[1] "two"
|
60
60
|
],
|
61
61
|
[3] {
|
@@ -79,12 +79,12 @@ Supported color names:
|
|
79
79
|
|
80
80
|
$ cat > 3.rb
|
81
81
|
require "ap"
|
82
|
-
data = [ false, 42, %w(
|
82
|
+
data = [ false, 42, %w(forty two) ]
|
83
83
|
data << data # <-- Nested array.
|
84
84
|
ap data, :multiline => false
|
85
85
|
^D
|
86
86
|
$ ruby 3.rb
|
87
|
-
[ false, 42, [ "
|
87
|
+
[ false, 42, [ "forty", "two" ], [...] ]
|
88
88
|
|
89
89
|
### Example (Rails console) ###
|
90
90
|
$ ruby script/console
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/lib/ap/awesome_print.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
#------------------------------------------------------------------------------
|
6
6
|
class AwesomePrint
|
7
7
|
AP = :__awesome_print__
|
8
|
-
CORE = [ :array, :hash, :class, :file, :dir ]
|
8
|
+
CORE = [ :array, :hash, :class, :file, :dir, :bigdecimal, :rational ]
|
9
9
|
|
10
10
|
def initialize(options = {})
|
11
11
|
@options = {
|
@@ -14,7 +14,7 @@ class AwesomePrint
|
|
14
14
|
:indent => 4,
|
15
15
|
:color => {
|
16
16
|
:array => :white,
|
17
|
-
:
|
17
|
+
:bigdecimal => :blue,
|
18
18
|
:class => :yellow,
|
19
19
|
:date => :greenish,
|
20
20
|
:falseclass => :red,
|
@@ -26,10 +26,12 @@ class AwesomePrint
|
|
26
26
|
:symbol => :cyanish,
|
27
27
|
:time => :greenish,
|
28
28
|
:trueclass => :green
|
29
|
-
}
|
30
|
-
}
|
29
|
+
}
|
30
|
+
}
|
31
31
|
|
32
|
-
|
32
|
+
# Merge custom defaults and let explicit options parameter override them.
|
33
|
+
merge_custom_defaults!
|
34
|
+
merge_options!(options)
|
33
35
|
|
34
36
|
@indentation = @options[:indent].abs
|
35
37
|
Thread.current[AP] ||= []
|
@@ -113,6 +115,13 @@ class AwesomePrint
|
|
113
115
|
awesome_self(d, :with => ls.empty? ? nil : "\n#{ls.chop}")
|
114
116
|
end
|
115
117
|
|
118
|
+
# Format BigDecimal and Rational objects by convering them to Float.
|
119
|
+
#------------------------------------------------------------------------------
|
120
|
+
def awesome_bigdecimal(n)
|
121
|
+
awesome_self(n.to_f, :as => :bigdecimal)
|
122
|
+
end
|
123
|
+
alias :awesome_rational :awesome_bigdecimal
|
124
|
+
|
116
125
|
# Catch all method to format an arbitrary object.
|
117
126
|
#------------------------------------------------------------------------------
|
118
127
|
def awesome_self(object, appear = {})
|
@@ -188,31 +197,28 @@ class AwesomePrint
|
|
188
197
|
@indentation -= @options[:indent].abs
|
189
198
|
end
|
190
199
|
|
191
|
-
#------------------------------------------------------------------------------
|
192
200
|
def indent
|
193
201
|
@indent = ' ' * @indentation
|
194
202
|
end
|
195
203
|
|
196
|
-
#------------------------------------------------------------------------------
|
197
204
|
def outdent
|
198
205
|
@outdent = ' ' * (@indentation - @options[:indent].abs)
|
199
206
|
end
|
200
207
|
|
201
|
-
#
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
#
|
208
|
+
# Update @options by first merging the :color hash and then the remaining keys.
|
209
|
+
#------------------------------------------------------------------------------
|
210
|
+
def merge_options!(options = {})
|
211
|
+
@options[:color].merge!(options.delete(:color) || {})
|
212
|
+
@options.merge!(options)
|
213
|
+
end
|
214
|
+
|
215
|
+
# Load ~/.aprc file with custom defaults that override default options.
|
209
216
|
#------------------------------------------------------------------------------
|
210
|
-
def
|
217
|
+
def merge_custom_defaults!
|
211
218
|
dotfile = File.join(ENV["HOME"], ".aprc")
|
212
219
|
if File.readable?(dotfile)
|
213
220
|
load dotfile
|
214
|
-
|
215
|
-
@options.merge!(self.class.defaults)
|
221
|
+
merge_options!(self.class.defaults)
|
216
222
|
end
|
217
223
|
rescue => e
|
218
224
|
$stderr.puts "Could not load #{dotfile}: #{e}"
|
@@ -224,8 +230,8 @@ class AwesomePrint
|
|
224
230
|
@@defaults ||= {}
|
225
231
|
end
|
226
232
|
|
227
|
-
def self.defaults=(
|
228
|
-
@@defaults =
|
233
|
+
def self.defaults=(args = {})
|
234
|
+
@@defaults = args
|
229
235
|
end
|
230
236
|
|
231
237
|
end
|
data/spec/awesome_print_spec.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
require "bigdecimal"
|
3
|
+
require "rational"
|
2
4
|
|
3
5
|
describe "AwesomePrint" do
|
6
|
+
before(:each) do
|
7
|
+
stub_dotfile!
|
8
|
+
end
|
4
9
|
|
5
10
|
describe "Array" do
|
6
11
|
before(:each) do
|
@@ -259,4 +264,28 @@ EOS
|
|
259
264
|
end
|
260
265
|
end
|
261
266
|
|
267
|
+
#------------------------------------------------------------------------------
|
268
|
+
describe "BigDecimal and Rational" do
|
269
|
+
it "should present BigDecimal object as Float scalar" do
|
270
|
+
big = BigDecimal("2010.04")
|
271
|
+
big.ai(:plain => true).should == "2010.4"
|
272
|
+
end
|
273
|
+
|
274
|
+
it "should present Rational object as Float scalar" do
|
275
|
+
rat = Rational(2010, 2)
|
276
|
+
rat.ai(:plain => true).should == "1005.0"
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
#------------------------------------------------------------------------------
|
281
|
+
describe "Utility methods" do
|
282
|
+
it "should merge options" do
|
283
|
+
ap = AwesomePrint.new
|
284
|
+
ap.send(:merge_options!, { :color => { :array => :black }, :indent => 0 })
|
285
|
+
options = ap.instance_variable_get("@options")
|
286
|
+
options[:color][:array].should == :black
|
287
|
+
options[:indent].should == 0
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
262
291
|
end
|
data/spec/rails_spec.rb
CHANGED
@@ -20,17 +20,22 @@ if defined?(::Rails)
|
|
20
20
|
column :created_at, :datetime
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
describe "ActiveRecord instance" do
|
23
|
+
describe "AwesomePrint/Rails" do
|
25
24
|
before(:each) do
|
26
|
-
|
27
|
-
@laura = User.new(:name => "Laura", :rank => 2, :admin => true, :created_at => "2003-05-26 14:15:00")
|
28
|
-
@ap = AwesomePrint.new(:plain => true)
|
25
|
+
stub_dotfile!
|
29
26
|
end
|
30
27
|
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
#------------------------------------------------------------------------------
|
29
|
+
describe "ActiveRecord instance" do
|
30
|
+
before(:each) do
|
31
|
+
@diana = User.new(:name => "Diana", :rank => 1, :admin => false, :created_at => "1992-10-10 12:30:00")
|
32
|
+
@laura = User.new(:name => "Laura", :rank => 2, :admin => true, :created_at => "2003-05-26 14:15:00")
|
33
|
+
@ap = AwesomePrint.new(:plain => true)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "display single record" do
|
37
|
+
out = @ap.send(:awesome, @diana)
|
38
|
+
out.gsub(/0x([a-f\d]+)/, "0x01234567").should == <<-EOS.strip
|
34
39
|
#<User:0x01234567> {
|
35
40
|
:id => nil,
|
36
41
|
:name => "Diana",
|
@@ -39,11 +44,11 @@ if defined?(::Rails)
|
|
39
44
|
:created_at => Sat, 10 Oct 1992 12:30:00 UTC +00:00
|
40
45
|
}
|
41
46
|
EOS
|
42
|
-
|
47
|
+
end
|
43
48
|
|
44
|
-
|
45
|
-
|
46
|
-
|
49
|
+
it "display multiple records" do
|
50
|
+
out = @ap.send(:awesome, [ @diana, @laura ])
|
51
|
+
out.gsub(/0x([a-f\d]+)/, "0x01234567").should == <<-EOS.strip
|
47
52
|
[
|
48
53
|
[0] #<User:0x01234567> {
|
49
54
|
:id => nil,
|
@@ -61,14 +66,14 @@ EOS
|
|
61
66
|
}
|
62
67
|
]
|
63
68
|
EOS
|
69
|
+
end
|
64
70
|
end
|
65
|
-
end
|
66
71
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
#------------------------------------------------------------------------------
|
73
|
+
describe "ActiveRecord class" do
|
74
|
+
it "should" do
|
75
|
+
@ap = AwesomePrint.new(:plain => true)
|
76
|
+
@ap.send(:awesome, User).should == <<-EOS.strip
|
72
77
|
class User < ActiveRecord::Base {
|
73
78
|
:id => :integer,
|
74
79
|
:name => :string,
|
@@ -77,7 +82,7 @@ class User < ActiveRecord::Base {
|
|
77
82
|
:created_at => :datetime
|
78
83
|
}
|
79
84
|
EOS
|
85
|
+
end
|
80
86
|
end
|
81
87
|
end
|
82
|
-
|
83
88
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 4
|
9
|
+
version: 0.1.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael Dvorkin
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-08 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|