awesome_print 0.1.4 → 0.2.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/CHANGELOG +6 -0
 - data/README.md +33 -1
 - data/VERSION +1 -1
 - data/lib/ap.rb +5 -1
 - data/lib/ap/awesome_print.rb +6 -5
 - data/lib/ap/core_ext/logger.rb +18 -0
 - data/lib/ap/mixin/{rails.rb → active_record.rb} +8 -15
 - data/lib/ap/mixin/active_support.rb +44 -0
 - data/spec/{rails_spec.rb → active_record_spec.rb} +38 -8
 - data/spec/awesome_print_spec.rb +1 -1
 - data/spec/logger_spec.rb +43 -0
 - data/spec/spec_helper.rb +1 -0
 - metadata +11 -7
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,3 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            0.2.0
         
     | 
| 
      
 2 
     | 
    
         
            +
              - Added support for logger.ap (including Rails logger)
         
     | 
| 
      
 3 
     | 
    
         
            +
              - Added support for HashWithIndifferentAccess from ActiveSupport
         
     | 
| 
      
 4 
     | 
    
         
            +
              - ap now works with scripts that use ActiveRecord/ActiveSupport outside Rails
         
     | 
| 
      
 5 
     | 
    
         
            +
              - ap now correctly shows file and directory names with fancy characters (shell escape)
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       1 
7 
     | 
    
         
             
            0.1.4
         
     | 
| 
       2 
8 
     | 
    
         
             
              - Format BigDecimal and Rational objects as Float scalars
         
     | 
| 
       3 
9 
     | 
    
         
             
              - Explicit options parameter can override custom defaults
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -144,6 +144,32 @@ Supported color names: 
     | 
|
| 
       144 
144 
     | 
    
         
             
                }
         
     | 
| 
       145 
145 
     | 
    
         
             
                rails>
         
     | 
| 
       146 
146 
     | 
    
         | 
| 
      
 147 
     | 
    
         
            +
            ### IRB integration ###
         
     | 
| 
      
 148 
     | 
    
         
            +
            To use awesome_print as default formatter in irb and Rails console add the following
         
     | 
| 
      
 149 
     | 
    
         
            +
            lines into your ~/.irbrc file:
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            	require "rubygems"
         
     | 
| 
      
 152 
     | 
    
         
            +
            	require "ap"
         
     | 
| 
      
 153 
     | 
    
         
            +
            	IRB::Irb.class_eval do
         
     | 
| 
      
 154 
     | 
    
         
            +
            	  def output_value
         
     | 
| 
      
 155 
     | 
    
         
            +
            	    ap @context.last_value
         
     | 
| 
      
 156 
     | 
    
         
            +
            	  end
         
     | 
| 
      
 157 
     | 
    
         
            +
            	end
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
            ### Logger Convenience Method ###
         
     | 
| 
      
 160 
     | 
    
         
            +
            awesome_print adds an ap method to the Logger and ActiveSupport::BufferedLogger classes,
         
     | 
| 
      
 161 
     | 
    
         
            +
            allowing you to call:
         
     | 
| 
      
 162 
     | 
    
         
            +
             
     | 
| 
      
 163 
     | 
    
         
            +
                logger.ap object
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
            By default, this logs at the :debug level. You can override that globally with
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
                :log_level => :info
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
            in the custom defaults (see below), or you can override on a per call basis with
         
     | 
| 
      
 170 
     | 
    
         
            +
             
     | 
| 
      
 171 
     | 
    
         
            +
                logger.ap object, :warn
         
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
       147 
173 
     | 
    
         
             
            ### Setting Custom Defaults ###
         
     | 
| 
       148 
174 
     | 
    
         
             
            You can set your own default options by creating ``.aprc`` file in your home
         
     | 
| 
       149 
175 
     | 
    
         
             
            directory. Within that file assign your  defaults to ``AwesomePrint.defaults``.
         
     | 
| 
         @@ -165,8 +191,14 @@ For example: 
     | 
|
| 
       165 
191 
     | 
    
         
             
            * Commit, do not mess with rakefile, version, or history.
         
     | 
| 
       166 
192 
     | 
    
         
             
            * Send me a pull request.
         
     | 
| 
       167 
193 
     | 
    
         | 
| 
      
 194 
     | 
    
         
            +
            ### Contributors ###
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
            * Daniel Bretoi -- http://github.com/danielb2
         
     | 
| 
      
 197 
     | 
    
         
            +
            * eregon -- http://github.com/eregon
         
     | 
| 
      
 198 
     | 
    
         
            +
            * Tobias Crawley -- http://github.com/tobias
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
       168 
200 
     | 
    
         
             
            ### License ###
         
     | 
| 
       169 
201 
     | 
    
         
             
            Copyright (c) 2010 Michael Dvorkin  
         
     | 
| 
       170 
202 
     | 
    
         
             
            %w(mike dvorkin.net) * "@" || %w(mike fatfreecrm.com) * "@"
         
     | 
| 
       171 
203 
     | 
    
         | 
| 
       172 
     | 
    
         
            -
            Released under the MIT license. See LICENSE file for details.
         
     | 
| 
      
 204 
     | 
    
         
            +
            Released under the MIT license. See LICENSE file for details.
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.2.0
         
     | 
    
        data/lib/ap.rb
    CHANGED
    
    | 
         @@ -7,4 +7,8 @@ require File.dirname(__FILE__) + "/ap/core_ext/string" 
     | 
|
| 
       7 
7 
     | 
    
         
             
            require File.dirname(__FILE__) + "/ap/core_ext/kernel"
         
     | 
| 
       8 
8 
     | 
    
         
             
            require File.dirname(__FILE__) + "/ap/awesome_print"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            require File.dirname(__FILE__) + "/ap/ 
     | 
| 
      
 10 
     | 
    
         
            +
            require File.dirname(__FILE__) + "/ap/core_ext/logger" if defined?(::Logger) or defined?(::ActiveSupport::BufferedLogger)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            require File.dirname(__FILE__) + "/ap/mixin/active_record" if defined?(::ActiveRecord)
         
     | 
| 
      
 13 
     | 
    
         
            +
            require File.dirname(__FILE__) + "/ap/mixin/active_support" if defined?(::ActiveSupport)
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
    
        data/lib/ap/awesome_print.rb
    CHANGED
    
    | 
         @@ -3,6 +3,8 @@ 
     | 
|
| 
       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 "shellwords"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       6 
8 
     | 
    
         
             
            class AwesomePrint
         
     | 
| 
       7 
9 
     | 
    
         
             
              AP = :__awesome_print__
         
     | 
| 
       8 
10 
     | 
    
         
             
              CORE = [ :array, :hash, :class, :file, :dir, :bigdecimal, :rational ]
         
     | 
| 
         @@ -20,7 +22,7 @@ class AwesomePrint 
     | 
|
| 
       20 
22 
     | 
    
         
             
                    :falseclass => :red,
         
     | 
| 
       21 
23 
     | 
    
         
             
                    :fixnum     => :blue,
         
     | 
| 
       22 
24 
     | 
    
         
             
                    :float      => :blue,
         
     | 
| 
       23 
     | 
    
         
            -
                    :hash       => : 
     | 
| 
      
 25 
     | 
    
         
            +
                    :hash       => :pale,
         
     | 
| 
       24 
26 
     | 
    
         
             
                    :nilclass   => :red,
         
     | 
| 
       25 
27 
     | 
    
         
             
                    :string     => :yellowish,
         
     | 
| 
       26 
28 
     | 
    
         
             
                    :symbol     => :cyanish,
         
     | 
| 
         @@ -36,8 +38,7 @@ class AwesomePrint 
     | 
|
| 
       36 
38 
     | 
    
         
             
                @indentation = @options[:indent].abs
         
     | 
| 
       37 
39 
     | 
    
         
             
                Thread.current[AP] ||= []
         
     | 
| 
       38 
40 
     | 
    
         
             
              end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
      
 41 
     | 
    
         
            +
              
         
     | 
| 
       41 
42 
     | 
    
         
             
              private
         
     | 
| 
       42 
43 
     | 
    
         | 
| 
       43 
44 
     | 
    
         
             
              # Format an array.
         
     | 
| 
         @@ -104,14 +105,14 @@ class AwesomePrint 
     | 
|
| 
       104 
105 
     | 
    
         
             
              # Format File object.
         
     | 
| 
       105 
106 
     | 
    
         
             
              #------------------------------------------------------------------------------
         
     | 
| 
       106 
107 
     | 
    
         
             
              def awesome_file(f)
         
     | 
| 
       107 
     | 
    
         
            -
                ls = File.directory?(f) ? `ls -adlF #{f.path}` : `ls -alF #{f.path}`
         
     | 
| 
      
 108 
     | 
    
         
            +
                ls = File.directory?(f) ? `ls -adlF #{f.path.shellescape}` : `ls -alF #{f.path.shellescape}`
         
     | 
| 
       108 
109 
     | 
    
         
             
                awesome_self(f, :with => ls.empty? ? nil : "\n#{ls.chop}")
         
     | 
| 
       109 
110 
     | 
    
         
             
              end
         
     | 
| 
       110 
111 
     | 
    
         | 
| 
       111 
112 
     | 
    
         
             
              # Format Dir object.
         
     | 
| 
       112 
113 
     | 
    
         
             
              #------------------------------------------------------------------------------
         
     | 
| 
       113 
114 
     | 
    
         
             
              def awesome_dir(d)
         
     | 
| 
       114 
     | 
    
         
            -
                ls = `ls -alF #{d.path}`
         
     | 
| 
      
 115 
     | 
    
         
            +
                ls = `ls -alF #{d.path.shellescape}`
         
     | 
| 
       115 
116 
     | 
    
         
             
                awesome_self(d, :with => ls.empty? ? nil : "\n#{ls.chop}")
         
     | 
| 
       116 
117 
     | 
    
         
             
              end
         
     | 
| 
       117 
118 
     | 
    
         | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright (c) 2010 Michael Dvorkin
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Awesome Print is freely distributable under the terms of MIT license.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
         
     | 
| 
      
 5 
     | 
    
         
            +
            #------------------------------------------------------------------------------
         
     | 
| 
      
 6 
     | 
    
         
            +
            module AwesomePrintLogger
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              # Add ap method to logger
         
     | 
| 
      
 9 
     | 
    
         
            +
              #------------------------------------------------------------------------------
         
     | 
| 
      
 10 
     | 
    
         
            +
              def ap(object, level = nil)
         
     | 
| 
      
 11 
     | 
    
         
            +
                level ||= AwesomePrint.defaults[:log_level] || :debug
         
     | 
| 
      
 12 
     | 
    
         
            +
                send level, object.ai
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            Logger.send(:include, AwesomePrintLogger) if defined?(Logger)
         
     | 
| 
      
 18 
     | 
    
         
            +
            ActiveSupport::BufferedLogger.send(:include, AwesomePrintLogger) if defined?(::ActiveSupport::BufferedLogger)
         
     | 
| 
         @@ -3,23 +3,22 @@ 
     | 
|
| 
       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 
     | 
    
         
            -
            module  
     | 
| 
      
 6 
     | 
    
         
            +
            module AwesomePrintActiveRecord
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
              def self.included(base)
         
     | 
| 
       9 
     | 
    
         
            -
                base. 
     | 
| 
      
 9 
     | 
    
         
            +
                base.send :alias_method, :printable_without_active_record, :printable
         
     | 
| 
      
 10 
     | 
    
         
            +
                base.send :alias_method, :printable, :printable_with_active_record
         
     | 
| 
       10 
11 
     | 
    
         
             
              end
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
              # Add ActiveRecord class names to the dispatcher pipeline.
         
     | 
| 
       13 
14 
     | 
    
         
             
              #------------------------------------------------------------------------------
         
     | 
| 
       14 
     | 
    
         
            -
              def  
     | 
| 
       15 
     | 
    
         
            -
                printable =  
     | 
| 
      
 15 
     | 
    
         
            +
              def printable_with_active_record(object)
         
     | 
| 
      
 16 
     | 
    
         
            +
                printable = printable_without_active_record(object)
         
     | 
| 
       16 
17 
     | 
    
         
             
                if printable == :self
         
     | 
| 
       17 
18 
     | 
    
         
             
                  if object.is_a?(ActiveRecord::Base)
         
     | 
| 
       18 
19 
     | 
    
         
             
                    printable = :active_record_instance
         
     | 
| 
       19 
     | 
    
         
            -
                  elsif object.is_a?(ActiveSupport::TimeWithZone)
         
     | 
| 
       20 
     | 
    
         
            -
                    printable = :active_support_time
         
     | 
| 
       21 
20 
     | 
    
         
             
                  end
         
     | 
| 
       22 
     | 
    
         
            -
                elsif printable == :class  
     | 
| 
      
 21 
     | 
    
         
            +
                elsif printable == :class and object.ancestors.include?(ActiveRecord::Base)
         
     | 
| 
       23 
22 
     | 
    
         
             
                  printable = :active_record_class
         
     | 
| 
       24 
23 
     | 
    
         
             
                end
         
     | 
| 
       25 
24 
     | 
    
         
             
                printable
         
     | 
| 
         @@ -48,13 +47,7 @@ module AwesomePrintRails 
     | 
|
| 
       48 
47 
     | 
    
         
             
                  object.inspect
         
     | 
| 
       49 
48 
     | 
    
         
             
                end
         
     | 
| 
       50 
49 
     | 
    
         
             
              end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
              # Format ActiveSupport::TimeWithZone as standard Time.
         
     | 
| 
       53 
     | 
    
         
            -
              #------------------------------------------------------------------------------
         
     | 
| 
       54 
     | 
    
         
            -
              def awesome_active_support_time(object)
         
     | 
| 
       55 
     | 
    
         
            -
                awesome_self(object, :as => :time)
         
     | 
| 
       56 
     | 
    
         
            -
              end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 50 
     | 
    
         
            +
              
         
     | 
| 
       58 
51 
     | 
    
         
             
            end
         
     | 
| 
       59 
52 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
            AwesomePrint.send(:include,  
     | 
| 
      
 53 
     | 
    
         
            +
            AwesomePrint.send(:include, AwesomePrintActiveRecord)
         
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Copyright (c) 2010 Michael Dvorkin
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Awesome Print is freely distributable under the terms of MIT license.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # See LICENSE file or http://www.opensource.org/licenses/mit-license.php
         
     | 
| 
      
 5 
     | 
    
         
            +
            #------------------------------------------------------------------------------
         
     | 
| 
      
 6 
     | 
    
         
            +
            module AwesomePrintActiveSupport
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              def self.included(base)
         
     | 
| 
      
 9 
     | 
    
         
            +
                base.send :alias_method, :printable_without_active_support, :printable
         
     | 
| 
      
 10 
     | 
    
         
            +
                base.send :alias_method, :printable, :printable_with_active_support
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              # Add ActiveSupport class names to the dispatcher pipeline.
         
     | 
| 
      
 14 
     | 
    
         
            +
              #------------------------------------------------------------------------------
         
     | 
| 
      
 15 
     | 
    
         
            +
              def printable_with_active_support(object)
         
     | 
| 
      
 16 
     | 
    
         
            +
                printable = printable_without_active_support(object)
         
     | 
| 
      
 17 
     | 
    
         
            +
                if printable == :self
         
     | 
| 
      
 18 
     | 
    
         
            +
                  if object.is_a?(ActiveSupport::TimeWithZone)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    printable = :active_support_time
         
     | 
| 
      
 20 
     | 
    
         
            +
                  elsif object.is_a?(HashWithIndifferentAccess)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    printable = :hash_with_indifferent_access
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
                printable
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              # Format ActiveSupport::TimeWithZone as standard Time.
         
     | 
| 
      
 28 
     | 
    
         
            +
              #------------------------------------------------------------------------------
         
     | 
| 
      
 29 
     | 
    
         
            +
              def awesome_active_support_time(object)
         
     | 
| 
      
 30 
     | 
    
         
            +
                awesome_self(object, :as => :time)
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              # Format HashWithIndifferentAccess as standard Hash.
         
     | 
| 
      
 34 
     | 
    
         
            +
              #
         
     | 
| 
      
 35 
     | 
    
         
            +
              # NOTE: can't use awesome_self(object, :as => :hash) since awesome_self uses
         
     | 
| 
      
 36 
     | 
    
         
            +
              # object.inspect internally, i.e. it would convert hash to string.
         
     | 
| 
      
 37 
     | 
    
         
            +
              #------------------------------------------------------------------------------
         
     | 
| 
      
 38 
     | 
    
         
            +
              def awesome_hash_with_indifferent_access(object)
         
     | 
| 
      
 39 
     | 
    
         
            +
                awesome_hash(object)
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            AwesomePrint.send(:include, AwesomePrintActiveSupport)
         
     | 
| 
         @@ -1,6 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'active_record'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'ap/mixin/active_record'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            if defined?(::ActiveRecord)
         
     | 
| 
       4 
8 
     | 
    
         | 
| 
       5 
9 
     | 
    
         
             
              # Create tableless ActiveRecord model.
         
     | 
| 
       6 
10 
     | 
    
         
             
              #------------------------------------------------------------------------------
         
     | 
| 
         @@ -18,9 +22,19 @@ if defined?(::Rails) 
     | 
|
| 
       18 
22 
     | 
    
         
             
                column :rank, :integer
         
     | 
| 
       19 
23 
     | 
    
         
             
                column :admin, :boolean
         
     | 
| 
       20 
24 
     | 
    
         
             
                column :created_at, :datetime
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
25 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
                def self.table_exists?
         
     | 
| 
      
 27 
     | 
    
         
            +
                  true
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
              
         
     | 
| 
      
 31 
     | 
    
         
            +
              class SubUser < User
         
     | 
| 
      
 32 
     | 
    
         
            +
                def self.columns
         
     | 
| 
      
 33 
     | 
    
         
            +
                  User.columns
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
              
         
     | 
| 
      
 37 
     | 
    
         
            +
              describe "AwesomePrint/ActiveRecord" do
         
     | 
| 
       24 
38 
     | 
    
         
             
                before(:each) do
         
     | 
| 
       25 
39 
     | 
    
         
             
                  stub_dotfile!
         
     | 
| 
       26 
40 
     | 
    
         
             
                end
         
     | 
| 
         @@ -28,6 +42,7 @@ if defined?(::Rails) 
     | 
|
| 
       28 
42 
     | 
    
         
             
                #------------------------------------------------------------------------------
         
     | 
| 
       29 
43 
     | 
    
         
             
                describe "ActiveRecord instance" do
         
     | 
| 
       30 
44 
     | 
    
         
             
                  before(:each) do
         
     | 
| 
      
 45 
     | 
    
         
            +
                    ActiveRecord::Base.default_timezone = :utc
         
     | 
| 
       31 
46 
     | 
    
         
             
                    @diana = User.new(:name => "Diana", :rank => 1, :admin => false, :created_at => "1992-10-10 12:30:00")
         
     | 
| 
       32 
47 
     | 
    
         
             
                    @laura = User.new(:name => "Laura", :rank => 2, :admin => true,  :created_at => "2003-05-26 14:15:00")
         
     | 
| 
       33 
48 
     | 
    
         
             
                    @ap = AwesomePrint.new(:plain => true)
         
     | 
| 
         @@ -41,7 +56,7 @@ if defined?(::Rails) 
     | 
|
| 
       41 
56 
     | 
    
         
             
                      :name => "Diana",
         
     | 
| 
       42 
57 
     | 
    
         
             
                      :rank => 1,
         
     | 
| 
       43 
58 
     | 
    
         
             
                     :admin => false,
         
     | 
| 
       44 
     | 
    
         
            -
                :created_at => Sat 
     | 
| 
      
 59 
     | 
    
         
            +
                :created_at => Sat Oct 10 12:30:00 UTC 1992
         
     | 
| 
       45 
60 
     | 
    
         
             
            }
         
     | 
| 
       46 
61 
     | 
    
         
             
            EOS
         
     | 
| 
       47 
62 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -55,14 +70,14 @@ EOS 
     | 
|
| 
       55 
70 
     | 
    
         
             
                          :name => "Diana",
         
     | 
| 
       56 
71 
     | 
    
         
             
                          :rank => 1,
         
     | 
| 
       57 
72 
     | 
    
         
             
                         :admin => false,
         
     | 
| 
       58 
     | 
    
         
            -
                    :created_at => Sat 
     | 
| 
      
 73 
     | 
    
         
            +
                    :created_at => Sat Oct 10 12:30:00 UTC 1992
         
     | 
| 
       59 
74 
     | 
    
         
             
                },
         
     | 
| 
       60 
75 
     | 
    
         
             
                [1] #<User:0x01234567> {
         
     | 
| 
       61 
76 
     | 
    
         
             
                            :id => nil,
         
     | 
| 
       62 
77 
     | 
    
         
             
                          :name => "Laura",
         
     | 
| 
       63 
78 
     | 
    
         
             
                          :rank => 2,
         
     | 
| 
       64 
79 
     | 
    
         
             
                         :admin => true,
         
     | 
| 
       65 
     | 
    
         
            -
                    :created_at => Mon 
     | 
| 
      
 80 
     | 
    
         
            +
                    :created_at => Mon May 26 14:15:00 UTC 2003
         
     | 
| 
       66 
81 
     | 
    
         
             
                }
         
     | 
| 
       67 
82 
     | 
    
         
             
            ]
         
     | 
| 
       68 
83 
     | 
    
         
             
            EOS
         
     | 
| 
         @@ -71,7 +86,7 @@ EOS 
     | 
|
| 
       71 
86 
     | 
    
         | 
| 
       72 
87 
     | 
    
         
             
                #------------------------------------------------------------------------------
         
     | 
| 
       73 
88 
     | 
    
         
             
                describe "ActiveRecord class" do
         
     | 
| 
       74 
     | 
    
         
            -
                  it "should" do
         
     | 
| 
      
 89 
     | 
    
         
            +
                  it "should print the class" do
         
     | 
| 
       75 
90 
     | 
    
         
             
                    @ap = AwesomePrint.new(:plain => true)
         
     | 
| 
       76 
91 
     | 
    
         
             
                    @ap.send(:awesome, User).should == <<-EOS.strip
         
     | 
| 
       77 
92 
     | 
    
         
             
            class User < ActiveRecord::Base {
         
     | 
| 
         @@ -81,7 +96,22 @@ class User < ActiveRecord::Base { 
     | 
|
| 
       81 
96 
     | 
    
         
             
                     :admin => :boolean,
         
     | 
| 
       82 
97 
     | 
    
         
             
                :created_at => :datetime
         
     | 
| 
       83 
98 
     | 
    
         
             
            }
         
     | 
| 
       84 
     | 
    
         
            -
            EOS
         
     | 
| 
      
 99 
     | 
    
         
            +
                    EOS
         
     | 
| 
      
 100 
     | 
    
         
            +
              
         
     | 
| 
      
 101 
     | 
    
         
            +
            end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            it "should print the class for non-direct subclasses of AR::Base" do
         
     | 
| 
      
 104 
     | 
    
         
            +
              @ap = AwesomePrint.new(:plain => true)
         
     | 
| 
      
 105 
     | 
    
         
            +
              @ap.send(:awesome, SubUser).should == <<-EOS.strip
         
     | 
| 
      
 106 
     | 
    
         
            +
            class SubUser < User {
         
     | 
| 
      
 107 
     | 
    
         
            +
                        :id => :integer,
         
     | 
| 
      
 108 
     | 
    
         
            +
                      :name => :string,
         
     | 
| 
      
 109 
     | 
    
         
            +
                      :rank => :integer,
         
     | 
| 
      
 110 
     | 
    
         
            +
                     :admin => :boolean,
         
     | 
| 
      
 111 
     | 
    
         
            +
                :created_at => :datetime
         
     | 
| 
      
 112 
     | 
    
         
            +
            }
         
     | 
| 
      
 113 
     | 
    
         
            +
              EOS
         
     | 
| 
      
 114 
     | 
    
         
            +
              
         
     | 
| 
       85 
115 
     | 
    
         
             
                  end
         
     | 
| 
       86 
116 
     | 
    
         
             
                end
         
     | 
| 
       87 
117 
     | 
    
         
             
              end
         
     | 
    
        data/spec/awesome_print_spec.rb
    CHANGED
    
    | 
         @@ -267,7 +267,7 @@ EOS 
     | 
|
| 
       267 
267 
     | 
    
         
             
              #------------------------------------------------------------------------------
         
     | 
| 
       268 
268 
     | 
    
         
             
              describe "BigDecimal and Rational" do
         
     | 
| 
       269 
269 
     | 
    
         
             
                it "should present BigDecimal object as Float scalar" do
         
     | 
| 
       270 
     | 
    
         
            -
                  big = BigDecimal("2010. 
     | 
| 
      
 270 
     | 
    
         
            +
                  big = BigDecimal("2010.4")
         
     | 
| 
       271 
271 
     | 
    
         
             
                  big.ai(:plain => true).should == "2010.4"
         
     | 
| 
       272 
272 
     | 
    
         
             
                end
         
     | 
| 
       273 
273 
     | 
    
         | 
    
        data/spec/logger_spec.rb
    ADDED
    
    | 
         @@ -0,0 +1,43 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'logger'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'ap/core_ext/logger'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            describe "AwesomePrint logging extensions" do
         
     | 
| 
      
 8 
     | 
    
         
            +
              before(:all) do
         
     | 
| 
      
 9 
     | 
    
         
            +
                @logger = Logger.new('/dev/null')
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              describe "ap method" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                it "should awesome_inspect the given object" do
         
     | 
| 
      
 14 
     | 
    
         
            +
                  object = mock
         
     | 
| 
      
 15 
     | 
    
         
            +
                  object.should_receive(:ai)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @logger.ap object
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
                
         
     | 
| 
      
 19 
     | 
    
         
            +
                describe "the log level" do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  before(:each) do
         
     | 
| 
      
 21 
     | 
    
         
            +
                    AwesomePrint.defaults = { }
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                  
         
     | 
| 
      
 24 
     | 
    
         
            +
                  it "should fallback to the default :debug log level" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                    @logger.should_receive(:debug)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    @logger.ap(nil)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  it "should use the global user default if no level passed" do
         
     | 
| 
      
 30 
     | 
    
         
            +
                    AwesomePrint.defaults = { :log_level => :info }
         
     | 
| 
      
 31 
     | 
    
         
            +
                    @logger.should_receive(:info)
         
     | 
| 
      
 32 
     | 
    
         
            +
                    @logger.ap(nil)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  it "should use the passed in level" do
         
     | 
| 
      
 36 
     | 
    
         
            +
                    @logger.should_receive(:warn)
         
     | 
| 
      
 37 
     | 
    
         
            +
                    @logger.ap(nil, :warn)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version 
     | 
|
| 
       4 
4 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       5 
5 
     | 
    
         
             
              segments: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              - 0
         
     | 
| 
       7 
     | 
    
         
            -
              -  
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
       9 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 7 
     | 
    
         
            +
              - 2
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.2.0
         
     | 
| 
       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- 
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2010-05-05 00:00:00 -07:00
         
     | 
| 
       18 
18 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       19 
19 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       20 
20 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -50,11 +50,14 @@ files: 
     | 
|
| 
       50 
50 
     | 
    
         
             
            - lib/ap.rb
         
     | 
| 
       51 
51 
     | 
    
         
             
            - lib/ap/awesome_print.rb
         
     | 
| 
       52 
52 
     | 
    
         
             
            - lib/ap/core_ext/kernel.rb
         
     | 
| 
      
 53 
     | 
    
         
            +
            - lib/ap/core_ext/logger.rb
         
     | 
| 
       53 
54 
     | 
    
         
             
            - lib/ap/core_ext/string.rb
         
     | 
| 
       54 
     | 
    
         
            -
            - lib/ap/mixin/ 
     | 
| 
      
 55 
     | 
    
         
            +
            - lib/ap/mixin/active_record.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - lib/ap/mixin/active_support.rb
         
     | 
| 
       55 
57 
     | 
    
         
             
            - rails/init.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - spec/active_record_spec.rb
         
     | 
| 
       56 
59 
     | 
    
         
             
            - spec/awesome_print_spec.rb
         
     | 
| 
       57 
     | 
    
         
            -
            - spec/ 
     | 
| 
      
 60 
     | 
    
         
            +
            - spec/logger_spec.rb
         
     | 
| 
       58 
61 
     | 
    
         
             
            - spec/spec.opts
         
     | 
| 
       59 
62 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       60 
63 
     | 
    
         
             
            - spec/string_spec.rb
         
     | 
| 
         @@ -89,7 +92,8 @@ signing_key: 
     | 
|
| 
       89 
92 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       90 
93 
     | 
    
         
             
            summary: Pretty print Ruby objects with proper indentation and colors.
         
     | 
| 
       91 
94 
     | 
    
         
             
            test_files: 
         
     | 
| 
      
 95 
     | 
    
         
            +
            - spec/active_record_spec.rb
         
     | 
| 
       92 
96 
     | 
    
         
             
            - spec/awesome_print_spec.rb
         
     | 
| 
       93 
     | 
    
         
            -
            - spec/ 
     | 
| 
      
 97 
     | 
    
         
            +
            - spec/logger_spec.rb
         
     | 
| 
       94 
98 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       95 
99 
     | 
    
         
             
            - spec/string_spec.rb
         
     |