awesome_print 0.1.0 → 0.1.1
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/README.md +22 -11
- data/VERSION +1 -1
- data/lib/ap/awesome_print.rb +14 -9
- data/lib/ap/mixin/rails.rb +1 -1
- data/spec/awesome_print_spec.rb +17 -0
- data/spec/rails_spec.rb +0 -4
- metadata +3 -3
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
## Awesome Print ##
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
Awesome Print is Ruby library that pretty prints Ruby objects in full color
|
3
|
+
exposing their internal structure with proper indentation. Rails ActiveRecord
|
4
|
+
objects are supported via included mixin.
|
5
5
|
|
6
6
|
### Installation ###
|
7
7
|
$ # Installing as Ruby gem
|
@@ -20,6 +20,7 @@
|
|
20
20
|
Default options:
|
21
21
|
:miltiline => true,
|
22
22
|
:plain => false,
|
23
|
+
:indent => 4,
|
23
24
|
:colors => {
|
24
25
|
:array => :white,
|
25
26
|
:bignum => :blue,
|
@@ -58,6 +59,12 @@
|
|
58
59
|
:distance => 4.2e+43
|
59
60
|
}
|
60
61
|
]
|
62
|
+
irb> ap data[3], :indent => -2 # Left align hash keys.
|
63
|
+
{
|
64
|
+
:class => Time < Object,
|
65
|
+
:now => Fri Apr 02 19:55:53 -0700 2010,
|
66
|
+
:distance => 4.2e+43
|
67
|
+
}
|
61
68
|
irb> ap data, :multiline => false
|
62
69
|
[ false, 42, [ "fourty", "two" ], { :class => Time < Object, :distance => 4.2e+43, :now => Fri Apr 02 19:44:52 -0700 2010 } ]
|
63
70
|
irb>
|
@@ -120,15 +127,19 @@
|
|
120
127
|
}
|
121
128
|
rails>
|
122
129
|
|
130
|
+
### Known Issues ###
|
131
|
+
|
132
|
+
* Windows...
|
133
|
+
|
123
134
|
### Note on Patches/Pull Requests ###
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
135
|
+
* Fork the project on Github.
|
136
|
+
* Make your feature addition or bug fix.
|
137
|
+
* Add specs for it, making sure $ rake spec is all green.
|
138
|
+
* Commit, do not mess with rakefile, version, or history.
|
139
|
+
* Send me a pull request.
|
129
140
|
|
130
141
|
### License ###
|
131
|
-
|
132
|
-
|
142
|
+
Copyright (c) 2010 Michael Dvorkin
|
143
|
+
%w(mike dvorkin.net) * "@" || %w(mike fatfreecrm.com) * "@"
|
133
144
|
|
134
|
-
|
145
|
+
Released under the MIT license. See LICENSE file for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/lib/ap/awesome_print.rb
CHANGED
@@ -29,7 +29,7 @@ class AwesomePrint
|
|
29
29
|
}.merge(options.delete(:color) || {})
|
30
30
|
}.merge(options)
|
31
31
|
|
32
|
-
@indentation = @options[:indent]
|
32
|
+
@indentation = @options[:indent].abs
|
33
33
|
Thread.current[AP] ||= []
|
34
34
|
end
|
35
35
|
|
@@ -58,7 +58,7 @@ class AwesomePrint
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
# Format a hash.
|
61
|
+
# Format a hash. If @options[:indent] if negative left align hash keys.
|
62
62
|
#------------------------------------------------------------------------------
|
63
63
|
def awesome_hash(h)
|
64
64
|
data = h.keys.inject([]) do |arr, key|
|
@@ -67,12 +67,17 @@ class AwesomePrint
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
width = data.map { |key, | key.size }.max
|
70
|
+
width = data.map { |key, | key.size }.max
|
71
|
+
width += @indentation if @options[:indent] > 0
|
71
72
|
|
72
73
|
data = data.inject([]) do |arr, (key, value)|
|
73
|
-
|
74
|
+
if @options[:multiline]
|
75
|
+
formatted_key = (@options[:indent] >= 0 ? key.rjust(width) : indent + key.ljust(width))
|
76
|
+
else
|
77
|
+
formatted_key = key
|
78
|
+
end
|
74
79
|
indented do
|
75
|
-
arr << (formatted_key << awesome(value))
|
80
|
+
arr << (formatted_key << colorize(" => ", :hash) << awesome(value))
|
76
81
|
end
|
77
82
|
end
|
78
83
|
if @options[:multiline]
|
@@ -175,20 +180,20 @@ class AwesomePrint
|
|
175
180
|
|
176
181
|
#------------------------------------------------------------------------------
|
177
182
|
def indented
|
178
|
-
@indentation += @options[:indent]
|
183
|
+
@indentation += @options[:indent].abs
|
179
184
|
yield
|
180
185
|
ensure
|
181
|
-
@indentation -= @options[:indent]
|
186
|
+
@indentation -= @options[:indent].abs
|
182
187
|
end
|
183
188
|
|
184
189
|
#------------------------------------------------------------------------------
|
185
190
|
def indent
|
186
|
-
' ' * @indentation
|
191
|
+
@indent = ' ' * @indentation
|
187
192
|
end
|
188
193
|
|
189
194
|
#------------------------------------------------------------------------------
|
190
195
|
def outdent
|
191
|
-
' ' * (@indentation - @options[:indent])
|
196
|
+
@outdent = ' ' * (@indentation - @options[:indent].abs)
|
192
197
|
end
|
193
198
|
|
194
199
|
end
|
data/lib/ap/mixin/rails.rb
CHANGED
@@ -38,7 +38,7 @@ module AwesomePrintRails
|
|
38
38
|
# Format ActiveRecord class object.
|
39
39
|
#------------------------------------------------------------------------------
|
40
40
|
def awesome_active_record_class(object)
|
41
|
-
if object.
|
41
|
+
if object.respond_to?(:columns)
|
42
42
|
data = object.columns.inject(ActiveSupport::OrderedHash.new) do |hash, c|
|
43
43
|
hash[c.name.to_sym] = c.type
|
44
44
|
hash
|
data/spec/awesome_print_spec.rb
CHANGED
@@ -227,6 +227,23 @@ EOS
|
|
227
227
|
end
|
228
228
|
end
|
229
229
|
|
230
|
+
#------------------------------------------------------------------------------
|
231
|
+
describe "Negative options[:indent]" do
|
232
|
+
before(:each) do
|
233
|
+
@hash = { [0, 0, 255] => :yellow, :red => "rgb(255, 0, 0)", "magenta" => "rgb(255, 0, 255)" }
|
234
|
+
end
|
235
|
+
|
236
|
+
it "hash keys must be left aligned" do
|
237
|
+
ap = AwesomePrint.new(:plain => true, :indent => -4)
|
238
|
+
out = ap.send(:awesome, @hash)
|
239
|
+
out.start_with?("{\n").should == true
|
240
|
+
out.include?(' :red => "rgb(255, 0, 0)"').should == true
|
241
|
+
out.include?(' "magenta" => "rgb(255, 0, 255)"').should == true
|
242
|
+
out.include?(' [ 0, 0, 255 ] => :yellow').should == true
|
243
|
+
out.end_with?("\n}").should == true
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
230
247
|
#------------------------------------------------------------------------------
|
231
248
|
describe "Class" do
|
232
249
|
it "shoud show superclass (plain)" do
|
data/spec/rails_spec.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
|
+
- 1
|
9
|
+
version: 0.1.1
|
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-04 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|