1
0
Fork 0
mirror of https://github.com/awesome-print/awesome_print synced 2023-03-27 23:22:34 -04:00
awesome_print/README.md

210 lines
6.1 KiB
Markdown
Raw Normal View History

2010-04-03 00:43:46 -04:00
## Awesome Print ##
2010-04-03 02:51:23 -04:00
Awesome Print is Ruby library that pretty prints Ruby objects in full color
exposing their internal structure with proper indentation. Rails ActiveRecord
2010-06-03 22:53:47 -04:00
objects and usage within Rails templates are supported via included mixins.
2010-04-03 00:43:46 -04:00
### Installation ###
2010-04-07 00:30:12 -04:00
# Installing as Ruby gem
2010-04-03 00:43:46 -04:00
$ gem install awesome_print
# Installing as Rails plugin
$ ruby script/plugin install http://github.com/michaeldv/awesome_print_.git
2010-04-07 00:30:12 -04:00
# Cloning the repository
2010-04-03 00:43:46 -04:00
$ git clone git://github.com/michaeldv/awesome_print_.git
### Usage ###
2010-04-06 00:21:57 -04:00
2010-04-03 00:43:46 -04:00
require "ap"
2010-04-06 00:21:57 -04:00
ap object, options = {}
Default options:
2010-04-03 00:43:46 -04:00
2010-04-07 00:30:12 -04:00
:multiline => true,
2010-04-06 00:21:57 -04:00
:plain => false,
:indent => 4,
:color => {
2010-04-06 00:21:57 -04:00
:array => :white,
:bignum => :blue,
:class => :yellow,
:date => :greenish,
:falseclass => :red,
:fixnum => :blue,
:float => :blue,
:hash => :gray,
:nilclass => :red,
:string => :yellowish,
:symbol => :cyanish,
:time => :greenish,
:trueclass => :green
}
2010-04-03 00:43:46 -04:00
2010-04-06 00:21:57 -04:00
Supported color names:
2010-04-03 00:43:46 -04:00
2010-04-06 00:21:57 -04:00
:gray, :red, :green, :yellow, :blue, :purple, :cyan, :white
:black, :redish, :greenish, :yellowish, :blueish, :purpleish, :cyanish, :pale
### Examples ###
$ cat > 1.rb
require "ap"
data = [ false, 42, %w(forty two), { :now => Time.now, :class => Time.now.class, :distance => 42e42 } ]
2010-04-06 00:21:57 -04:00
ap data
^D
$ ruby 1.rb
2010-04-03 00:43:46 -04:00
[
[0] false,
[1] 42,
[2] [
[0] "forty",
2010-04-03 00:43:46 -04:00
[1] "two"
],
[3] {
:class => Time < Object,
:now => Fri Apr 02 19:55:53 -0700 2010,
:distance => 4.2e+43
}
]
2010-04-06 00:21:57 -04:00
$ cat > 2.rb
require "ap"
data = { :now => Time.now, :class => Time.now.class, :distance => 42e42 }
ap data, :indent => -2 # <-- Left align hash keys.
^D
$ ruby 2.rb
2010-04-04 23:18:19 -04:00
{
:class => Time < Object,
:now => Fri Apr 02 19:55:53 -0700 2010,
:distance => 4.2e+43
}
2010-04-03 00:43:46 -04:00
2010-04-06 00:21:57 -04:00
$ cat > 3.rb
require "ap"
data = [ false, 42, %w(forty two) ]
2010-04-06 00:21:57 -04:00
data << data # <-- Nested array.
ap data, :multiline => false
^D
$ ruby 3.rb
[ false, 42, [ "forty", "two" ], [...] ]
2010-04-06 00:21:57 -04:00
### Example (Rails console) ###
2010-04-03 00:43:46 -04:00
$ ruby script/console
Loading development environment (Rails 2.3.5)
rails> require "ap"
rails> ap Account.all(:limit => 2)
[
[0] #<Account:0x1033220b8> {
:id => 1,
:user_id => 5,
:assigned_to => 7,
:name => "Hayes-DuBuque",
:access => "Public",
:website => "http://www.hayesdubuque.com",
:toll_free_phone => "1-800-932-6571",
:phone => "(111)549-5002",
:fax => "(349)415-2266",
:deleted_at => nil,
:created_at => Sat, 06 Mar 2010 09:46:10 UTC +00:00,
:updated_at => Sat, 06 Mar 2010 16:33:10 UTC +00:00,
:email => "info@hayesdubuque.com",
:background_info => nil
},
[1] #<Account:0x103321ff0> {
:id => 2,
:user_id => 4,
:assigned_to => 4,
:name => "Ziemann-Streich",
:access => "Public",
:website => "http://www.ziemannstreich.com",
:toll_free_phone => "1-800-871-0619",
:phone => "(042)056-1534",
:fax => "(106)017-8792",
:deleted_at => nil,
:created_at => Tue, 09 Feb 2010 13:32:10 UTC +00:00,
:updated_at => Tue, 09 Feb 2010 20:05:01 UTC +00:00,
:email => "info@ziemannstreich.com",
:background_info => nil
}
]
rails> ap Account
class Account < ActiveRecord::Base {
:id => :integer,
:user_id => :integer,
:assigned_to => :integer,
:name => :string,
:access => :string,
:website => :string,
:toll_free_phone => :string,
:phone => :string,
:fax => :string,
:deleted_at => :datetime,
:created_at => :datetime,
:updated_at => :datetime,
:email => :string,
:background_info => :string
}
rails>
### IRB integration ###
To use awesome_print as default formatter in irb and Rails console add the following
lines into your ~/.irbrc file:
require "rubygems"
require "ap"
IRB::Irb.class_eval do
def output_value
ap @context.last_value
end
end
2010-04-22 00:57:21 -04:00
### Logger Convenience Method ###
awesome_print adds an ap method to the Logger and ActiveSupport::BufferedLogger classes,
allowing you to call:
logger.ap object
By default, this logs at the :debug level. You can override that globally with
:log_level => :info
in the custom defaults (see below), or you can override on a per call basis with
logger.ap object, :warn
2010-06-03 22:53:47 -04:00
### ActionView Convenience Method ###
awesome_print adds an ap method to the ActionView::Base class making it available
within Rails templates. For example:
<%= ap @accounts.first %>
### Setting Custom Defaults ###
You can set your own default options by creating ``.aprc`` file in your home
directory. Within that file assign your defaults to ``AwesomePrint.defaults``.
For example:
# ~/.aprc file.
AwesomePrint.defaults = {
:indent => -2,
:color => {
:hash => :pale,
:class => :white
}
}
2010-04-04 00:28:49 -04:00
2010-04-03 00:43:46 -04:00
### Note on Patches/Pull Requests ###
2010-04-03 02:51:23 -04:00
* Fork the project on Github.
* Make your feature addition or bug fix.
* Add specs for it, making sure $ rake spec is all green.
* Commit, do not mess with rakefile, version, or history.
* Send me a pull request.
2010-04-03 00:43:46 -04:00
### Contributors ###
* Daniel Bretoi -- http://github.com/danielb2
* eregon -- http://github.com/eregon
* Tobias Crawley -- http://github.com/tobias
2010-04-03 00:43:46 -04:00
### License ###
2010-04-03 02:51:23 -04:00
Copyright (c) 2010 Michael Dvorkin
%w(mike dvorkin.net) * "@" || %w(mike fatfreecrm.com) * "@"
2010-04-03 00:43:46 -04:00
Released under the MIT license. See LICENSE file for details.