awesome_print 1.0.2 → 1.1.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.
data/.gitignore CHANGED
@@ -20,3 +20,4 @@ pkg
20
20
 
21
21
  ## PROJECT::SPECIFIC
22
22
  .rvmrc
23
+ .idea
data/CHANGELOG CHANGED
@@ -1,3 +1,14 @@
1
+ 1.1.0
2
+ - Objects are no longer recursively formatted by default. Reenable by using :raw => true option.
3
+ - ap(object) now returns nil when running under IRB or Pry
4
+ - Added support for Mongoid 3 and Moped (Nikolaj Nikolajsen)
5
+ - Improved formatting of MongoMapper objects (George .)
6
+ - ActiveRecord::Relation now renders as array (Dan Lynn)
7
+ - Formatting BigDecimal no longer looses precision (Evan Senter)
8
+ - Added AwesomePrint.irb! and AwesomePrint.pry! convenience methods
9
+ - Fixed conflict with the colorize gem
10
+ - Misc tweaks and bug fixes
11
+
1
12
  1.0.2
2
13
  - Added formatting of Mongoid documents (Adam Doppelt)
3
14
  - ActiveRecord objects display attributes only. Use :raw => true to display the entire object
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- awesome_print (1.0.0)
4
+ awesome_print (1.0.2)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
- Copyright (c) 2010-2011 Michael Dvorkin
2
- twitter.com/mid
1
+ Copyright (c) 2010-2012 Michael Dvorkin
2
+ http://www.dvorkin.net
3
3
  %w(mike dvorkin.net) * "@" || %w(mike fatfreecrm.com) * "@"
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
data/README.md CHANGED
@@ -22,6 +22,7 @@ Default options:
22
22
  :html => false, # Use ANSI color codes rather than HTML.
23
23
  :multiline => true, # Display in multiple lines.
24
24
  :plain => false, # Use colors.
25
+ :raw => false, # Do not recursively format object instance variables.
25
26
  :sort_keys => false, # Do not sort hash keys.
26
27
  :limit => false, # Limit large output for arrays and hashes. Set to a boolean or integer.
27
28
  :color => {
@@ -37,6 +38,7 @@ Default options:
37
38
  :keyword => :cyan,
38
39
  :method => :purpleish,
39
40
  :nilclass => :red,
41
+ :rational => :blue,
40
42
  :string => :yellowish,
41
43
  :struct => :pale,
42
44
  :symbol => :cyanish,
@@ -231,31 +233,15 @@ Supported color names:
231
233
  To use awesome_print as default formatter in irb and Rails console add the following
232
234
  code to your ~/.irbrc file:
233
235
 
234
- require "rubygems"
235
236
  require "awesome_print"
236
-
237
- unless IRB.version.include?('DietRB')
238
- IRB::Irb.class_eval do
239
- def output_value
240
- ap @context.last_value
241
- end
242
- end
243
- else # MacRuby
244
- IRB.formatter = Class.new(IRB::Formatter) do
245
- def inspect_object(object)
246
- object.ai
247
- end
248
- end.new
249
- end
237
+ AwesomePrint.irb!
250
238
 
251
239
  ### PRY integration ###
252
240
  If you miss awesome_print's way of formatting output, here's how you can use it in place
253
241
  of the formatting which comes with pry. Add the following code to your ~/.pryrc:
254
242
 
255
- require "rubygems"
256
243
  require "awesome_print"
257
-
258
- Pry.print = proc { |output, value| output.puts value.ai }
244
+ AwesomePrint.pry!
259
245
 
260
246
  ### Logger Convenience Method ###
261
247
  awesome_print adds the 'ap' method to the Logger and ActiveSupport::BufferedLogger classes
@@ -308,31 +294,38 @@ For example:
308
294
  * Make your feature addition or bug fix.
309
295
  * Add specs for it, making sure $ rake spec is all green.
310
296
  * Commit, do not mess with rakefile, version, or history.
311
- * Send me a pull request.
297
+ * Send me commit URL (*do not* send me pull requests).
312
298
 
313
299
  ### Contributors ###
314
300
 
315
301
  * Adam Doppelt -- https://github.com/gurgeous
316
302
  * Andrew O'Brien -- https://github.com/AndrewO
317
303
  * Andrew Horsman -- https://github.com/basicxman
304
+ * Barry Allard -- https://github.com/steakknife
318
305
  * Benoit Daloze -- http://github.com/eregon
319
306
  * Brandon Zylstra -- https://github.com/brandondrew
307
+ * Dan Lynn -- https://github.com/danlynn
320
308
  * Daniel Johnson -- https://github.com/adhd360
321
309
  * Daniel Bretoi -- http://github.com/danielb2
322
310
  * Eloy Duran -- http://github.com/alloy
323
311
  * Elpizo Choi -- https://github.com/fuJiin
312
+ * Evan Senter -- https://github.com/evansenter
313
+ * George . -- https://github.com/gardelea
324
314
  * Greg Weber -- https://github.com/gregwebs
325
315
  * Jeff Felchner -- https://github.com/jfelchner
316
+ * Nikolaj Nikolajsen -- https://github.com/nikolajsen
317
+ * Ryan Schlesinger -- https://github.com/ryansch
326
318
  * Sean Gallagher -- http://github.com/torandu
327
319
  * Stephan Hagemann -- https://github.com/shageman
328
320
  * Tim Harper -- http://github.com/timcharper
329
321
  * Tobias Crawley -- http://github.com/tobias
322
+ * Thibaut Barrère -- https://github.com/thbar
330
323
  * Viktar Basharymau -- https://github.com/DNNX
331
324
 
332
325
  ### License ###
333
- Copyright (c) 2010-2011 Michael Dvorkin
326
+ Copyright (c) 2010-2012 Michael Dvorkin
334
327
 
335
- twitter.com/mid
328
+ http://www.dvorkin.net
336
329
 
337
330
  %w(mike dvorkin.net) * "@" || %w(mike fatfreecrm.com) * "@"
338
331
 
data/Rakefile CHANGED
@@ -1,2 +1,11 @@
1
- require 'bundler'
1
+ require "bundler"
2
2
  Bundler::GemHelper.install_tasks
3
+
4
+ task :default => :spec
5
+
6
+ desc "Run all awesome_print gem specs"
7
+ task :spec do
8
+ # Run plain rspec command without RSpec::Core::RakeTask overrides.
9
+ exec "rspec -c spec"
10
+ end
11
+
data/lib/ap.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -1,13 +1,13 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
5
  #------------------------------------------------------------------------------
6
6
  #
7
- # AwesomePrint might be loaded implicitly through ~/.irbrc so do nothing
8
- # for subsequent requires.
7
+ # AwesomePrint might be loaded implicitly through ~/.irbrc or ~/.pryrc
8
+ # so do nothing for subsequent requires.
9
9
  #
10
- unless defined?(AwesomePrint)
10
+ unless defined?(AwesomePrint::Inspector)
11
11
  %w(array string method object class kernel).each do |file|
12
12
  require File.dirname(__FILE__) + "/awesome_print/core_ext/#{file}"
13
13
  end
@@ -16,13 +16,15 @@ unless defined?(AwesomePrint)
16
16
  require File.dirname(__FILE__) + "/awesome_print/formatter"
17
17
  require File.dirname(__FILE__) + "/awesome_print/version"
18
18
  require File.dirname(__FILE__) + "/awesome_print/core_ext/logger" if defined?(Logger)
19
-
19
+ #
20
20
  # Load the following under normal circumstances as well as in Rails
21
- # console when required from ~/.irbrc.
22
- require File.dirname(__FILE__) + "/awesome_print/ext/active_record" if defined?(ActiveRecord) || (defined?(IRB) && ENV['RAILS_ENV'])
23
- require File.dirname(__FILE__) + "/awesome_print/ext/active_support" if defined?(ActiveSupport) || (defined?(IRB) && ENV['RAILS_ENV'])
24
-
21
+ # console when required from ~/.irbrc or ~/.pryrc.
22
+ #
23
+ require File.dirname(__FILE__) + "/awesome_print/ext/active_record" if defined?(ActiveRecord) || AwesomePrint.rails_console?
24
+ require File.dirname(__FILE__) + "/awesome_print/ext/active_support" if defined?(ActiveSupport) || AwesomePrint.rails_console?
25
+ #
25
26
  # Load remaining extensions.
27
+ #
26
28
  require File.dirname(__FILE__) + "/awesome_print/ext/action_view" if defined?(ActionView::Base)
27
29
  require File.dirname(__FILE__) + "/awesome_print/ext/mongo_mapper" if defined?(MongoMapper)
28
30
  require File.dirname(__FILE__) + "/awesome_print/ext/mongoid" if defined?(Mongoid)
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -58,7 +58,17 @@ class Array #:nodoc:
58
58
  original_grep(pattern)
59
59
  else
60
60
  original_grep(pattern) do |match|
61
- eval("%Q/#{match.to_s.gsub('/', '\/')}/ =~ #{pattern.inspect}", blk.binding)
61
+ #
62
+ # The binding can only be used with Ruby-defined methods, therefore
63
+ # we must rescue potential "ArgumentError: Can't create Binding from
64
+ # C level Proc" error.
65
+ #
66
+ # For example, the following raises ArgumentError since #succ method
67
+ # is defined in C.
68
+ #
69
+ # [ 0, 1, 2, 3, 4 ].grep(1..2, &:succ)
70
+ #
71
+ eval("%Q/#{match.to_s.gsub('/', '\/')}/ =~ #{pattern.inspect}", blk.binding) rescue ArgumentError
62
72
  yield match
63
73
  end
64
74
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -13,7 +13,7 @@ module Kernel
13
13
 
14
14
  def ap(object, options = {})
15
15
  puts object.ai(options)
16
- object
16
+ object unless AwesomePrint.console?
17
17
  end
18
18
  alias :awesome_print :ap
19
19
 
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -21,6 +21,8 @@ module AwesomePrint
21
21
  cast = :active_record_instance
22
22
  elsif object.is_a?(Class) && object.ancestors.include?(::ActiveRecord::Base)
23
23
  cast = :active_record_class
24
+ elsif type == :activerecord_relation
25
+ cast = :array
24
26
  end
25
27
  cast
26
28
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -14,7 +14,7 @@ module AwesomePrint
14
14
  def cast_with_active_support(object, type)
15
15
  cast = cast_without_active_support(object, type)
16
16
  if defined?(::ActiveSupport) && defined?(::HashWithIndifferentAccess)
17
- if object.is_a?(::ActiveSupport::TimeWithZone) || object.is_a?(::Date)
17
+ if (defined?(::ActiveSupport::TimeWithZone) && object.is_a?(::ActiveSupport::TimeWithZone)) || object.is_a?(::Date)
18
18
  cast = :active_support_time
19
19
  elsif object.is_a?(::HashWithIndifferentAccess)
20
20
  cast = :hash_with_indifferent_access
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -14,10 +14,21 @@ module AwesomePrint
14
14
  # Add MongoMapper class names to the dispatcher pipeline.
15
15
  #------------------------------------------------------------------------------
16
16
  def cast_with_mongo_mapper(object, type)
17
+ apply_default_mongo_mapper_options
17
18
  cast = cast_without_mongo_mapper(object, type)
18
- if defined?(::MongoMapper::Document) && object.is_a?(Class) && (object.ancestors & [ ::MongoMapper::Document, ::MongoMapper::EmbeddedDocument ]).size > 0
19
- cast = :mongo_mapper_class
19
+
20
+ if defined?(::MongoMapper::Document)
21
+ if object.is_a?(Class) && (object.ancestors & [ ::MongoMapper::Document, ::MongoMapper::EmbeddedDocument ]).size > 0
22
+ cast = :mongo_mapper_class
23
+ elsif object.is_a?(::MongoMapper::Document) || object.is_a?(::MongoMapper::EmbeddedDocument)
24
+ cast = :mongo_mapper_instance
25
+ elsif object.is_a?(::MongoMapper::Plugins::Associations::Base)
26
+ cast = :mongo_mapper_association
27
+ elsif object.is_a?(::BSON::ObjectId)
28
+ cast = :mongo_mapper_bson_id
29
+ end
20
30
  end
31
+
21
32
  cast
22
33
  end
23
34
 
@@ -30,8 +41,80 @@ module AwesomePrint
30
41
  hash[c.first] = (c.last.type || "undefined").to_s.underscore.intern
31
42
  hash
32
43
  end
44
+
45
+ # Add in associations
46
+ if @options[:mongo_mapper][:show_associations]
47
+ object.associations.each do |name, assoc|
48
+ data[name.to_s] = assoc
49
+ end
50
+ end
51
+
33
52
  "class #{object} < #{object.superclass} " << awesome_hash(data)
34
53
  end
54
+
55
+ # Format MongoMapper instance object.
56
+ #
57
+ # NOTE: by default only instance attributes (i.e. keys) are shown. To format
58
+ # MongoMapper instance as regular object showing its instance variables and
59
+ # accessors use :raw => true option:
60
+ #
61
+ # ap record, :raw => true
62
+ #
63
+ #------------------------------------------------------------------------------
64
+ def awesome_mongo_mapper_instance(object)
65
+ return object.inspect if !defined?(::ActiveSupport::OrderedHash)
66
+ return awesome_object(object) if @options[:raw]
67
+
68
+ data = object.keys.keys.sort_by{|k| k}.inject(::ActiveSupport::OrderedHash.new) do |hash, name|
69
+ hash[name] = object[name]
70
+ hash
71
+ end
72
+
73
+ # Add in associations
74
+ if @options[:mongo_mapper][:show_associations]
75
+ object.associations.each do |name, assoc|
76
+ if @options[:mongo_mapper][:inline_embedded] and assoc.embeddable?
77
+ data[name.to_s] = object.send(name)
78
+ else
79
+ data[name.to_s] = assoc
80
+ end
81
+ end
82
+ end
83
+
84
+ label = object.to_s
85
+ label = "#{colorize('embedded', :assoc)} #{label}" if object.is_a?(::MongoMapper::EmbeddedDocument)
86
+
87
+ "#{label} " << awesome_hash(data)
88
+ end
89
+
90
+ # Format MongoMapper association object.
91
+ #------------------------------------------------------------------------------
92
+ def awesome_mongo_mapper_association(object)
93
+ return object.inspect if !defined?(::ActiveSupport::OrderedHash)
94
+ return awesome_object(object) if @options[:raw]
95
+
96
+ association = object.class.name.split('::').last.titleize.downcase.sub(/ association$/,'')
97
+ association = "embeds #{association}" if object.embeddable?
98
+ class_name = object.class_name
99
+
100
+ "#{colorize(association, :assoc)} #{colorize(class_name, :class)}"
101
+ end
102
+
103
+ # Format BSON::ObjectId
104
+ #------------------------------------------------------------------------------
105
+ def awesome_mongo_mapper_bson_id(object)
106
+ object.inspect
107
+ end
108
+
109
+ private
110
+
111
+ def apply_default_mongo_mapper_options
112
+ @options[:color][:assoc] ||= :greenish
113
+ @options[:mongo_mapper] ||= {
114
+ :show_associations => false, # Display association data for MongoMapper documents and classes.
115
+ :inline_embedded => false # Display embedded associations inline with MongoMapper documents.
116
+ }
117
+ end
35
118
  end
36
119
  end
37
120
 
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -20,7 +20,7 @@ module AwesomePrint
20
20
  cast = :mongoid_class
21
21
  elsif object.class.ancestors.include?(::Mongoid::Document)
22
22
  cast = :mongoid_document
23
- elsif object.is_a?(::BSON::ObjectId)
23
+ elsif (defined?(::BSON) && object.is_a?(::BSON::ObjectId)) || (defined?(::Moped) && object.is_a?(::Moped::BSON::ObjectId))
24
24
  cast = :mongoid_bson_id
25
25
  end
26
26
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -1,9 +1,9 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
5
  #------------------------------------------------------------------------------
6
- require "cgi"
6
+ autoload :CGI, "cgi"
7
7
  require "shellwords"
8
8
 
9
9
  module AwesomePrint
@@ -39,12 +39,19 @@ module AwesomePrint
39
39
 
40
40
  # Pick the color and apply it to the given string as necessary.
41
41
  #------------------------------------------------------------------------------
42
- def colorize(s, type)
43
- s = CGI.escapeHTML(s) if @options[:html]
42
+ def colorize(str, type)
43
+ str = CGI.escapeHTML(str) if @options[:html]
44
44
  if @options[:plain] || !@options[:color][type] || !@inspector.colorize?
45
- s
45
+ str
46
+ #
47
+ # Check if the string color method is defined by awesome_print and accepts
48
+ # html parameter or it has been overriden by some gem such as colorize.
49
+ #
50
+ elsif str.method(@options[:color][type]).arity == -1 # Accepts html parameter.
51
+ str.send(@options[:color][type], @options[:html])
46
52
  else
47
- s.send(@options[:color][type], @options[:html])
53
+ str = %Q|<kbd style="color:#{@options[:color][type]}">#{str}</kbd>| if @options[:html]
54
+ str.send(@options[:color][type])
48
55
  end
49
56
  end
50
57
 
@@ -54,8 +61,11 @@ module AwesomePrint
54
61
  # Catch all method to format an arbitrary object.
55
62
  #------------------------------------------------------------------------------
56
63
  def awesome_self(object, type)
57
- return awesome_object(object) if object.instance_variables.any?
58
- colorize(object.inspect.to_s, type)
64
+ if @options[:raw] && object.instance_variables.any?
65
+ awesome_object(object)
66
+ else
67
+ colorize(object.inspect.to_s, type)
68
+ end
59
69
  end
60
70
 
61
71
  # Format an array.
@@ -189,12 +199,17 @@ module AwesomePrint
189
199
  colorize(ls.empty? ? d.inspect : "#{d.inspect}\n#{ls.chop}", :dir)
190
200
  end
191
201
 
192
- # Format BigDecimal and Rational objects by convering them to Float.
202
+ # Format BigDecimal object.
193
203
  #------------------------------------------------------------------------------
194
204
  def awesome_bigdecimal(n)
195
- colorize(n.to_f.inspect, :bigdecimal)
205
+ colorize(n.to_s("F"), :bigdecimal)
206
+ end
207
+
208
+ # Format Rational object.
209
+ #------------------------------------------------------------------------------
210
+ def awesome_rational(n)
211
+ colorize(n.to_s, :rational)
196
212
  end
197
- alias :awesome_rational :awesome_bigdecimal
198
213
 
199
214
  # Format a method.
200
215
  #------------------------------------------------------------------------------
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -14,6 +14,37 @@ module AwesomePrint
14
14
  def force_colors!(value = true)
15
15
  @force_colors = value
16
16
  end
17
+
18
+ def console?
19
+ !!(defined?(IRB) || defined?(Pry))
20
+ end
21
+
22
+ def rails_console?
23
+ console? && !!(defined?(Rails::Console) || ENV["RAILS_ENV"])
24
+ end
25
+
26
+ def irb!
27
+ return unless defined?(IRB)
28
+ unless IRB.version.include?("DietRB")
29
+ IRB::Irb.class_eval do
30
+ def output_value
31
+ ap @context.last_value
32
+ end
33
+ end
34
+ else # MacRuby
35
+ IRB.formatter = Class.new(IRB::Formatter) do
36
+ def inspect_object(object)
37
+ object.ai
38
+ end
39
+ end.new
40
+ end
41
+ end
42
+
43
+ def pry!
44
+ if defined?(Pry)
45
+ Pry.print = proc { |output, value| output.puts value.ai }
46
+ end
47
+ end
17
48
  end
18
49
 
19
50
  class Inspector
@@ -28,6 +59,7 @@ module AwesomePrint
28
59
  :html => false, # Use ANSI color codes rather than HTML.
29
60
  :multiline => true, # Display in multiple lines.
30
61
  :plain => false, # Use colors.
62
+ :raw => false, # Do not recursively format object instance variables.
31
63
  :sort_keys => false, # Do not sort hash keys.
32
64
  :limit => false, # Limit large output for arrays and hashes. Set to a boolean or integer.
33
65
  :color => {
@@ -43,6 +75,7 @@ module AwesomePrint
43
75
  :keyword => :cyan,
44
76
  :method => :purpleish,
45
77
  :nilclass => :red,
78
+ :rational => :blue,
46
79
  :string => :yellowish,
47
80
  :struct => :pale,
48
81
  :symbol => :cyanish,
@@ -129,10 +162,8 @@ module AwesomePrint
129
162
  #------------------------------------------------------------------------------
130
163
  def merge_custom_defaults!
131
164
  dotfile = File.join(ENV["HOME"], ".aprc")
132
- if File.readable?(dotfile)
133
- load dotfile
134
- merge_options!(AwesomePrint.defaults)
135
- end
165
+ load dotfile if File.readable?(dotfile)
166
+ merge_options!(AwesomePrint.defaults) if AwesomePrint.defaults.is_a?(Hash)
136
167
  rescue => e
137
168
  $stderr.puts "Could not load #{dotfile}: #{e}"
138
169
  end
@@ -1,10 +1,10 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
5
5
  #------------------------------------------------------------------------------
6
6
  module AwesomePrint
7
7
  def self.version
8
- '1.0.2'
8
+ '1.1.0'
9
9
  end
10
10
  end
@@ -479,14 +479,24 @@ EOS
479
479
 
480
480
  #------------------------------------------------------------------------------
481
481
  describe "BigDecimal and Rational" do
482
- it "should present BigDecimal object as Float scalar" do
483
- big = BigDecimal("2010.4")
484
- big.ai(:plain => true).should == "2010.4"
485
- end
486
-
487
- it "should present Rational object as Float scalar" do
488
- rat = Rational(2010, 2)
489
- rat.ai(:plain => true).should == "1005.0"
482
+ it "should present BigDecimal object with arbitrary precision" do
483
+ big = BigDecimal("201020102010201020102010201020102010.4")
484
+ big.ai(:plain => true).should == "201020102010201020102010201020102010.4"
485
+ end
486
+
487
+ it "should present Rational object with arbitrary precision" do
488
+ rat = Rational(201020102010201020102010201020102010, 2)
489
+ out = rat.ai(:plain => true)
490
+ #
491
+ # Ruby 1.9 slightly changed the format of Rational#to_s, see
492
+ # http://techtime.getharvest.com/blog/harvest-is-now-on-ruby-1-dot-9-3 and
493
+ # http://www.ruby-forum.com/topic/189397
494
+ #
495
+ if RUBY_VERSION < "1.9"
496
+ out.should == "100510051005100510051005100510051005"
497
+ else
498
+ out.should == "100510051005100510051005100510051005/1"
499
+ end
490
500
  end
491
501
  end
492
502
 
@@ -501,7 +511,6 @@ EOS
501
511
  end
502
512
  end
503
513
 
504
-
505
514
  #------------------------------------------------------------------------------
506
515
  describe "Struct" do
507
516
  before do
@@ -573,80 +582,6 @@ EOS
573
582
  end
574
583
  end
575
584
 
576
-
577
- #------------------------------------------------------------------------------
578
- describe "Misc" do
579
- it "handle weird objects that return nil on inspect" do
580
- weird = Class.new do
581
- def inspect
582
- nil
583
- end
584
- end
585
- weird.new.ai(:plain => true).should == ''
586
- end
587
-
588
- it "handle frozen object.inspect" do
589
- weird = Class.new do
590
- def inspect
591
- "ice".freeze
592
- end
593
- end
594
- weird.new.ai(:plain => false).should == "ice"
595
- end
596
-
597
- # See https://github.com/michaeldv/awesome_print/issues/35
598
- it "handle array grep when pattern contains / chapacter" do
599
- hash = { "1/x" => 1, "2//x" => :"2" }
600
- grepped = hash.keys.grep(/^(\d+)\//) { $1 }
601
- grepped.ai(:plain => true, :multiline => false).should == '[ "1", "2" ]'
602
- end
603
-
604
- it "returns value passed as a parameter" do
605
- object = rand
606
- self.stub!(:puts)
607
- (ap object).should == object
608
- end
609
-
610
- # Require different file name this time (lib/ap.rb vs. lib/awesome_print).
611
- it "several require 'awesome_print' should do no harm" do
612
- require File.expand_path(File.dirname(__FILE__) + '/../lib/ap')
613
- lambda { rand.ai }.should_not raise_error
614
- end
615
- end
616
-
617
- describe "HTML output" do
618
- it "wraps ap output with plain <pre> tag" do
619
- markup = rand
620
- markup.ai(:html => true, :plain => true).should == "<pre>#{markup}</pre>"
621
- end
622
-
623
- it "wraps ap output with <pre> tag with colorized <kbd>" do
624
- markup = rand
625
- markup.ai(:html => true).should == %Q|<pre><kbd style="color:blue">#{markup}</kbd></pre>|
626
- end
627
-
628
- it "wraps multiline ap output with <pre> tag with colorized <kbd>" do
629
- markup = [ 1, :two, "three" ]
630
- markup.ai(:html => true).should == <<-EOS.strip
631
- <pre>[
632
- <kbd style="color:white">[0] </kbd><pre><kbd style="color:blue">1</kbd></pre>,
633
- <kbd style="color:white">[1] </kbd><pre><kbd style="color:darkcyan">:two</kbd></pre>,
634
- <kbd style="color:white">[2] </kbd><pre><kbd style="color:brown">&quot;three&quot;</kbd></pre>
635
- ]</pre>
636
- EOS
637
- end
638
-
639
- it "encodes HTML entities (plain)" do
640
- markup = ' &<hello>'
641
- markup.ai(:html => true, :plain => true).should == '<pre>&quot; &amp;&lt;hello&gt;&quot;</pre>'
642
- end
643
-
644
- it "encodes HTML entities (color)" do
645
- markup = ' &<hello>'
646
- markup.ai(:html => true).should == '<pre><kbd style="color:brown">&quot; &amp;&lt;hello&gt;&quot;</kbd></pre>'
647
- end
648
- end
649
-
650
585
  #------------------------------------------------------------------------------
651
586
  describe "Inherited from standard Ruby classes" do
652
587
  after do
@@ -155,9 +155,10 @@ describe "Object methods" do
155
155
  def m1; end
156
156
  def m2; end
157
157
  end
158
+
158
159
  out = Hello.new.private_methods.ai(:plain => true).split("\n").grep(/m\d/)
159
- out.first.should =~ /^\s+\[\d+\]\s+m1\(\)\s+Hello$/
160
- out.last.should =~ /^\s+\[\d+\]\s+m2\(\)\s+Hello$/
160
+ out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello$/
161
+ out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello$/
161
162
  end
162
163
 
163
164
  it "no index: should handle object.private_methods" do
@@ -167,9 +168,9 @@ describe "Object methods" do
167
168
  end
168
169
  out = Hello.new.private_methods.ai(:plain => true).split("\n").grep(/m\d/)
169
170
  if RUBY_VERSION < '1.9.2'
170
- out.first.should =~ /^\s+\[\d+\]\s+m3\(arg1, arg2\)\s+Hello$/
171
+ out.first.should =~ /^\s+\[\s*\d+\]\s+m3\(arg1, arg2\)\s+Hello$/
171
172
  else
172
- out.first.should =~ /^\s+\[\d+\]\s+m3\(a, b\)\s+Hello$/
173
+ out.first.should =~ /^\s+\[\s*\d+\]\s+m3\(a, b\)\s+Hello$/
173
174
  end
174
175
  end
175
176
  end
@@ -183,8 +184,8 @@ describe "Object methods" do
183
184
  end
184
185
  end
185
186
  out = Hello.singleton_methods.ai(:plain => true).split("\n").grep(/m\d/)
186
- out.first.should =~ /^\s+\[\d+\]\s+m1\(\)\s+Hello$/
187
- out.last.should =~ /^\s+\[\d+\]\s+m2\(\)\s+Hello$/
187
+ out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello$/
188
+ out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello$/
188
189
  end
189
190
 
190
191
  it "no index: should handle object.singleton_methods" do
@@ -266,8 +267,8 @@ describe "Class methods" do
266
267
  def m2; end
267
268
  end
268
269
  out = Hello.protected_instance_methods.ai(:plain => true).split("\n").grep(/m\d/)
269
- out.first.should =~ /^\s+\[\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/
270
- out.last.should =~ /^\s+\[\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/
270
+ out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/
271
+ out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/
271
272
  end
272
273
 
273
274
  it "no index: should handle class.protected_instance_methods" do
@@ -410,7 +411,7 @@ describe "Methods arrays" do
410
411
  def self.m_two; end
411
412
  end
412
413
 
413
- out = Hello.methods.grep(/^m_(.+)$/) { $1.to_sym }
414
+ out = Hello.methods.sort.grep(/^m_(.+)$/) { $1.to_sym }
414
415
  out.should == [:one, :two]
415
416
  end
416
417
 
@@ -0,0 +1,213 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "AwesomePrint" do
4
+
5
+ describe "Misc" do
6
+ before do
7
+ stub_dotfile!
8
+ end
9
+
10
+ it "handle weird objects that return nil on inspect" do
11
+ weird = Class.new do
12
+ def inspect
13
+ nil
14
+ end
15
+ end
16
+ weird.new.ai(:plain => true).should == ''
17
+ end
18
+
19
+ it "handle frozen object.inspect" do
20
+ weird = Class.new do
21
+ def inspect
22
+ "ice".freeze
23
+ end
24
+ end
25
+ weird.new.ai(:plain => false).should == "ice"
26
+ end
27
+
28
+ # See https://github.com/michaeldv/awesome_print/issues/35
29
+ it "handle array grep when pattern contains / chapacter" do
30
+ hash = { "1/x" => 1, "2//x" => :"2" }
31
+ grepped = hash.keys.sort.grep(/^(\d+)\//) { $1 }
32
+ grepped.ai(:plain => true, :multiline => false).should == '[ "1", "2" ]'
33
+ end
34
+
35
+ # See https://github.com/michaeldv/awesome_print/issues/85
36
+ if RUBY_VERSION >= "1.8.7"
37
+ it "handle array grep when a method is defined in C and thus doesn't have a binding" do
38
+ arr = (0..6).to_a
39
+ grepped = arr.grep(1..4, &:succ)
40
+ grepped.ai(:plain => true, :multiline => false).should == '[ 2, 3, 4, 5 ]'
41
+ end
42
+ end
43
+
44
+ it "returns value passed as a parameter" do
45
+ object = rand
46
+ self.stub!(:puts)
47
+ (ap object).should == object
48
+ end
49
+
50
+ # Require different file name this time (lib/ap.rb vs. lib/awesome_print).
51
+ it "several require 'awesome_print' should do no harm" do
52
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/ap')
53
+ lambda { rand.ai }.should_not raise_error
54
+ end
55
+ end
56
+
57
+ #------------------------------------------------------------------------------
58
+ describe "HTML output" do
59
+ before do
60
+ stub_dotfile!
61
+ end
62
+
63
+ it "wraps ap output with plain <pre> tag" do
64
+ markup = rand
65
+ markup.ai(:html => true, :plain => true).should == "<pre>#{markup}</pre>"
66
+ end
67
+
68
+ it "wraps ap output with <pre> tag with colorized <kbd>" do
69
+ markup = rand
70
+ markup.ai(:html => true).should == %Q|<pre><kbd style="color:blue">#{markup}</kbd></pre>|
71
+ end
72
+
73
+ it "wraps multiline ap output with <pre> tag with colorized <kbd>" do
74
+ markup = [ 1, :two, "three" ]
75
+ markup.ai(:html => true).should == <<-EOS.strip
76
+ <pre>[
77
+ <kbd style="color:white">[0] </kbd><pre><kbd style="color:blue">1</kbd></pre>,
78
+ <kbd style="color:white">[1] </kbd><pre><kbd style="color:darkcyan">:two</kbd></pre>,
79
+ <kbd style="color:white">[2] </kbd><pre><kbd style="color:brown">&quot;three&quot;</kbd></pre>
80
+ ]</pre>
81
+ EOS
82
+ end
83
+
84
+ it "encodes HTML entities (plain)" do
85
+ markup = ' &<hello>'
86
+ markup.ai(:html => true, :plain => true).should == '<pre>&quot; &amp;&lt;hello&gt;&quot;</pre>'
87
+ end
88
+
89
+ it "encodes HTML entities (color)" do
90
+ markup = ' &<hello>'
91
+ markup.ai(:html => true).should == '<pre><kbd style="color:brown">&quot; &amp;&lt;hello&gt;&quot;</kbd></pre>'
92
+ end
93
+ end
94
+
95
+ #------------------------------------------------------------------------------
96
+ describe "AwesomePrint.defaults" do
97
+ before do
98
+ stub_dotfile!
99
+ end
100
+
101
+ after do
102
+ AwesomePrint.defaults = nil
103
+ end
104
+
105
+ # See https://github.com/michaeldv/awesome_print/issues/98
106
+ it "should properly merge the defaults" do
107
+ AwesomePrint.defaults = { :indent => -2, :sort_keys => true }
108
+ hash = { [0, 0, 255] => :yellow, :red => "rgb(255, 0, 0)", "magenta" => "rgb(255, 0, 255)" }
109
+ out = hash.ai(:plain => true)
110
+ out.should == <<-EOS.strip
111
+ {
112
+ [ 0, 0, 255 ] => :yellow,
113
+ "magenta" => "rgb(255, 0, 255)",
114
+ :red => "rgb(255, 0, 0)"
115
+ }
116
+ EOS
117
+ end
118
+ end
119
+
120
+ #------------------------------------------------------------------------------
121
+ describe "Coexistence with the colorize gem" do
122
+ before do
123
+ stub_dotfile!
124
+ end
125
+
126
+ before do # Redefine String#red just like colorize gem does it.
127
+ @awesome_method = "".method(:red)
128
+
129
+ String.instance_eval do
130
+ define_method :red do # Method arity is now 0 in Ruby 1.9+.
131
+ "[red]#{self}[/red]"
132
+ end
133
+ end
134
+ end
135
+
136
+ after do # Restore String#red method.
137
+ awesome_method = @awesome_method
138
+ String.instance_eval do
139
+ define_method :red, awesome_method
140
+ end
141
+ end
142
+
143
+ it "shoud not raise ArgumentError when formatting HTML" do
144
+ out = "hello".ai(:color => { :string => :red }, :html => true)
145
+ if RUBY_VERSION >= "1.9"
146
+ out.should == %Q|<pre>[red]<kbd style="color:red">&quot;hello&quot;</kbd>[/red]</pre>|
147
+ else
148
+ out.should == %Q|<pre>[red]&quot;hello&quot;[/red]</pre>|
149
+ end
150
+ end
151
+
152
+ it "shoud not raise ArgumentError when formatting HTML (shade color)" do
153
+ out = "hello".ai(:color => { :string => :redish }, :html => true)
154
+ out.should == %Q|<pre><kbd style="color:darkred">&quot;hello&quot;</kbd></pre>|
155
+ end
156
+
157
+ it "shoud not raise ArgumentError when formatting non-HTML" do
158
+ out = "hello".ai(:color => { :string => :red }, :html => false)
159
+ out.should == %Q|[red]"hello"[/red]|
160
+ end
161
+
162
+ it "shoud not raise ArgumentError when formatting non-HTML (shade color)" do
163
+ out = "hello".ai(:color => { :string => :redish }, :html => false)
164
+ out.should == %Q|\e[0;31m"hello"\e[0m|
165
+ end
166
+ end
167
+
168
+ #------------------------------------------------------------------------------
169
+ describe "Console" do
170
+ it "should detect IRB" do
171
+ class IRB; end
172
+ AwesomePrint.console?.should == true
173
+ AwesomePrint.rails_console?.should == false
174
+ Object.instance_eval{ remove_const :IRB }
175
+ end
176
+
177
+ it "should detect Pry" do
178
+ class Pry; end
179
+ AwesomePrint.console?.should == true
180
+ AwesomePrint.rails_console?.should == false
181
+ Object.instance_eval{ remove_const :Pry }
182
+ end
183
+
184
+ it "should detect Rails::Console" do
185
+ class IRB; end
186
+ class Rails; class Console; end; end
187
+ AwesomePrint.console?.should == true
188
+ AwesomePrint.rails_console?.should == true
189
+ Object.instance_eval{ remove_const :IRB }
190
+ Object.instance_eval{ remove_const :Rails }
191
+ end
192
+
193
+ it "should detect ENV['RAILS_ENV']" do
194
+ class Pry; end
195
+ ENV["RAILS_ENV"] = "development"
196
+ AwesomePrint.console?.should == true
197
+ AwesomePrint.rails_console?.should == true
198
+ Object.instance_eval{ remove_const :Pry }
199
+ end
200
+
201
+ it "should return the actual object when *not* running under console" do
202
+ capture! { ap([ 1, 2, 3 ]) }.should == [ 1, 2, 3 ]
203
+ capture! { ap({ :a => 1 }) }.should == { :a => 1 }
204
+ end
205
+
206
+ it "should return nil when running under console" do
207
+ class IRB; end
208
+ capture! { ap([ 1, 2, 3 ]) }.should == nil
209
+ capture! { ap({ :a => 1 }) }.should == nil
210
+ Object.instance_eval{ remove_const :IRB }
211
+ end
212
+ end
213
+ end
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
- describe "Single method" do
3
+ describe "Objects" do
4
4
  before do
5
5
  stub_dotfile!
6
6
  end
@@ -9,7 +9,7 @@ describe "Single method" do
9
9
  Object.instance_eval{ remove_const :Hello } if defined?(Hello)
10
10
  end
11
11
 
12
- describe "object" do
12
+ describe "Formatting an object" do
13
13
  it "attributes" do
14
14
  class Hello
15
15
  attr_reader :abra
@@ -21,7 +21,8 @@ describe "Single method" do
21
21
  end
22
22
  end
23
23
 
24
- out = Hello.new.ai(:plain => true)
24
+ hello = Hello.new
25
+ out = hello.ai(:plain => true, :raw => true)
25
26
  str = <<-EOS.strip
26
27
  #<Hello:0x01234567
27
28
  attr_accessor :dabra = 3,
@@ -30,6 +31,7 @@ describe "Single method" do
30
31
  >
31
32
  EOS
32
33
  out.gsub(/0x([a-f\d]+)/, "0x01234567").should == str
34
+ hello.ai(:plain => true, :raw => false).should == hello.inspect
33
35
  end
34
36
 
35
37
  it "instance variables" do
@@ -39,7 +41,8 @@ EOS
39
41
  end
40
42
  end
41
43
 
42
- out = Hello.new.ai(:plain => true)
44
+ hello = Hello.new
45
+ out = hello.ai(:plain => true, :raw => true)
43
46
  str = <<-EOS.strip
44
47
  #<Hello:0x01234567
45
48
  @abra = 1,
@@ -48,6 +51,7 @@ EOS
48
51
  >
49
52
  EOS
50
53
  out.gsub(/0x([a-f\d]+)/, "0x01234567").should == str
54
+ hello.ai(:plain => true, :raw => false).should == hello.inspect
51
55
  end
52
56
 
53
57
  it "attributes and instance variables" do
@@ -62,7 +66,8 @@ EOS
62
66
  end
63
67
  end
64
68
 
65
- out = Hello.new.ai(:plain => true)
69
+ hello = Hello.new
70
+ out = hello.ai(:plain => true, :raw => true)
66
71
  str = <<-EOS.strip
67
72
  #<Hello:0x01234567
68
73
  @doo = 1,
@@ -74,6 +79,7 @@ EOS
74
79
  >
75
80
  EOS
76
81
  out.gsub(/0x([a-f\d]+)/, "0x01234567").should == str
82
+ hello.ai(:plain => true, :raw => false).should == hello.inspect
77
83
  end
78
84
  end
79
85
  end
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2010-2011 Michael Dvorkin
1
+ # Copyright (c) 2010-2012 Michael Dvorkin
2
2
  #
3
3
  # Awesome Print is freely distributable under the terms of MIT license.
4
4
  # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
@@ -6,7 +6,13 @@
6
6
  #
7
7
  # Running specs from the command line:
8
8
  # $ rake spec # Entire spec suite.
9
- # $ rspec spec/logger_spec.rb # Individual spec file.
9
+ # $ rspec spec/objects_spec.rb # Individual spec file.
10
+ #
11
+ # NOTE: To successfully run specs with Ruby 1.8.6 the older versions of
12
+ # Bundler and RSpec gems are required:
13
+ #
14
+ # $ gem install bundler -v=1.0.2
15
+ # $ gem install rspec -v=2.6.0
10
16
  #
11
17
  $LOAD_PATH.unshift(File.dirname(__FILE__))
12
18
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
@@ -17,6 +23,13 @@ def stub_dotfile!
17
23
  File.should_receive(:readable?).at_least(:once).with(dotfile).and_return(false)
18
24
  end
19
25
 
26
+ def capture!
27
+ standard, $stdout = $stdout, StringIO.new
28
+ yield
29
+ ensure
30
+ $stdout = standard
31
+ end
32
+
20
33
  # The following is needed for the Infinity Test. It runs tests as subprocesses,
21
34
  # which sets STDOUT.tty? to false and would otherwise prematurely disallow colors.
22
35
  ### AwesomePrint.force_colors!
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awesome_print
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease:
5
- version: 1.0.2
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 0
10
+ version: 1.1.0
6
11
  platform: ruby
7
12
  authors:
8
13
  - Michael Dvorkin
@@ -10,7 +15,7 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-12-20 00:00:00 Z
18
+ date: 2012-09-11 00:00:00 Z
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: rspec
@@ -20,6 +25,11 @@ dependencies:
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
28
+ hash: 23
29
+ segments:
30
+ - 2
31
+ - 6
32
+ - 0
23
33
  version: 2.6.0
24
34
  type: :development
25
35
  version_requirements: *id001
@@ -31,6 +41,11 @@ dependencies:
31
41
  requirements:
32
42
  - - ">="
33
43
  - !ruby/object:Gem::Version
44
+ hash: 21
45
+ segments:
46
+ - 0
47
+ - 2
48
+ - 1
34
49
  version: 0.2.1
35
50
  type: :development
36
51
  version_requirements: *id002
@@ -70,6 +85,7 @@ files:
70
85
  - spec/colors_spec.rb
71
86
  - spec/formats_spec.rb
72
87
  - spec/methods_spec.rb
88
+ - spec/misc_spec.rb
73
89
  - spec/objects_spec.rb
74
90
  - spec/spec_helper.rb
75
91
  - .gitignore
@@ -86,17 +102,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
86
102
  requirements:
87
103
  - - ">="
88
104
  - !ruby/object:Gem::Version
105
+ hash: 3
106
+ segments:
107
+ - 0
89
108
  version: "0"
90
109
  required_rubygems_version: !ruby/object:Gem::Requirement
91
110
  none: false
92
111
  requirements:
93
112
  - - ">="
94
113
  - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 0
95
117
  version: "0"
96
118
  requirements: []
97
119
 
98
120
  rubyforge_project: awesome_print
99
- rubygems_version: 1.8.5
121
+ rubygems_version: 1.8.24
100
122
  signing_key:
101
123
  specification_version: 3
102
124
  summary: Pretty print Ruby objects with proper indentation and colors
@@ -104,5 +126,6 @@ test_files:
104
126
  - spec/colors_spec.rb
105
127
  - spec/formats_spec.rb
106
128
  - spec/methods_spec.rb
129
+ - spec/misc_spec.rb
107
130
  - spec/objects_spec.rb
108
131
  - spec/spec_helper.rb