amazing_print 1.3.0 → 1.4.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.
- checksums.yaml +4 -4
- data/Appraisals +0 -6
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +34 -36
- data/README.md +8 -5
- data/lib/amazing_print/colorize.rb +1 -3
- data/lib/amazing_print/core_ext/awesome_method_array.rb +4 -4
- data/lib/amazing_print/core_ext/class.rb +1 -1
- data/lib/amazing_print/core_ext/logger.rb +1 -3
- data/lib/amazing_print/core_ext/object.rb +1 -1
- data/lib/amazing_print/custom_defaults.rb +10 -3
- data/lib/amazing_print/ext/active_record.rb +5 -9
- data/lib/amazing_print/ext/active_support.rb +1 -3
- data/lib/amazing_print/ext/mongo_mapper.rb +4 -7
- data/lib/amazing_print/ext/mongoid.rb +2 -6
- data/lib/amazing_print/ext/nobrainer.rb +3 -5
- data/lib/amazing_print/ext/nokogiri.rb +1 -3
- data/lib/amazing_print/ext/ostruct.rb +1 -3
- data/lib/amazing_print/ext/ripple.rb +4 -5
- data/lib/amazing_print/formatter.rb +5 -6
- data/lib/amazing_print/formatters/array_formatter.rb +6 -5
- data/lib/amazing_print/formatters/base_formatter.rb +20 -25
- data/lib/amazing_print/formatters/class_formatter.rb +1 -0
- data/lib/amazing_print/formatters/dir_formatter.rb +1 -0
- data/lib/amazing_print/formatters/file_formatter.rb +1 -0
- data/lib/amazing_print/formatters/hash_formatter.rb +3 -2
- data/lib/amazing_print/formatters/method_formatter.rb +1 -0
- data/lib/amazing_print/formatters/object_formatter.rb +2 -1
- data/lib/amazing_print/formatters/simple_formatter.rb +1 -0
- data/lib/amazing_print/formatters/struct_formatter.rb +2 -1
- data/lib/amazing_print/inspector.rb +29 -5
- data/lib/amazing_print/version.rb +1 -1
- data/lib/amazing_print.rb +2 -6
- data/spec/active_record_helper.rb +3 -0
- data/spec/colors_spec.rb +6 -2
- data/spec/core_ext/logger_spec.rb +7 -7
- data/spec/core_ext/string_spec.rb +2 -2
- data/spec/ext/action_controller_spec.rb +2 -2
- data/spec/ext/active_model_spec.rb +1 -1
- data/spec/ext/active_record_spec.rb +23 -23
- data/spec/ext/active_support_spec.rb +3 -3
- data/spec/ext/mongo_mapper_spec.rb +15 -11
- data/spec/ext/mongoid_spec.rb +7 -3
- data/spec/ext/nobrainer_spec.rb +6 -2
- data/spec/ext/nokogiri_spec.rb +3 -3
- data/spec/ext/ripple_spec.rb +6 -2
- data/spec/formats_spec.rb +24 -18
- data/spec/methods_spec.rb +12 -4
- data/spec/misc_spec.rb +15 -10
- data/spec/objects_spec.rb +4 -0
- data/spec/spec_helper.rb +4 -8
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95f05f3413c3497f346ec0bb7de2ed94a065aa6224a0a6bc8b36c699728ea4b2
|
4
|
+
data.tar.gz: 112760cadb1e3b76240163a64a462323975e5885ea0e002845790d75fb0c6858
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f2e2fddf5cbf25953721ab0bc8f0ff0648fbe93710508137af6022ef5b8c5153be9292cbea2910fe4ef8b434c2a3510585f2ef5e98097296f78e0c74f292140
|
7
|
+
data.tar.gz: 0b2e88771d4c2835e586a5ccf5c3c6e8822267475a65ddd80faf5908e526b099ea888953395fb77047df776ba7f6e7e63cf8bf50cb7676b253b2c67987b1437c
|
data/Appraisals
CHANGED
@@ -1,12 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
if RUBY_VERSION < '3'
|
4
|
-
appraise 'rails-5.1' do
|
5
|
-
gem 'activerecord-jdbcsqlite3-adapter', '~> 51.0', platform: :jruby
|
6
|
-
gem 'rails', '~> 5.1.0'
|
7
|
-
gem 'sqlite3', platform: :mri
|
8
|
-
end
|
9
|
-
|
10
4
|
appraise 'rails-5.2' do
|
11
5
|
gem 'activerecord-jdbcsqlite3-adapter', '~> 52.0', platform: :jruby
|
12
6
|
gem 'rails', '~> 5.2.0'
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
## Unreleased
|
2
|
+
|
3
|
+
## v1.4.0
|
4
|
+
- Support loading config from `$XDG_CONFIG_HOME/aprc` - #63
|
5
|
+
- Remove support for Rails 5.1 #75
|
6
|
+
- Update AR specs for Ruby 2.6.7 #76
|
7
|
+
- Load .aprc configs only once. #74
|
8
|
+
- Add XDG config support #77
|
9
|
+
- Rubocop updates #79
|
10
|
+
- Update Irb integration for v1.2.6+ #81
|
11
|
+
|
12
|
+
## v1.3.0
|
13
|
+
- Fix HTML escaping problems #53
|
14
|
+
- Update test suite for Ruby 2.7.2 and JRuby #61
|
15
|
+
- Add ActionView spec for html_safe #65
|
16
|
+
- Add support for Rails 6.1 #68
|
17
|
+
- Update specs for Ruby 3.0 #69
|
18
|
+
|
1
19
|
## v1.2.2
|
2
20
|
- Support Ruby 3.0 / IRB 1.2.6 - #57
|
3
21
|
- Fix FrozenError - #51
|
data/Gemfile.lock
CHANGED
@@ -1,69 +1,66 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
amazing_print (1.
|
4
|
+
amazing_print (1.3.1.pre)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
appraisal (2.
|
9
|
+
appraisal (2.4.1)
|
10
10
|
bundler
|
11
11
|
rake
|
12
12
|
thor (>= 0.14.0)
|
13
|
-
ast (2.4.
|
13
|
+
ast (2.4.2)
|
14
14
|
coderay (1.1.3)
|
15
15
|
diff-lcs (1.4.4)
|
16
|
-
fakefs (1.
|
17
|
-
ffi (1.13.1-java)
|
18
|
-
jaro_winkler (1.5.4)
|
19
|
-
jaro_winkler (1.5.4-java)
|
16
|
+
fakefs (1.3.2)
|
20
17
|
method_source (1.0.0)
|
21
|
-
mini_portile2 (2.
|
22
|
-
nokogiri (1.
|
23
|
-
mini_portile2 (~> 2.
|
24
|
-
|
25
|
-
parallel (1.
|
26
|
-
parser (
|
18
|
+
mini_portile2 (2.6.1)
|
19
|
+
nokogiri (1.12.5)
|
20
|
+
mini_portile2 (~> 2.6.1)
|
21
|
+
racc (~> 1.4)
|
22
|
+
parallel (1.21.0)
|
23
|
+
parser (3.0.2.0)
|
27
24
|
ast (~> 2.4.1)
|
28
|
-
pry (0.
|
25
|
+
pry (0.14.1)
|
29
26
|
coderay (~> 1.1)
|
30
27
|
method_source (~> 1.0)
|
31
|
-
|
32
|
-
coderay (~> 1.1)
|
33
|
-
method_source (~> 1.0)
|
34
|
-
spoon (~> 0.0)
|
28
|
+
racc (1.5.2)
|
35
29
|
rainbow (3.0.0)
|
36
|
-
rake (13.0.
|
37
|
-
|
30
|
+
rake (13.0.6)
|
31
|
+
regexp_parser (2.1.1)
|
32
|
+
rexml (3.2.5)
|
38
33
|
rspec (3.10.0)
|
39
34
|
rspec-core (~> 3.10.0)
|
40
35
|
rspec-expectations (~> 3.10.0)
|
41
36
|
rspec-mocks (~> 3.10.0)
|
42
|
-
rspec-core (3.10.
|
37
|
+
rspec-core (3.10.1)
|
43
38
|
rspec-support (~> 3.10.0)
|
44
|
-
rspec-expectations (3.10.
|
39
|
+
rspec-expectations (3.10.1)
|
45
40
|
diff-lcs (>= 1.2.0, < 2.0)
|
46
41
|
rspec-support (~> 3.10.0)
|
47
|
-
rspec-mocks (3.10.
|
42
|
+
rspec-mocks (3.10.2)
|
48
43
|
diff-lcs (>= 1.2.0, < 2.0)
|
49
44
|
rspec-support (~> 3.10.0)
|
50
|
-
rspec-support (3.10.
|
51
|
-
rubocop (
|
52
|
-
jaro_winkler (~> 1.5.1)
|
45
|
+
rspec-support (3.10.2)
|
46
|
+
rubocop (1.22.1)
|
53
47
|
parallel (~> 1.10)
|
54
|
-
parser (>=
|
48
|
+
parser (>= 3.0.0.0)
|
55
49
|
rainbow (>= 2.2.2, < 4.0)
|
50
|
+
regexp_parser (>= 1.8, < 3.0)
|
56
51
|
rexml
|
52
|
+
rubocop-ast (>= 1.12.0, < 2.0)
|
57
53
|
ruby-progressbar (~> 1.7)
|
58
|
-
unicode-display_width (>= 1.4.0, <
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
54
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
55
|
+
rubocop-ast (1.12.0)
|
56
|
+
parser (>= 3.0.1.1)
|
57
|
+
rubocop-rspec (2.5.0)
|
58
|
+
rubocop (~> 1.19)
|
59
|
+
ruby-progressbar (1.11.0)
|
60
|
+
thor (1.1.0)
|
61
|
+
unicode-display_width (2.1.0)
|
64
62
|
|
65
63
|
PLATFORMS
|
66
|
-
java
|
67
64
|
ruby
|
68
65
|
|
69
66
|
DEPENDENCIES
|
@@ -73,7 +70,8 @@ DEPENDENCIES
|
|
73
70
|
nokogiri (~> 1.10)
|
74
71
|
pry
|
75
72
|
rspec (~> 3.9)
|
76
|
-
rubocop (~>
|
73
|
+
rubocop (~> 1.20)
|
74
|
+
rubocop-rspec (~> 2.4)
|
77
75
|
|
78
76
|
BUNDLED WITH
|
79
|
-
2.
|
77
|
+
2.2.27
|
data/README.md
CHANGED
@@ -15,8 +15,8 @@ AmazingPrint is a fork of [AwesomePrint](https://github.com/awesome-print/awesom
|
|
15
15
|
|
16
16
|
### Supported Versions ###
|
17
17
|
|
18
|
-
- Ruby >= 2.
|
19
|
-
- Rails >= 5.
|
18
|
+
- Ruby >= 2.5
|
19
|
+
- Rails >= 5.2
|
20
20
|
|
21
21
|
### Installation ###
|
22
22
|
# Installing as Ruby gem
|
@@ -325,12 +325,13 @@ red text # (it's red)
|
|
325
325
|
```
|
326
326
|
|
327
327
|
### Setting Custom Defaults ###
|
328
|
-
You can set your own default options by creating
|
329
|
-
directory. Within that file assign your
|
328
|
+
You can set your own default options by creating ``aprc`` file in your `$XDG_CONFIG_HOME`
|
329
|
+
directory (defaults to `~/.config` if undefined). Within that file assign your defaults
|
330
|
+
to ``AmazingPrint.defaults``.
|
330
331
|
For example:
|
331
332
|
|
332
333
|
```ruby
|
333
|
-
# ~/.aprc file.
|
334
|
+
# ~/.config/aprc file.
|
334
335
|
AmazingPrint.defaults = {
|
335
336
|
:indent => -2,
|
336
337
|
:color => {
|
@@ -340,6 +341,8 @@ AmazingPrint.defaults = {
|
|
340
341
|
}
|
341
342
|
```
|
342
343
|
|
344
|
+
The previous `~/.aprc` location is still supported as fallback.
|
345
|
+
|
343
346
|
## Versioning
|
344
347
|
|
345
348
|
AmazingPrint follows the [Semantic Versioning](http://semver.org/) standard.
|
@@ -17,9 +17,7 @@ module AmazingPrint
|
|
17
17
|
elsif str.method(options[:color][type]).arity == -1 # Accepts html parameter.
|
18
18
|
str.send(options[:color][type], options[:html])
|
19
19
|
else
|
20
|
-
if options[:html]
|
21
|
-
str = %(<kbd style="color:#{options[:color][type]}">#{str}</kbd>)
|
22
|
-
end
|
20
|
+
str = %(<kbd style="color:#{options[:color][type]}">#{str}</kbd>) if options[:html]
|
23
21
|
str.send(options[:color][type])
|
24
22
|
end
|
25
23
|
end
|
@@ -14,14 +14,14 @@
|
|
14
14
|
#
|
15
15
|
# If you could think of a better way please let me know :-)
|
16
16
|
#
|
17
|
-
module AwesomeMethodArray
|
18
|
-
def -(
|
17
|
+
module AwesomeMethodArray # :nodoc:
|
18
|
+
def -(other)
|
19
19
|
super.tap do |arr|
|
20
20
|
arr.instance_variable_set(:@__awesome_methods__, instance_variable_get(:@__awesome_methods__))
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def &(
|
24
|
+
def &(other)
|
25
25
|
super.tap do |arr|
|
26
26
|
arr.instance_variable_set(:@__awesome_methods__, instance_variable_get(:@__awesome_methods__))
|
27
27
|
end
|
@@ -68,7 +68,7 @@ module AwesomeMethodArray #:nodoc:
|
|
68
68
|
# [ 0, 1, 2, 3, 4 ].grep(1..2, &:succ)
|
69
69
|
#
|
70
70
|
begin
|
71
|
-
eval("%Q/#{match.to_s.gsub('/', '\/')}/ =~ #{pattern.inspect}", blk.binding)
|
71
|
+
eval("%Q/#{match.to_s.gsub('/', '\/')}/ =~ #{pattern.inspect}", blk.binding, __FILE__, __LINE__)
|
72
72
|
rescue StandardError
|
73
73
|
ArgumentError
|
74
74
|
end
|
@@ -5,7 +5,7 @@
|
|
5
5
|
# AmazingPrint is freely distributable under the terms of MIT license.
|
6
6
|
# See LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
7
7
|
#------------------------------------------------------------------------------
|
8
|
-
class Class
|
8
|
+
class Class # :nodoc:
|
9
9
|
#
|
10
10
|
# Intercept methods below to inject @__amazing_print__ instance variable
|
11
11
|
# so we know it is the *methods* array when formatting an array.
|
@@ -25,6 +25,4 @@ module AmazingPrint
|
|
25
25
|
end
|
26
26
|
|
27
27
|
Logger.include AmazingPrint::Logger
|
28
|
-
if defined?(ActiveSupport::BufferedLogger)
|
29
|
-
ActiveSupport::BufferedLogger.include AmazingPrint::Logger
|
30
|
-
end
|
28
|
+
ActiveSupport::BufferedLogger.include AmazingPrint::Logger if defined?(ActiveSupport::BufferedLogger)
|
@@ -5,7 +5,7 @@
|
|
5
5
|
# AmazingPrint is freely distributable under the terms of MIT license.
|
6
6
|
# See LICENSE file or http://www.opensource.org/licenses/mit-license.php
|
7
7
|
#------------------------------------------------------------------------------
|
8
|
-
class Object
|
8
|
+
class Object # :nodoc:
|
9
9
|
#
|
10
10
|
# Intercept methods below to inject @__amazing_print__ instance variable
|
11
11
|
# so we know it is the *methods* array when formatting an array.
|
@@ -7,8 +7,8 @@ module AmazingPrint
|
|
7
7
|
# Class accessor to force colorized output (ex. forked subprocess where TERM
|
8
8
|
# might be dumb).
|
9
9
|
#---------------------------------------------------------------------------
|
10
|
-
def force_colors!(
|
11
|
-
@force_colors =
|
10
|
+
def force_colors!(colors: true)
|
11
|
+
@force_colors = colors
|
12
12
|
end
|
13
13
|
|
14
14
|
def console?
|
@@ -29,7 +29,7 @@ module AmazingPrint
|
|
29
29
|
|
30
30
|
def usual_rb
|
31
31
|
IRB::Irb.class_eval do
|
32
|
-
def output_value(_omit = false)
|
32
|
+
def output_value(_omit = false) # rubocop:disable Style/OptionalBooleanParameter
|
33
33
|
ap @context.last_value
|
34
34
|
rescue NoMethodError
|
35
35
|
puts "(Object doesn't support #ai)"
|
@@ -47,6 +47,13 @@ module AmazingPrint
|
|
47
47
|
Pry.print = proc { |output, value| output.puts value.ai } if defined?(Pry)
|
48
48
|
end
|
49
49
|
|
50
|
+
##
|
51
|
+
# Reload the cached custom configurations.
|
52
|
+
#
|
53
|
+
def reload!
|
54
|
+
AmazingPrint::Inspector.reload_dotfile
|
55
|
+
end
|
56
|
+
|
50
57
|
private
|
51
58
|
|
52
59
|
# Takes a value and returns true unless it is false or nil
|
@@ -45,15 +45,15 @@ module AmazingPrint
|
|
45
45
|
return object.inspect unless defined?(::ActiveSupport::OrderedHash)
|
46
46
|
return awesome_object(object) if @options[:raw]
|
47
47
|
|
48
|
-
data = if object.class.column_names
|
49
|
-
object.attributes
|
50
|
-
else
|
48
|
+
data = if object.class.column_names == object.attributes.keys
|
51
49
|
object.class.column_names.each_with_object(::ActiveSupport::OrderedHash.new) do |name, hash|
|
52
50
|
if object.has_attribute?(name) || object.new_record?
|
53
51
|
value = object.respond_to?(name) ? object.send(name) : object.read_attribute(name)
|
54
52
|
hash[name.to_sym] = value
|
55
53
|
end
|
56
54
|
end
|
55
|
+
else
|
56
|
+
object.attributes
|
57
57
|
end
|
58
58
|
[awesome_simple(object.to_s, :active_record_instance), awesome_hash(data)].join(' ')
|
59
59
|
end
|
@@ -61,12 +61,8 @@ module AmazingPrint
|
|
61
61
|
# Format ActiveRecord class object.
|
62
62
|
#------------------------------------------------------------------------------
|
63
63
|
def awesome_active_record_class(object)
|
64
|
-
if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:columns) || object.to_s == 'ActiveRecord::Base'
|
65
|
-
|
66
|
-
end
|
67
|
-
if object.respond_to?(:abstract_class?) && object.abstract_class?
|
68
|
-
return awesome_class(object)
|
69
|
-
end
|
64
|
+
return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:columns) || object.to_s == 'ActiveRecord::Base'
|
65
|
+
return awesome_class(object) if object.respond_to?(:abstract_class?) && object.abstract_class?
|
70
66
|
|
71
67
|
data = object.columns.each_with_object(::ActiveSupport::OrderedHash.new) do |c, hash|
|
72
68
|
hash[c.name.to_sym] = c.type
|
@@ -42,6 +42,4 @@ AmazingPrint::Formatter.include AmazingPrint::ActiveSupport
|
|
42
42
|
#
|
43
43
|
# Colorize Rails logs.
|
44
44
|
#
|
45
|
-
if defined?(ActiveSupport::LogSubscriber)
|
46
|
-
AmazingPrint.force_colors! ActiveSupport::LogSubscriber.colorize_logging
|
47
|
-
end
|
45
|
+
AmazingPrint.force_colors! colors: ActiveSupport::LogSubscriber.colorize_logging if defined?(ActiveSupport::LogSubscriber)
|
@@ -19,7 +19,8 @@ module AmazingPrint
|
|
19
19
|
cast = cast_without_mongo_mapper(object, type)
|
20
20
|
|
21
21
|
if defined?(::MongoMapper::Document)
|
22
|
-
if object.is_a?(Class) && !(object.ancestors & [::MongoMapper::Document,
|
22
|
+
if object.is_a?(Class) && !(object.ancestors & [::MongoMapper::Document,
|
23
|
+
::MongoMapper::EmbeddedDocument]).empty?
|
23
24
|
cast = :mongo_mapper_class
|
24
25
|
elsif object.is_a?(::MongoMapper::Document) || object.is_a?(::MongoMapper::EmbeddedDocument)
|
25
26
|
cast = :mongo_mapper_instance
|
@@ -36,9 +37,7 @@ module AmazingPrint
|
|
36
37
|
# Format MongoMapper class object.
|
37
38
|
#------------------------------------------------------------------------------
|
38
39
|
def awesome_mongo_mapper_class(object)
|
39
|
-
if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:keys)
|
40
|
-
return object.inspect
|
41
|
-
end
|
40
|
+
return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:keys)
|
42
41
|
|
43
42
|
data = object.keys.sort.each_with_object(::ActiveSupport::OrderedHash.new) do |c, hash|
|
44
43
|
hash[c.first] = (c.last.type || 'undefined').to_s.underscore.intern
|
@@ -86,9 +85,7 @@ module AmazingPrint
|
|
86
85
|
end
|
87
86
|
|
88
87
|
label = object.to_s
|
89
|
-
if object.is_a?(::MongoMapper::EmbeddedDocument)
|
90
|
-
label = "#{colorize('embedded', :assoc)} #{label}"
|
91
|
-
end
|
88
|
+
label = "#{colorize('embedded', :assoc)} #{label}" if object.is_a?(::MongoMapper::EmbeddedDocument)
|
92
89
|
|
93
90
|
[label, awesome_hash(data)].join(' ')
|
94
91
|
end
|
@@ -31,9 +31,7 @@ module AmazingPrint
|
|
31
31
|
# Format Mongoid class object.
|
32
32
|
#------------------------------------------------------------------------------
|
33
33
|
def awesome_mongoid_class(object)
|
34
|
-
if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:fields)
|
35
|
-
return object.inspect
|
36
|
-
end
|
34
|
+
return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:fields)
|
37
35
|
|
38
36
|
data = object.fields.sort.each_with_object(::ActiveSupport::OrderedHash.new) do |c, hash|
|
39
37
|
hash[c[1].name.to_sym] = (c[1].type || 'undefined').to_s.underscore.intern
|
@@ -53,9 +51,7 @@ module AmazingPrint
|
|
53
51
|
data = (object.attributes || {}).sort.each_with_object(::ActiveSupport::OrderedHash.new) do |c, hash|
|
54
52
|
hash[c[0].to_sym] = c[1]
|
55
53
|
end
|
56
|
-
unless object.errors.empty?
|
57
|
-
data = { errors: object.errors, attributes: data }
|
58
|
-
end
|
54
|
+
data = { errors: object.errors, attributes: data } unless object.errors.empty?
|
59
55
|
"#{object} #{awesome_hash(data)}"
|
60
56
|
end
|
61
57
|
|
@@ -32,9 +32,9 @@ module AmazingPrint
|
|
32
32
|
#------------------------------------------------------------------------------
|
33
33
|
def awesome_nobrainer_class(object)
|
34
34
|
name = "#{awesome_simple(object, :class)} < #{awesome_simple(object.superclass, :class)}"
|
35
|
-
data =
|
35
|
+
data = object.fields.map do |field, options|
|
36
36
|
[field, (options[:type] || Object).to_s.underscore.to_sym]
|
37
|
-
end
|
37
|
+
end.to_h
|
38
38
|
|
39
39
|
name = "class #{awesome_simple(object.to_s, :class)}"
|
40
40
|
base = "< #{awesome_simple(object.superclass.to_s, :class)}"
|
@@ -46,9 +46,7 @@ module AmazingPrint
|
|
46
46
|
#------------------------------------------------------------------------------
|
47
47
|
def awesome_nobrainer_document(object)
|
48
48
|
data = object.inspectable_attributes.symbolize_keys
|
49
|
-
if object.errors.present?
|
50
|
-
data = { errors: object.errors, attributes: data }
|
51
|
-
end
|
49
|
+
data = { errors: object.errors, attributes: data } if object.errors.present?
|
52
50
|
"#{object} #{awesome_hash(data)}"
|
53
51
|
end
|
54
52
|
end
|
@@ -34,9 +34,7 @@ module AmazingPrint
|
|
34
34
|
xml.gsub!(%r{(<)(/?[A-Za-z1-9]+)}) { |_tag| "#{Regexp.last_match(1)}#{colorize(Regexp.last_match(2), :keyword)}" }
|
35
35
|
xml.gsub!(/(id|class)="[^"]+"/i) { |id| colorize(id, :class) }
|
36
36
|
xml.gsub!(/>([^<]+)</) do |contents|
|
37
|
-
if contents && !contents.empty?
|
38
|
-
contents = colorize(Regexp.last_match(1), :trueclass)
|
39
|
-
end
|
37
|
+
contents = colorize(Regexp.last_match(1), :trueclass) if contents && !contents.empty?
|
40
38
|
">#{contents}<"
|
41
39
|
end
|
42
40
|
xml
|
@@ -14,9 +14,7 @@ module AmazingPrint
|
|
14
14
|
|
15
15
|
def cast_with_ostruct(object, type)
|
16
16
|
cast = cast_without_ostruct(object, type)
|
17
|
-
if defined?(::OpenStruct) && object.is_a?(::OpenStruct)
|
18
|
-
cast = :open_struct_instance
|
19
|
-
end
|
17
|
+
cast = :open_struct_instance if defined?(::OpenStruct) && object.is_a?(::OpenStruct)
|
20
18
|
cast
|
21
19
|
end
|
22
20
|
|
@@ -18,9 +18,10 @@ module AmazingPrint
|
|
18
18
|
cast = cast_without_ripple(object, type)
|
19
19
|
return cast unless defined?(::Ripple)
|
20
20
|
|
21
|
-
|
21
|
+
case object
|
22
|
+
when ::Ripple::AttributeMethods # Module used to access attributes across documents and embedded documents
|
22
23
|
cast = :ripple_document_instance
|
23
|
-
|
24
|
+
when ::Ripple::Properties # Used to access property metadata on Ripple classes
|
24
25
|
cast = :ripple_document_class
|
25
26
|
end
|
26
27
|
cast
|
@@ -58,9 +59,7 @@ module AmazingPrint
|
|
58
59
|
# Format Ripple class object.
|
59
60
|
#------------------------------------------------------------------------------
|
60
61
|
def awesome_ripple_document_class(object)
|
61
|
-
if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:properties)
|
62
|
-
return object.inspect
|
63
|
-
end
|
62
|
+
return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:properties)
|
64
63
|
|
65
64
|
name = "class #{awesome_simple(object.to_s, :class)}"
|
66
65
|
base = "< #{awesome_simple(object.superclass.to_s, :class)}"
|
@@ -24,12 +24,11 @@ module AmazingPrint
|
|
24
24
|
#------------------------------------------------------------------------------
|
25
25
|
def format(object, type = nil)
|
26
26
|
core_class = cast(object, type)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
awesome
|
27
|
+
if core_class == :self
|
28
|
+
awesome_self(object, type) # Catch all that falls back to object.inspect.
|
29
|
+
else
|
30
|
+
send(:"awesome_#{core_class}", object) # Core formatters.
|
31
|
+
end
|
33
32
|
end
|
34
33
|
|
35
34
|
# Hook this when adding custom formatters. Check out lib/amazing_print/ext
|
@@ -8,6 +8,7 @@ module AmazingPrint
|
|
8
8
|
attr_reader :array, :inspector, :options
|
9
9
|
|
10
10
|
def initialize(array, inspector)
|
11
|
+
super()
|
11
12
|
@array = array
|
12
13
|
@inspector = inspector
|
13
14
|
@options = inspector.options
|
@@ -33,7 +34,7 @@ module AmazingPrint
|
|
33
34
|
if options[:multiline]
|
34
35
|
multiline_array
|
35
36
|
else
|
36
|
-
|
37
|
+
"[ #{array.map { |item| inspector.awesome(item) }.join(', ')} ]"
|
37
38
|
end
|
38
39
|
end
|
39
40
|
|
@@ -114,14 +115,14 @@ module AmazingPrint
|
|
114
115
|
|
115
116
|
meth = begin
|
116
117
|
object.method(name)
|
117
|
-
|
118
|
-
|
118
|
+
rescue NameError, ArgumentError
|
119
|
+
nil
|
119
120
|
end
|
120
121
|
|
121
122
|
meth || begin
|
122
123
|
object.instance_method(name)
|
123
|
-
|
124
|
-
|
124
|
+
rescue NameError
|
125
|
+
nil
|
125
126
|
end
|
126
127
|
end
|
127
128
|
|
@@ -30,7 +30,7 @@ module AmazingPrint
|
|
30
30
|
# ]
|
31
31
|
#------------------------------------------------------------------------------
|
32
32
|
def should_be_limited?
|
33
|
-
options[:limit] || (options[:limit].is_a?(Integer) &&
|
33
|
+
options[:limit] || (options[:limit].is_a?(Integer) && options[:limit].positive?)
|
34
34
|
end
|
35
35
|
|
36
36
|
def get_limit_size
|
@@ -42,14 +42,14 @@ module AmazingPrint
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
def limited(data, width, is_hash
|
45
|
+
def limited(data, width, is_hash: false)
|
46
46
|
limit = get_limit_size
|
47
47
|
if data.length <= limit
|
48
48
|
data
|
49
49
|
else
|
50
50
|
# Calculate how many elements to be displayed above and below the separator.
|
51
51
|
head = limit / 2
|
52
|
-
tail = head - (limit - 1) % 2
|
52
|
+
tail = head - ((limit - 1) % 2)
|
53
53
|
|
54
54
|
# Add the proper elements to the temp array and format the separator.
|
55
55
|
temp = data[0, head] + [nil] + data[-tail, tail]
|
@@ -65,23 +65,18 @@ module AmazingPrint
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def method_tuple(method)
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|
81
|
-
end
|
82
|
-
else # See http://ruby-doc.org/core/classes/Method.html#M001902
|
83
|
-
args = (1..method.arity.abs).map { |i| "arg#{i}" }
|
84
|
-
args[-1] = "*#{args[-1]}" if method.arity < 0
|
68
|
+
# See http://readruby.chengguangnan.com/methods#method-objects-parameters
|
69
|
+
# (mirror: http://archive.is/XguCA#selection-3381.1-3381.11)
|
70
|
+
args = method.parameters.inject([]) do |arr, (type, name)|
|
71
|
+
name ||= (type == :block ? 'block' : "arg#{arr.size + 1}")
|
72
|
+
arr << case type
|
73
|
+
when :req then name.to_s
|
74
|
+
when :keyreq then "#{name}:"
|
75
|
+
when :key then "*#{name}:"
|
76
|
+
when :opt, :rest then "*#{name}"
|
77
|
+
when :block then "&#{name}"
|
78
|
+
else '?'
|
79
|
+
end
|
85
80
|
end
|
86
81
|
|
87
82
|
# method.to_s formats to handle:
|
@@ -95,7 +90,7 @@ module AmazingPrint
|
|
95
90
|
# #<UnboundMethod: Hello#world>
|
96
91
|
# #<UnboundMethod: Hello#world() /home/hs/code/amazing_print/spec/methods_spec.rb:68>
|
97
92
|
#
|
98
|
-
if method.to_s =~ %r{(Unbound)*Method: ((#<)?[^/#]*)[
|
93
|
+
if method.to_s =~ %r{(Unbound)*Method: ((#<)?[^/#]*)[#.]}
|
99
94
|
unbound = Regexp.last_match(1) && '(unbound)'
|
100
95
|
klass = Regexp.last_match(2)
|
101
96
|
if klass && klass =~ /(\(\w+:\s.*?\))/ # Is this ActiveRecord-style class?
|
@@ -123,21 +118,21 @@ module AmazingPrint
|
|
123
118
|
INDENT_CACHE = (0..100).map { |i| ' ' * i }.map(&:freeze).freeze
|
124
119
|
|
125
120
|
def indent(n = indentation)
|
126
|
-
INDENT_CACHE[n] || ' ' * n
|
121
|
+
INDENT_CACHE[n] || (' ' * n)
|
127
122
|
end
|
128
123
|
|
129
124
|
def outdent
|
130
125
|
i = indentation - options[:indent].abs
|
131
126
|
|
132
|
-
INDENT_CACHE[i] || ' ' * i
|
127
|
+
INDENT_CACHE[i] || (' ' * i)
|
133
128
|
end
|
134
129
|
|
135
130
|
def align(value, width)
|
136
131
|
if options[:multiline]
|
137
132
|
indent_option = options[:indent]
|
138
|
-
if indent_option
|
133
|
+
if indent_option.positive?
|
139
134
|
value.rjust(width)
|
140
|
-
elsif indent_option
|
135
|
+
elsif indent_option.zero?
|
141
136
|
"#{indent}#{value.ljust(width)}"
|
142
137
|
else
|
143
138
|
"#{indent(indentation + indent_option)}#{value.ljust(width)}"
|