amazing_print 1.4.0 → 1.5.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/CHANGELOG.md +6 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +43 -37
- data/README.md +1 -2
- data/lib/amazing_print/colorize.rb +5 -12
- data/lib/amazing_print/colors.rb +37 -0
- data/lib/amazing_print/formatters/array_formatter.rb +1 -1
- data/lib/amazing_print/formatters/dir_formatter.rb +10 -1
- data/lib/amazing_print/formatters/file_formatter.rb +10 -1
- data/lib/amazing_print/formatters/hash_formatter.rb +2 -1
- data/lib/amazing_print/formatters/mswin_helper.rb +63 -0
- data/lib/amazing_print/inspector.rb +1 -1
- data/lib/amazing_print/version.rb +1 -1
- data/lib/amazing_print.rb +1 -1
- data/spec/colors_spec.rb +9 -4
- data/spec/ext/action_controller_spec.rb +3 -3
- data/spec/ext/active_record_spec.rb +24 -58
- data/spec/ext/nokogiri_spec.rb +4 -4
- data/spec/ext/sequel_spec.rb +1 -1
- data/spec/formats_spec.rb +82 -77
- data/spec/misc_spec.rb +14 -60
- data/spec/spec_helper.rb +7 -1
- metadata +10 -156
- data/lib/amazing_print/core_ext/string.rb +0 -45
- data/spec/core_ext/string_spec.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d771d603c88c997bca4379eba3dc4cd794994e5810edb0859ad5c47c3b2590c
|
4
|
+
data.tar.gz: 87ea8f90780f57731ad4cff0bfbce9eb2d837681829979bd23e839f62415a1b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1d1d0eb8ca306adbf3af3eec93d9cbb3fa6a47f1ad0e3b836d473bc4a0595be02dcd27af60de86a3f524bb373e5e0d2b9053f6b40dfac437add803dc075a315
|
7
|
+
data.tar.gz: 3c74f2a0333fad6e5c34b5209124767b931d56c88423960f55945b694e27dadd41636259f7a1a395e64d4971887c2d1f095b64714acd525748dae5423d670872
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
## Unreleased
|
2
2
|
|
3
|
+
## v1.5.0
|
4
|
+
- Drop support for Ruby 2.3 and 2.4 as well as JRuby 9.1
|
5
|
+
- Add File/Dir formatters for mswin platform #48
|
6
|
+
- Don't monkey patch String class #91
|
7
|
+
- Fix ruby19 hash syntax so it can be copy-pasted #94
|
8
|
+
|
3
9
|
## v1.4.0
|
4
10
|
- Support loading config from `$XDG_CONFIG_HOME/aprc` - #63
|
5
11
|
- Remove support for Rails 5.1 #75
|
data/Gemfile
CHANGED
@@ -4,3 +4,12 @@ source 'https://rubygems.org'
|
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in amazing_print.gemspec
|
6
6
|
gemspec
|
7
|
+
|
8
|
+
# Development dependencies
|
9
|
+
gem 'appraisal', '~> 2.3'
|
10
|
+
gem 'fakefs', '~> 1.2'
|
11
|
+
gem 'nokogiri', '~> 1.10'
|
12
|
+
gem 'pry'
|
13
|
+
gem 'rspec', '~> 3.9'
|
14
|
+
gem 'rubocop', '~> 1.20'
|
15
|
+
gem 'rubocop-rspec', '~> 2.4'
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
amazing_print (1.
|
4
|
+
amazing_print (1.5.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -12,56 +12,62 @@ GEM
|
|
12
12
|
thor (>= 0.14.0)
|
13
13
|
ast (2.4.2)
|
14
14
|
coderay (1.1.3)
|
15
|
-
diff-lcs (1.
|
16
|
-
fakefs (1.
|
15
|
+
diff-lcs (1.5.0)
|
16
|
+
fakefs (1.9.0)
|
17
|
+
json (2.6.3)
|
17
18
|
method_source (1.0.0)
|
18
|
-
|
19
|
-
nokogiri (1.12.5)
|
20
|
-
mini_portile2 (~> 2.6.1)
|
19
|
+
nokogiri (1.15.2-x86_64-linux)
|
21
20
|
racc (~> 1.4)
|
22
|
-
parallel (1.
|
23
|
-
parser (3.
|
21
|
+
parallel (1.23.0)
|
22
|
+
parser (3.2.2.1)
|
24
23
|
ast (~> 2.4.1)
|
25
|
-
pry (0.14.
|
24
|
+
pry (0.14.2)
|
26
25
|
coderay (~> 1.1)
|
27
26
|
method_source (~> 1.0)
|
28
|
-
racc (1.
|
29
|
-
rainbow (3.
|
27
|
+
racc (1.6.2)
|
28
|
+
rainbow (3.1.1)
|
30
29
|
rake (13.0.6)
|
31
|
-
regexp_parser (2.
|
30
|
+
regexp_parser (2.8.0)
|
32
31
|
rexml (3.2.5)
|
33
|
-
rspec (3.
|
34
|
-
rspec-core (~> 3.
|
35
|
-
rspec-expectations (~> 3.
|
36
|
-
rspec-mocks (~> 3.
|
37
|
-
rspec-core (3.
|
38
|
-
rspec-support (~> 3.
|
39
|
-
rspec-expectations (3.
|
32
|
+
rspec (3.12.0)
|
33
|
+
rspec-core (~> 3.12.0)
|
34
|
+
rspec-expectations (~> 3.12.0)
|
35
|
+
rspec-mocks (~> 3.12.0)
|
36
|
+
rspec-core (3.12.2)
|
37
|
+
rspec-support (~> 3.12.0)
|
38
|
+
rspec-expectations (3.12.3)
|
40
39
|
diff-lcs (>= 1.2.0, < 2.0)
|
41
|
-
rspec-support (~> 3.
|
42
|
-
rspec-mocks (3.
|
40
|
+
rspec-support (~> 3.12.0)
|
41
|
+
rspec-mocks (3.12.5)
|
43
42
|
diff-lcs (>= 1.2.0, < 2.0)
|
44
|
-
rspec-support (~> 3.
|
45
|
-
rspec-support (3.
|
46
|
-
rubocop (1.
|
43
|
+
rspec-support (~> 3.12.0)
|
44
|
+
rspec-support (3.12.0)
|
45
|
+
rubocop (1.51.0)
|
46
|
+
json (~> 2.3)
|
47
47
|
parallel (~> 1.10)
|
48
|
-
parser (>= 3.
|
48
|
+
parser (>= 3.2.0.0)
|
49
49
|
rainbow (>= 2.2.2, < 4.0)
|
50
50
|
regexp_parser (>= 1.8, < 3.0)
|
51
|
-
rexml
|
52
|
-
rubocop-ast (>= 1.
|
51
|
+
rexml (>= 3.2.5, < 4.0)
|
52
|
+
rubocop-ast (>= 1.28.0, < 2.0)
|
53
53
|
ruby-progressbar (~> 1.7)
|
54
|
-
unicode-display_width (>=
|
55
|
-
rubocop-ast (1.
|
56
|
-
parser (>= 3.
|
57
|
-
rubocop-
|
58
|
-
rubocop (~> 1.
|
59
|
-
|
60
|
-
|
61
|
-
|
54
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
55
|
+
rubocop-ast (1.28.1)
|
56
|
+
parser (>= 3.2.1.0)
|
57
|
+
rubocop-capybara (2.18.0)
|
58
|
+
rubocop (~> 1.41)
|
59
|
+
rubocop-factory_bot (2.23.1)
|
60
|
+
rubocop (~> 1.33)
|
61
|
+
rubocop-rspec (2.22.0)
|
62
|
+
rubocop (~> 1.33)
|
63
|
+
rubocop-capybara (~> 2.17)
|
64
|
+
rubocop-factory_bot (~> 2.22)
|
65
|
+
ruby-progressbar (1.13.0)
|
66
|
+
thor (1.2.2)
|
67
|
+
unicode-display_width (2.4.2)
|
62
68
|
|
63
69
|
PLATFORMS
|
64
|
-
|
70
|
+
x86_64-linux
|
65
71
|
|
66
72
|
DEPENDENCIES
|
67
73
|
amazing_print!
|
@@ -74,4 +80,4 @@ DEPENDENCIES
|
|
74
80
|
rubocop-rspec (~> 2.4)
|
75
81
|
|
76
82
|
BUNDLED WITH
|
77
|
-
2.
|
83
|
+
2.3.12
|
data/README.md
CHANGED
@@ -3,9 +3,8 @@
|
|
3
3
|
[![RubyGems][gem_version_badge]][ruby_gems]
|
4
4
|
[![RubyGems][gem_downloads_badge]][ruby_gems]
|
5
5
|
|
|
6
|
-
[![Travis CI][travis_ci_badge]][travis_ci]
|
7
6
|

|
8
|
-

|
9
8
|
|
|
10
9
|
[](https://gitter.im/amazing-print/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
11
10
|
|
@@ -2,24 +2,17 @@
|
|
2
2
|
|
3
3
|
autoload :CGI, 'cgi'
|
4
4
|
|
5
|
+
require_relative 'colors'
|
6
|
+
|
5
7
|
module AmazingPrint
|
6
8
|
module Colorize
|
7
9
|
# Pick the color and apply it to the given string as necessary.
|
8
10
|
#------------------------------------------------------------------------------
|
9
11
|
def colorize(str, type)
|
10
12
|
str = CGI.escapeHTML(str) if options[:html]
|
11
|
-
if options[:plain] || !options[:color][type] || !inspector.colorize?
|
12
|
-
|
13
|
-
|
14
|
-
# Check if the string color method is defined by amazing_print and accepts
|
15
|
-
# html parameter or it has been overriden by some gem such as colorize.
|
16
|
-
#
|
17
|
-
elsif str.method(options[:color][type]).arity == -1 # Accepts html parameter.
|
18
|
-
str.send(options[:color][type], options[:html])
|
19
|
-
else
|
20
|
-
str = %(<kbd style="color:#{options[:color][type]}">#{str}</kbd>) if options[:html]
|
21
|
-
str.send(options[:color][type])
|
22
|
-
end
|
13
|
+
return str if options[:plain] || !options[:color][type] || !inspector.colorize?
|
14
|
+
|
15
|
+
AmazingPrint::Colors.public_send(options[:color][type], str, options[:html])
|
23
16
|
end
|
24
17
|
end
|
25
18
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module AmazingPrint
|
4
|
+
module Colors
|
5
|
+
module_function
|
6
|
+
|
7
|
+
#
|
8
|
+
# ANSI color codes:
|
9
|
+
# \e => escape
|
10
|
+
# 30 => color base
|
11
|
+
# 1 => bright
|
12
|
+
# 0 => normal
|
13
|
+
#
|
14
|
+
# For HTML coloring we use <kbd> tag instead of <span> to require monospace
|
15
|
+
# font. Note that beloved <tt> has been removed from HTML5.
|
16
|
+
#
|
17
|
+
%w[gray red green yellow blue purple cyan white].zip(
|
18
|
+
%w[black darkred darkgreen brown navy darkmagenta darkcyan slategray]
|
19
|
+
).each_with_index do |(color, shade), i|
|
20
|
+
# NOTE: Format strings are created once only, for performance, and remembered by closures.
|
21
|
+
|
22
|
+
term_bright_seq = "\e[1;#{i + 30}m%s\e[0m"
|
23
|
+
html_bright_seq = %(<kbd style="color:#{color}">%s</kbd>)
|
24
|
+
|
25
|
+
define_method color do |str, html = false|
|
26
|
+
(html ? html_bright_seq : term_bright_seq) % str
|
27
|
+
end
|
28
|
+
|
29
|
+
term_normal_seq = "\e[0;#{i + 30}m%s\e[0m"
|
30
|
+
html_normal_seq = %(<kbd style="color:#{shade}">%s</kbd>)
|
31
|
+
|
32
|
+
define_method "#{color}ish" do |str, html = false|
|
33
|
+
(html ? html_normal_seq : term_normal_seq) % str
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'shellwords'
|
4
4
|
|
5
5
|
require_relative 'base_formatter'
|
6
|
+
require_relative 'mswin_helper' if RUBY_PLATFORM.include?('mswin')
|
6
7
|
|
7
8
|
module AmazingPrint
|
8
9
|
module Formatters
|
@@ -17,9 +18,17 @@ module AmazingPrint
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def format
|
20
|
-
ls =
|
21
|
+
ls = info
|
21
22
|
colorize(ls.empty? ? dir.inspect : "#{dir.inspect}\n#{ls.chop}", :dir)
|
22
23
|
end
|
24
|
+
|
25
|
+
def info
|
26
|
+
if RUBY_PLATFORM.include?('mswin')
|
27
|
+
"#{GetChildItem.new(@dir.path)}\n"
|
28
|
+
else
|
29
|
+
`ls -alF #{dir.path.shellescape}`
|
30
|
+
end
|
31
|
+
end
|
23
32
|
end
|
24
33
|
end
|
25
34
|
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'shellwords'
|
4
4
|
|
5
5
|
require_relative 'base_formatter'
|
6
|
+
require_relative 'mswin_helper' if RUBY_PLATFORM.include?('mswin')
|
6
7
|
|
7
8
|
module AmazingPrint
|
8
9
|
module Formatters
|
@@ -17,9 +18,17 @@ module AmazingPrint
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def format
|
20
|
-
ls =
|
21
|
+
ls = info
|
21
22
|
colorize(ls.empty? ? file.inspect : "#{file.inspect}\n#{ls.chop}", :file)
|
22
23
|
end
|
24
|
+
|
25
|
+
def info
|
26
|
+
if RUBY_PLATFORM.include?('mswin')
|
27
|
+
"#{GetChildItem.new(@file.path)}\n"
|
28
|
+
else
|
29
|
+
File.directory?(file) ? `ls -adlF #{file.path.shellescape}` : `ls -alF #{file.path.shellescape}`
|
30
|
+
end
|
31
|
+
end
|
23
32
|
end
|
24
33
|
end
|
25
34
|
end
|
@@ -87,7 +87,8 @@ module AmazingPrint
|
|
87
87
|
|
88
88
|
def ruby19_syntax(key, value, width)
|
89
89
|
key[0] = ''
|
90
|
-
|
90
|
+
key << ':'
|
91
|
+
"#{align(key, width)} #{inspector.awesome(value)}"
|
91
92
|
end
|
92
93
|
|
93
94
|
def pre_ruby19_syntax(key, value, width)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'fiddle'
|
4
|
+
require 'fiddle/import'
|
5
|
+
|
6
|
+
module AmazingPrint
|
7
|
+
module Formatters
|
8
|
+
module Kernel32
|
9
|
+
extend Fiddle::Importer
|
10
|
+
dlload 'kernel32'
|
11
|
+
extern 'unsigned long GetFileAttributesA(const char*)'
|
12
|
+
end
|
13
|
+
|
14
|
+
class GetChildItem
|
15
|
+
def initialize(fname)
|
16
|
+
@fname = fname
|
17
|
+
@stat = File.send(File.symlink?(@fname) ? :lstat : :stat, @fname)
|
18
|
+
@attrs = Kernel32::GetFileAttributesA @fname
|
19
|
+
end
|
20
|
+
|
21
|
+
# docs.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants
|
22
|
+
FILE_ATTRIBUTE_ARCHIVE = 0x20
|
23
|
+
FILE_ATTRIBUTE_READONLY = 0x1
|
24
|
+
FILE_ATTRIBUTE_HIDDEN = 0x2
|
25
|
+
FILE_ATTRIBUTE_SYSTEM = 0x4
|
26
|
+
|
27
|
+
def mode
|
28
|
+
r = ['-'] * 6
|
29
|
+
r[0] = 'd' if @stat.directory?
|
30
|
+
r[1] = 'a' unless (@attrs & FILE_ATTRIBUTE_ARCHIVE).zero?
|
31
|
+
r[2] = 'r' unless (@attrs & FILE_ATTRIBUTE_READONLY).zero?
|
32
|
+
r[3] = 'h' unless (@attrs & FILE_ATTRIBUTE_HIDDEN).zero?
|
33
|
+
r[4] = 's' unless (@attrs & FILE_ATTRIBUTE_SYSTEM).zero?
|
34
|
+
r[5] = 'l' if File.symlink? @fname
|
35
|
+
r.join
|
36
|
+
end
|
37
|
+
|
38
|
+
def last_write_time
|
39
|
+
@stat.mtime.strftime '%Y-%m-%d %H:%M'
|
40
|
+
end
|
41
|
+
|
42
|
+
def length
|
43
|
+
@stat.file? ? @stat.size.to_s : ''
|
44
|
+
end
|
45
|
+
|
46
|
+
def name
|
47
|
+
@fname
|
48
|
+
end
|
49
|
+
|
50
|
+
def to_s
|
51
|
+
format '%-12<Mode>s %<LastWriteTime>s %14<Length>s %<Name>s',
|
52
|
+
{
|
53
|
+
Mode: mode,
|
54
|
+
LastWriteTime: last_write_time,
|
55
|
+
Length: length,
|
56
|
+
Name: name
|
57
|
+
}
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
puts AmazingPrint::Formatters::GetChildItem.new ARGV[0] if __FILE__ == $PROGRAM_NAME
|
@@ -166,7 +166,7 @@ module AmazingPrint
|
|
166
166
|
return xdg_config_path if File.exist?(xdg_config_path)
|
167
167
|
|
168
168
|
# default to ~/.aprc
|
169
|
-
File.join(
|
169
|
+
File.join(Dir.home, '.aprc')
|
170
170
|
end
|
171
171
|
|
172
172
|
# This method needs to be mocked during testing so that it always loads
|
data/lib/amazing_print.rb
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
# so do nothing for subsequent requires.
|
11
11
|
#
|
12
12
|
unless defined?(AmazingPrint::Inspector)
|
13
|
-
%w[awesome_method_array
|
13
|
+
%w[awesome_method_array object class kernel].each do |file|
|
14
14
|
require_relative "amazing_print/core_ext/#{file}"
|
15
15
|
end
|
16
16
|
|
data/spec/colors_spec.rb
CHANGED
@@ -102,11 +102,16 @@ RSpec.describe 'AmazingPrint' do
|
|
102
102
|
stub_tty!
|
103
103
|
end
|
104
104
|
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe 'AmazingPrint::Colors' do
|
108
|
+
%i[gray red green yellow blue purple cyan white].each_with_index do |color, i|
|
109
|
+
it "has #{color} color" do
|
110
|
+
expect(AmazingPrint::Colors.public_send(color, color.to_s)).to eq("\e[1;#{i + 30}m#{color}\e[0m")
|
111
|
+
end
|
105
112
|
|
106
|
-
|
107
|
-
|
108
|
-
expect('red'.red + 'blue'.blue).to eq "\e[1;31mred\e[0m\e[1;34mblue\e[0m"
|
109
|
-
expect(('red'.red + 'blue'.blue).uncolor).to eq 'redblue'
|
113
|
+
it "has #{color}ish color" do
|
114
|
+
expect(AmazingPrint::Colors.public_send(:"#{color}ish", color.to_s)).to eq("\e[0;#{i + 30}m#{color}\e[0m")
|
110
115
|
end
|
111
116
|
end
|
112
117
|
end
|
@@ -21,9 +21,9 @@ RSpec.describe 'AmazingPrint::ActionController', skip: -> { !ExtVerifier.has_rai
|
|
21
21
|
let(:expected_output) do
|
22
22
|
<<~OUTPUT
|
23
23
|
{
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
"post"\e[0;37m => \e[0m{
|
25
|
+
"id"\e[0;37m => \e[0m\e[1;34m1\e[0m,
|
26
|
+
"content"\e[0;37m => \e[0m\e[0;33m"Some"\e[0m
|
27
27
|
}
|
28
28
|
}
|
29
29
|
OUTPUT
|
@@ -23,11 +23,7 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
23
23
|
:rank => 1
|
24
24
|
}
|
25
25
|
EOS
|
26
|
-
|
27
|
-
str.sub!('?', 'Sat Oct 10 12:30:00 UTC 1992')
|
28
|
-
else
|
29
|
-
str.sub!('?', '1992-10-10 12:30:00 UTC')
|
30
|
-
end
|
26
|
+
str.sub!('?', '1992-10-10 12:30:00 UTC')
|
31
27
|
expect(out).to be_similar_to(str)
|
32
28
|
end
|
33
29
|
|
@@ -51,13 +47,8 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
51
47
|
}
|
52
48
|
]
|
53
49
|
EOS
|
54
|
-
|
55
|
-
|
56
|
-
str.sub!('?!', 'Mon May 26 14:15:00 UTC 2003')
|
57
|
-
else
|
58
|
-
str.sub!('??', '1992-10-10 12:30:00 UTC')
|
59
|
-
str.sub!('?!', '2003-05-26 14:15:00 UTC')
|
60
|
-
end
|
50
|
+
str.sub!('??', '1992-10-10 12:30:00 UTC')
|
51
|
+
str.sub!('?!', '2003-05-26 14:15:00 UTC')
|
61
52
|
expect(out).to be_similar_to(str)
|
62
53
|
end
|
63
54
|
|
@@ -83,13 +74,8 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
83
74
|
}
|
84
75
|
]
|
85
76
|
EOS
|
86
|
-
|
87
|
-
|
88
|
-
str.sub!('?!', 'Mon May 26 14:15:00 UTC 2003')
|
89
|
-
else
|
90
|
-
str.sub!('??', '1992-10-10 12:30:00 UTC')
|
91
|
-
str.sub!('?!', '2003-05-26 14:15:00 UTC')
|
92
|
-
end
|
77
|
+
str.sub!('??', '1992-10-10 12:30:00 UTC')
|
78
|
+
str.sub!('?!', '2003-05-26 14:15:00 UTC')
|
93
79
|
expect(out).to be_similar_to(str)
|
94
80
|
end
|
95
81
|
end
|
@@ -139,21 +125,13 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
139
125
|
elsif activerecord_5_0?
|
140
126
|
ActiveRecordData.raw_5_0_diana
|
141
127
|
elsif activerecord_4_2?
|
142
|
-
|
143
|
-
ActiveRecordData.raw_4_2_diana
|
144
|
-
else
|
145
|
-
ActiveRecordData.raw_4_2_diana_legacy
|
146
|
-
end
|
128
|
+
ActiveRecordData.raw_4_2_diana
|
147
129
|
elsif activerecord_4_1?
|
148
130
|
ActiveRecordData.raw_4_1_diana
|
149
131
|
elsif activerecord_4_0?
|
150
132
|
ActiveRecordData.raw_4_0_diana
|
151
133
|
elsif activerecord_3_2?
|
152
|
-
|
153
|
-
ActiveRecordData.raw_3_2_diana
|
154
|
-
else
|
155
|
-
ActiveRecordData.raw_3_2_diana_legacy
|
156
|
-
end
|
134
|
+
ActiveRecordData.raw_3_2_diana
|
157
135
|
end
|
158
136
|
|
159
137
|
if RUBY_PLATFORM == 'java' && !activerecord_6_1?
|
@@ -181,21 +159,13 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
181
159
|
elsif activerecord_5_0?
|
182
160
|
ActiveRecordData.raw_5_0_multi
|
183
161
|
elsif activerecord_4_2?
|
184
|
-
|
185
|
-
ActiveRecordData.raw_4_2_multi
|
186
|
-
else
|
187
|
-
ActiveRecordData.raw_4_2_multi_legacy
|
188
|
-
end
|
162
|
+
ActiveRecordData.raw_4_2_multi
|
189
163
|
elsif activerecord_4_1?
|
190
164
|
ActiveRecordData.raw_4_1_multi
|
191
165
|
elsif activerecord_4_0?
|
192
166
|
ActiveRecordData.raw_4_0_multi
|
193
167
|
elsif activerecord_3_2?
|
194
|
-
|
195
|
-
ActiveRecordData.raw_3_2_multi
|
196
|
-
else
|
197
|
-
ActiveRecordData.raw_3_2_multi_legacy
|
198
|
-
end
|
168
|
+
ActiveRecordData.raw_3_2_multi
|
199
169
|
end
|
200
170
|
|
201
171
|
if RUBY_PLATFORM == 'java' && !activerecord_6_1?
|
@@ -266,24 +236,24 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
266
236
|
expect(out).to match(
|
267
237
|
/\s+first\(\*args,\s&block\)\s+#<Class:\w+>\s+\(ActiveRecord::Querying\)/
|
268
238
|
)
|
269
|
-
elsif RUBY_VERSION >= '3.
|
239
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.1.0')
|
240
|
+
expect(out).to match(
|
241
|
+
/\s*first\(\*(\*|args),\s+\?,\s+&(&|block)\)\s+#<Class:User> \(ActiveRecord::Querying\)/
|
242
|
+
)
|
243
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
|
270
244
|
expect(out).to match(
|
271
245
|
/\s*first\(\*(\*|args),\s+&(&|block)\)\s+#<Class:User> \(ActiveRecord::Querying\)/
|
272
246
|
)
|
273
|
-
elsif RUBY_VERSION >= '2.7.2'
|
247
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.2')
|
274
248
|
expect(out).to match(
|
275
249
|
/\s*first\(\*(\*|args),\s+&(&|block)\)\s+User/
|
276
250
|
)
|
277
|
-
elsif RUBY_VERSION >= '2.6.7'
|
251
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6.7')
|
278
252
|
expect(out).to match(
|
279
253
|
/\s*first\(\*(\*|args),\s+&(&|block)\)\s+#<Class:ActiveRecord::Base> \(ActiveRecord::Querying\)/
|
280
254
|
)
|
281
|
-
elsif RUBY_VERSION
|
255
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.4')
|
282
256
|
expect(out).to match(/\sfirst\(\*arg.*?\)\s+User/)
|
283
|
-
elsif RUBY_VERSION >= '1.9'
|
284
|
-
expect(out).to match(/\sfirst\(\*args,\s&block\)\s+Class \(ActiveRecord::Querying\)/)
|
285
|
-
else
|
286
|
-
expect(out).to match(/\sfirst\(\*arg1\)\s+Class \(ActiveRecord::Querying\)/)
|
287
257
|
end
|
288
258
|
else
|
289
259
|
expect(out).to match(/\sfirst\(\*arg.*?\)\s+User \(ActiveRecord::Base\)/)
|
@@ -295,18 +265,16 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
295
265
|
expect(out).to match(
|
296
266
|
/\sprimary_key\(.*?\)\s+#<Class:\w+>\s\(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/
|
297
267
|
)
|
298
|
-
elsif RUBY_VERSION >= '3.0.0'
|
268
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
|
299
269
|
expect(out).to match(/\sprimary_key\(.*?\)\s+#<Class:User> \(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/)
|
300
|
-
elsif RUBY_VERSION >= '2.6.7' && RUBY_VERSION < '2.7.0'
|
270
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.6.7') && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0')
|
301
271
|
expect(out).to match(/\sprimary_key\(.*?\)\s+#<Class:ActiveRecord::Base> \(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/)
|
302
|
-
elsif RUBY_VERSION
|
272
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.4') || Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.2')
|
303
273
|
expect(out).to match(/\sprimary_key\(.*?\)\s+User/)
|
304
|
-
elsif RUBY_VERSION >= '2.7.0'
|
274
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
|
305
275
|
expect(out).to match(
|
306
276
|
/\sprimary_key\(.*?\)\s+.+Class.+\(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/
|
307
277
|
)
|
308
|
-
else
|
309
|
-
expect(out).to match(/\sprimary_key\(.*?\)\s+Class \(ActiveRecord::AttributeMethods::PrimaryKey::ClassMethods\)/)
|
310
278
|
end
|
311
279
|
|
312
280
|
# spec 3
|
@@ -316,16 +284,14 @@ RSpec.describe 'AmazingPrint/ActiveRecord', skip: -> { !ExtVerifier.has_rails? }
|
|
316
284
|
expect(out).to match(/\svalidate\(\*arg.*?\)\s+User \(ActiveRecord::Base\)/)
|
317
285
|
elsif RUBY_PLATFORM == 'java'
|
318
286
|
expect(out).to match(/\svalidate\(\*arg.*?\)\s+#<Class:\w+> \(ActiveModel::Validations::ClassMethods\)/)
|
319
|
-
elsif RUBY_VERSION >= '3.0.0'
|
287
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0.0')
|
320
288
|
expect(out).to match(/\svalidate\(\*arg.*?\)\s+#<Class:User> \(ActiveModel::Validations::ClassMethods\)/)
|
321
|
-
elsif
|
289
|
+
elsif (Gem::Version.new('2.6.7')..Gem::Version.new('2.7.1')).cover? Gem::Version.new(RUBY_VERSION)
|
322
290
|
expect(out).to match(
|
323
291
|
/\svalidate\(\*args.*?\)\s+#<Class:ActiveRecord::Base> \(ActiveModel::Validations::ClassMethods\)/
|
324
292
|
)
|
325
|
-
elsif RUBY_VERSION
|
293
|
+
elsif Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.4') || Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.2')
|
326
294
|
expect(out).to match(/\svalidate\(\*arg.*?\)\s+User/)
|
327
|
-
else
|
328
|
-
expect(out).to match(/\svalidate\(\*arg.*?\)\s+Class \(ActiveModel::Validations::ClassMethods\)/)
|
329
295
|
end
|
330
296
|
end
|
331
297
|
end
|
data/spec/ext/nokogiri_spec.rb
CHANGED
@@ -8,7 +8,7 @@ RSpec.describe 'AmazingPrint/Nokogiri' do
|
|
8
8
|
# FIXME: Due to something strange with Nokogiri and JRuby, we need to remove extra blank lines.
|
9
9
|
output = xml.ai.gsub(/\n\n/, "\n")
|
10
10
|
expect(output).to eq <<~EOS
|
11
|
-
<?xml version
|
11
|
+
<?xml version="1.0"?>\e[1;32m
|
12
12
|
\e[0m<\e[1;36mhtml\e[0m>\e[1;32m
|
13
13
|
\e[0m<\e[1;36mbody\e[0m>\e[1;32m
|
14
14
|
\e[0m<\e[1;36mh1\e[0m/>\e[1;32m
|
@@ -20,7 +20,7 @@ RSpec.describe 'AmazingPrint/Nokogiri' do
|
|
20
20
|
it 'colorizes contents' do
|
21
21
|
xml = Nokogiri::XML('<html><body><h1>Hello</h1></body></html>')
|
22
22
|
expect(xml.ai).to eq <<~EOS
|
23
|
-
<?xml version
|
23
|
+
<?xml version="1.0"?>\e[1;32m
|
24
24
|
\e[0m<\e[1;36mhtml\e[0m>\e[1;32m
|
25
25
|
\e[0m<\e[1;36mbody\e[0m>\e[1;32m
|
26
26
|
\e[0m<\e[1;36mh1\e[0m>\e[1;32mHello\e[0m<\e[1;36m/h1\e[0m>\e[1;32m
|
@@ -34,11 +34,11 @@ RSpec.describe 'AmazingPrint/Nokogiri' do
|
|
34
34
|
# FIXME: Due to something strange with Nokogiri and JRuby, we need to remove extra blank lines.
|
35
35
|
output = xml.ai.gsub(/\n\n/, "\n")
|
36
36
|
expect(output).to eq <<~EOS
|
37
|
-
<?xml version
|
37
|
+
<?xml version="1.0"?>\e[1;32m
|
38
38
|
\e[0m<\e[1;36mhtml\e[0m>\e[1;32m
|
39
39
|
\e[0m<\e[1;36mbody\e[0m>\e[1;32m
|
40
40
|
\e[0m<\e[1;36mh1\e[0m>\e[1;32m
|
41
|
-
\e[0m<\e[1;36mspan\e[0m \e[1;33mclass
|
41
|
+
\e[0m<\e[1;36mspan\e[0m \e[1;33mclass="world"\e[0m \e[1;33mid="hello"\e[0m/>\e[1;32m
|
42
42
|
\e[0m<\e[1;36m/h1\e[0m>\e[1;32m
|
43
43
|
\e[0m<\e[1;36m/body\e[0m>\e[1;32m
|
44
44
|
\e[0m<\e[1;36m/html\e[0m>
|
data/spec/ext/sequel_spec.rb
CHANGED
@@ -39,7 +39,7 @@ RSpec.describe 'AmazingPrint/Sequel', skip: -> { !ExtVerifier.has_sequel? }.call
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'does not crash if on Sequel::Model' do
|
42
|
-
out = @ap.awesome(
|
42
|
+
out = @ap.awesome(Sequel::Model)
|
43
43
|
expect(out).to be_similar_to('Sequel::Model < Object')
|
44
44
|
end
|
45
45
|
end
|