{"id":13747296,"url":"https://github.com/amazing-print/amazing_print","last_synced_at":"2025-05-09T08:32:17.549Z","repository":{"id":43722288,"uuid":"244716398","full_name":"amazing-print/amazing_print","owner":"amazing-print","description":"Pretty print your Ruby objects with style -- in full color and with proper indentation","archived":false,"fork":false,"pushed_at":"2024-06-22T13:22:07.000Z","size":1159,"stargazers_count":783,"open_issues_count":21,"forks_count":33,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-14T02:05:40.582Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/amazing-print.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-03T18:53:08.000Z","updated_at":"2024-11-03T19:03:18.000Z","dependencies_parsed_at":"2024-03-15T03:08:52.807Z","dependency_job_id":"db66d006-807e-46b7-97fd-bbc83633b5aa","html_url":"https://github.com/amazing-print/amazing_print","commit_stats":{"total_commits":572,"total_committers":85,"mean_commits":6.729411764705882,"dds":0.7167832167832168,"last_synced_commit":"55e511f55914ab4d2bf5ea75cf55334ca0c6c4df"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amazing-print%2Famazing_print","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amazing-print%2Famazing_print/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amazing-print%2Famazing_print/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amazing-print%2Famazing_print/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amazing-print","download_url":"https://codeload.github.com/amazing-print/amazing_print/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224842668,"owners_count":17379009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest"],"created_at":"2024-08-03T06:01:24.246Z","updated_at":"2025-05-09T08:32:17.523Z","avatar_url":"https://github.com/amazing-print.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"## Amazing Print ##\n\n[![RubyGems][gem_version_badge]][ruby_gems]\n[![RubyGems][gem_downloads_badge]][ruby_gems]\n|\n![Specs](https://github.com/amazing-print/amazing_print/workflows/Specs/badge.svg)\n![Lint](https://github.com/amazing-print/amazing_print/workflows/Lints/badge.svg)\n|\n[![Gitter](https://badges.gitter.im/amazing-print/community.svg)](https://gitter.im/amazing-print/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge)\n\nAmazingPrint is a fork of [AwesomePrint](https://github.com/awesome-print/awesome_print) which became stale and should be used in its place to avoid conflicts. It is a Ruby library that pretty prints Ruby objects in full color exposing their internal structure with proper indentation. Rails ActiveRecord objects and usage within Rails templates are supported via included mixins.\n\n![GitHub API demo](github-api-demo.gif)\n\n### Supported Versions ###\n\n- Ruby \u003e= 3.1\n- Rails \u003e= 6.1\n\n### Installation ###\n    # Installing as Ruby gem\n    $ gem install amazing_print\n\n    # Cloning the repository\n    $ git clone git://github.com/amazing-print/amazing_print.git\n\n### Usage ###\n\n```ruby\nrequire \"amazing_print\"\nap object, options = {}\n```\n\nDefault options:\n\n```ruby\nindent:        4,      # Number of spaces for indenting.\nindex:         true,   # Display array indices.\nhtml:          false,  # Use ANSI color codes rather than HTML.\nmultiline:     true,   # Display in multiple lines.\nplain:         false,  # Use colors.\nraw:           false,  # Do not recursively format instance variables.\nsort_keys:     false,  # Do not sort hash keys.\nsort_vars:     true,   # Sort instance variables.\nlimit:         false,  # Limit arrays \u0026 hashes. Accepts bool or int.\nruby19_syntax: false,  # Use Ruby 1.9 hash syntax in output.\nclass_name:    :class, # Method called to report the instance class name. (e.g. :to_s)\nobject_id:     true,   # Show object id.\ncolor: {\n  args:       :whiteish,\n  array:      :white,\n  bigdecimal: :blue,\n  class:      :yellow,\n  date:       :greenish,\n  falseclass: :red,\n  integer:    :blue,\n  float:      :blue,\n  hash:       :whiteish,\n  keyword:    :cyan,\n  method:     :purpleish,\n  nilclass:   :red,\n  rational:   :blue,\n  string:     :yellowish,\n  struct:     :whiteish,\n  symbol:     :cyanish,\n  time:       :greenish,\n  trueclass:  :green,\n  variable:   :cyanish\n}\n```\n\nSupported color names:\n\n```ruby\n:gray, :red, :green, :yellow, :blue, :purple, :cyan, :white\n:grayish, :redish, :greenish, :yellowish, :blueish, :purpleish, :cyanish, :whiteish\n```\n\nUse `Object#ai` to return an ASCII encoded string:\n\n```ruby\nirb\u003e \"awesome print\".ai\n=\u003e \"\\e[0;33m\\\"awesome print\\\"\\e[0m\"\n```\n\n### Examples ###\n\n```ruby\n$ cat \u003e 1.rb\nrequire \"amazing_print\"\ndata = [ false, 42, %w(forty two), { :now =\u003e Time.now, :class =\u003e Time.now.class, :distance =\u003e 42e42 } ]\nap data\n^D\n$ ruby 1.rb\n[\n    [0] false,\n    [1] 42,\n    [2] [\n        [0] \"forty\",\n        [1] \"two\"\n    ],\n    [3] {\n           :class =\u003e Time \u003c Object,\n             :now =\u003e Fri Apr 02 19:55:53 -0700 2010,\n        :distance =\u003e 4.2e+43\n    }\n]\n\n$ cat \u003e 2.rb\nrequire \"amazing_print\"\ndata = { :now =\u003e Time.now, :class =\u003e Time.now.class, :distance =\u003e 42e42 }\nap data, :indent =\u003e -2  # \u003c-- Left align hash keys.\n^D\n$ ruby 2.rb\n{\n  :class    =\u003e Time \u003c Object,\n  :now      =\u003e Fri Apr 02 19:55:53 -0700 2010,\n  :distance =\u003e 4.2e+43\n}\n\n$ cat \u003e 3.rb\nrequire \"amazing_print\"\ndata = [ false, 42, %w(forty two) ]\ndata \u003c\u003c data  # \u003c-- Nested array.\nap data, :multiline =\u003e false\n^D\n$ ruby 3.rb\n[ false, 42, [ \"forty\", \"two\" ], [...] ]\n\n$ cat \u003e 4.rb\nrequire \"amazing_print\"\nclass Hello\n  def self.world(x, y, z = nil, \u0026blk)\n  end\nend\nap Hello.methods - Class.methods\n^D\n$ ruby 4.rb\n[\n    [0] world(x, y, *z, \u0026blk) Hello\n]\n\n$ cat \u003e 5.rb\nrequire \"amazing_print\"\nap (''.methods - Object.methods).grep(/!/)\n^D\n$ ruby 5.rb\n[\n    [ 0] capitalize!()           String\n    [ 1]      chomp!(*arg1)      String\n    [ 2]       chop!()           String\n    [ 3]     delete!(*arg1)      String\n    [ 4]   downcase!()           String\n    [ 5]     encode!(*arg1)      String\n    [ 6]       gsub!(*arg1)      String\n    [ 7]     lstrip!()           String\n    [ 8]       next!()           String\n    [ 9]    reverse!()           String\n    [10]     rstrip!()           String\n    [11]      slice!(*arg1)      String\n    [12]    squeeze!(*arg1)      String\n    [13]      strip!()           String\n    [14]        sub!(*arg1)      String\n    [15]       succ!()           String\n    [16]   swapcase!()           String\n    [17]         tr!(arg1, arg2) String\n    [18]       tr_s!(arg1, arg2) String\n    [19]     upcase!()           String\n]\n\n$ cat \u003e 6.rb\nrequire \"amazing_print\"\nap 42 == ap(42)\n^D\n$ ruby 6.rb\n42\ntrue\n$ cat 7.rb\nrequire \"amazing_print\"\nsome_array = (1..1000).to_a\nap some_array, :limit =\u003e true\n^D\n$ ruby 7.rb\n[\n    [  0] 1,\n    [  1] 2,\n    [  2] 3,\n    [  3] .. [996],\n    [997] 998,\n    [998] 999,\n    [999] 1000\n]\n\n$ cat 8.rb\nrequire \"amazing_print\"\nsome_array = (1..1000).to_a\nap some_array, :limit =\u003e 5\n^D\n$ ruby 8.rb\n[\n    [  0] 1,\n    [  1] 2,\n    [  2] .. [997],\n    [998] 999,\n    [999] 1000\n]\n```\n\n### Example (Rails console) ###\n```ruby\n$ rails console\nrails\u003e require \"amazing_print\"\nrails\u003e ap Account.limit(2).all\n[\n    [0] #\u003cAccount:0x1033220b8\u003e {\n                     :id =\u003e 1,\n                :user_id =\u003e 5,\n            :assigned_to =\u003e 7,\n                   :name =\u003e \"Hayes-DuBuque\",\n                 :access =\u003e \"Public\",\n                :website =\u003e \"http://www.hayesdubuque.com\",\n        :toll_free_phone =\u003e \"1-800-932-6571\",\n                  :phone =\u003e \"(111)549-5002\",\n                    :fax =\u003e \"(349)415-2266\",\n             :deleted_at =\u003e nil,\n             :created_at =\u003e Sat, 06 Mar 2010 09:46:10 UTC +00:00,\n             :updated_at =\u003e Sat, 06 Mar 2010 16:33:10 UTC +00:00,\n                  :email =\u003e \"info@hayesdubuque.com\",\n        :background_info =\u003e nil\n    },\n    [1] #\u003cAccount:0x103321ff0\u003e {\n                     :id =\u003e 2,\n                :user_id =\u003e 4,\n            :assigned_to =\u003e 4,\n                   :name =\u003e \"Ziemann-Streich\",\n                 :access =\u003e \"Public\",\n                :website =\u003e \"http://www.ziemannstreich.com\",\n        :toll_free_phone =\u003e \"1-800-871-0619\",\n                  :phone =\u003e \"(042)056-1534\",\n                    :fax =\u003e \"(106)017-8792\",\n             :deleted_at =\u003e nil,\n             :created_at =\u003e Tue, 09 Feb 2010 13:32:10 UTC +00:00,\n             :updated_at =\u003e Tue, 09 Feb 2010 20:05:01 UTC +00:00,\n                  :email =\u003e \"info@ziemannstreich.com\",\n        :background_info =\u003e nil\n    }\n]\nrails\u003e ap Account\nclass Account \u003c ActiveRecord::Base {\n                 :id =\u003e :integer,\n            :user_id =\u003e :integer,\n        :assigned_to =\u003e :integer,\n               :name =\u003e :string,\n             :access =\u003e :string,\n            :website =\u003e :string,\n    :toll_free_phone =\u003e :string,\n              :phone =\u003e :string,\n                :fax =\u003e :string,\n         :deleted_at =\u003e :datetime,\n         :created_at =\u003e :datetime,\n         :updated_at =\u003e :datetime,\n              :email =\u003e :string,\n    :background_info =\u003e :string\n}\nrails\u003e\n```\n\n### IRB integration ###\nTo use amazing_print as default formatter in irb and Rails console add the following\ncode to your ~/.irbrc file:\n\n```ruby\nrequire \"amazing_print\"\nAmazingPrint.irb!\n```\n\n### PRY integration ###\nIf you miss amazing_print's way of formatting output, here's how you can use it in place\nof the formatting which comes with pry. Add the following code to your ~/.pryrc:\n\n```ruby\nrequire \"amazing_print\"\nAmazingPrint.pry!\n```\n\n### Logger Convenience Method ###\namazing_print adds the 'ap' method to the Logger and ActiveSupport::BufferedLogger classes\nletting you call:\n\n    logger.ap object\n\nBy default, this logs at the :debug level. You can override that globally with:\n\n    :log_level =\u003e :info\n\nin the custom defaults (see below). You can also override on a per call basis with:\n\n    logger.ap object, :warn\n    # or\n    logger.ap object, level: :warn\n\nYou can also pass additional options (providing `nil` or leaving off `level` will log at the default level):\n\n    logger.ap object, { level: :info, sort_keys: true }\n\n### ActionView Convenience Method ###\namazing_print adds the 'ap' method to the ActionView::Base class making it available\nwithin Rails templates. For example:\n\n    \u003c%= ap @accounts.first %\u003e   # ERB\n    != ap @accounts.first       # HAML\n\nWith other web frameworks (ex: in Sinatra templates) you can explicitly request HTML\nformatting:\n\n    \u003c%= ap @accounts.first, :html =\u003e true %\u003e\n\n### Colorizing Strings ###\nUse methods such as `.red` to set string color:\n\n```ruby\nirb\u003e puts AmazingPrint::Colors.red(\"red text\")\nred text # (it's red)\n```\n\n### Setting Custom Defaults ###\nYou can set your own default options by creating ``aprc`` file in your `$XDG_CONFIG_HOME`\ndirectory (defaults to `~/.config` if undefined). Within that file assign your defaults\nto ``AmazingPrint.defaults``.\nFor example:\n\n```ruby\n# ~/.config/aprc file.\nAmazingPrint.defaults = {\n  :indent =\u003e -2,\n  :color =\u003e {\n    :hash  =\u003e :whiteish,\n    :class =\u003e :white\n  }\n}\n```\n\nThe previous `~/.aprc` location is still supported as fallback.\n\n## Versioning\n\nAmazingPrint follows the [Semantic Versioning](http://semver.org/) standard.\n\n### Contributing ###\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for information.\n\n### License ###\nCopyright (c) 2010-2016 Michael Dvorkin and contributors\n\nhttp://www.dvorkin.net\n\n%w(mike dvorkin.net) * \"@\" || \"twitter.com/mid\"\n\nReleased under the MIT license. See LICENSE file for details.\n\n[gem_version_badge]: https://img.shields.io/gem/v/amazing_print.svg?style=flat\n[gem_downloads_badge]: http://img.shields.io/gem/dt/amazing_print.svg?style=flat\n[ruby_gems]: http://rubygems.org/gems/amazing_print\n[travis_ci]: http://travis-ci.org/amazing-print/amazing_print\n[travis_ci_badge]: https://img.shields.io/travis/amazing-print/amazing_print/master.svg?style=flat\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famazing-print%2Famazing_print","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famazing-print%2Famazing_print","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famazing-print%2Famazing_print/lists"}