betterp 0.1.2 → 0.1.3
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 +5 -5
- data/.rubocop.yml +18 -0
- data/Makefile +3 -2
- data/README.md +2 -2
- data/betterp.gemspec +1 -0
- data/bin/rspec +29 -0
- data/bin/rubocop +29 -0
- data/bin/strong_versions +29 -0
- data/lib/betterp.rb +2 -0
- data/lib/betterp/output.rb +48 -10
- data/lib/betterp/version.rb +1 -1
- data/lib/kernel.rb +12 -2
- metadata +21 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 77fbb36e55d0c863d7451219b231702f1520ea7abfd97997863be1da860b9a3f
|
4
|
+
data.tar.gz: 234ade8966e9e3e61b88d70e4143915bc842e814abdab13e5bcecb44970024cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 843988be19cc12f78344cd6392ea98ea636acef8e70f71a12dbb2193ced6fed064dc4ca8fba8a220f420368135c262883fe0faa2285bfcf5e3996cce0e83a2ef
|
7
|
+
data.tar.gz: e16a4d415911c0ae530e3aaae83bcfacabaddc2a8a9de5d28ac003f576094458f70377be7903632f337bfc62597baa3b1299b234a0de453f4d78987a463ec4a0
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Style/Documentation:
|
2
|
+
Enabled: false
|
3
|
+
|
4
|
+
Style/StringLiterals:
|
5
|
+
Exclude:
|
6
|
+
- 'lib/betterp/output.rb'
|
7
|
+
|
8
|
+
Style/FormatString:
|
9
|
+
Exclude:
|
10
|
+
- 'lib/betterp/output.rb'
|
11
|
+
|
12
|
+
Style/FormatStringToken:
|
13
|
+
Exclude:
|
14
|
+
- 'lib/betterp/output.rb'
|
15
|
+
|
16
|
+
AllCops:
|
17
|
+
Exclude:
|
18
|
+
- 'bin/**/*'
|
data/Makefile
CHANGED
data/README.md
CHANGED
@@ -22,7 +22,7 @@ The original semantics of `Kernel#p` are still applied, i.e. it returns the valu
|
|
22
22
|
Add the gem to your `Gemfile`
|
23
23
|
|
24
24
|
```ruby
|
25
|
-
gem 'betterp', '~> 0.1.
|
25
|
+
gem 'betterp', '~> 0.1.2'
|
26
26
|
```
|
27
27
|
|
28
28
|
And rebuild your bundle:
|
@@ -33,7 +33,7 @@ $ bundle install
|
|
33
33
|
|
34
34
|
Or install standalone:
|
35
35
|
```bash
|
36
|
-
$ gem install betterp -v '0.1.
|
36
|
+
$ gem install betterp -v '0.1.2'
|
37
37
|
```
|
38
38
|
|
39
39
|
## Usage
|
data/betterp.gemspec
CHANGED
@@ -31,4 +31,5 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
32
32
|
spec.add_development_dependency 'rspec-its', '~> 1.2'
|
33
33
|
spec.add_development_dependency 'rubocop', '~> 0.60.0'
|
34
|
+
spec.add_development_dependency 'strong_versions', '~> 0.3.2'
|
34
35
|
end
|
data/bin/rspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rspec' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rspec-core", "rspec")
|
data/bin/rubocop
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rubocop' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rubocop", "rubocop")
|
data/bin/strong_versions
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'strong_versions' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("strong_versions", "strong_versions")
|
data/lib/betterp.rb
CHANGED
data/lib/betterp/output.rb
CHANGED
@@ -5,23 +5,64 @@ module Betterp
|
|
5
5
|
COLORS = %i[red green yellow blue magenta cyan].freeze
|
6
6
|
EFFECTS = [:bright, nil].freeze
|
7
7
|
|
8
|
-
def initialize(raw, source)
|
8
|
+
def initialize(raw, source, options = {})
|
9
9
|
@raw = raw
|
10
10
|
@source = source
|
11
11
|
@color = color
|
12
12
|
@effect = effect
|
13
|
+
@pretty = options.fetch(:pretty, false)
|
13
14
|
end
|
14
15
|
|
15
16
|
def format(args)
|
16
17
|
args.map do |arg|
|
17
|
-
|
18
|
+
style = %i[cyan black]
|
19
|
+
header + colorize(prefix) + caller_code + Paint[pretty(arg), *style]
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
21
23
|
private
|
22
24
|
|
25
|
+
def pretty(arg)
|
26
|
+
return arg unless @pretty
|
27
|
+
|
28
|
+
io = StringIO.new
|
29
|
+
PP.pp(arg, io)
|
30
|
+
return io.string unless io.string.include?("\n")
|
31
|
+
|
32
|
+
"\n" + io.string.split("\n").map { |line| " #{line}" }.join("\n")
|
33
|
+
end
|
34
|
+
|
35
|
+
def caller_code
|
36
|
+
return '' unless @raw.include?(':')
|
37
|
+
|
38
|
+
path, line, *_rest = @raw.split(':')
|
39
|
+
return '' unless Pathname.new(path).readable? && line.to_i.positive?
|
40
|
+
|
41
|
+
Paint % [
|
42
|
+
+'%{open}%{code}%{close}',
|
43
|
+
:default,
|
44
|
+
open: ['{ ', :white, :default],
|
45
|
+
code: [find_caller(line.to_i, path).to_s.strip, :blue, :black],
|
46
|
+
close: [' } ', :white, :default]
|
47
|
+
]
|
48
|
+
end
|
49
|
+
|
50
|
+
def find_caller(line_number, path)
|
51
|
+
lines = File.readlines(path)
|
52
|
+
token = @pretty ? 'pp' : 'p'
|
53
|
+
lines[0...line_number].reverse.find { |line| line.match(/\b#{token}\b/) }
|
54
|
+
end
|
55
|
+
|
56
|
+
def header
|
57
|
+
Paint % [
|
58
|
+
+"%{standard}%{relevant}",
|
59
|
+
:default,
|
60
|
+
standard: [' ', :default],
|
61
|
+
relevant: ['•••• ', @color, @effect]
|
62
|
+
]
|
63
|
+
end
|
64
|
+
|
23
65
|
def prefix
|
24
|
-
# rubocop:disable Style/FormatStringToken
|
25
66
|
[
|
26
67
|
'%{path}',
|
27
68
|
'%{separator}',
|
@@ -30,20 +71,17 @@ module Betterp
|
|
30
71
|
'%{method_name}',
|
31
72
|
'%{terminator}'
|
32
73
|
].join
|
33
|
-
# rubocop:enable Style/FormatStringToken
|
34
74
|
end
|
35
75
|
|
36
76
|
def colorize(string)
|
37
|
-
|
38
|
-
Paint % [string, color, mapping]
|
39
|
-
# rubocop:enable Style/FormatString
|
77
|
+
Paint % [string, :default, mapping]
|
40
78
|
end
|
41
79
|
|
42
80
|
def mapping
|
43
81
|
{
|
44
|
-
path: [@source.path
|
45
|
-
line_no: [@source.line_no
|
46
|
-
method_name: [@source.method_name
|
82
|
+
path: [@source.path],
|
83
|
+
line_no: [@source.line_no],
|
84
|
+
method_name: [@source.method_name],
|
47
85
|
|
48
86
|
method_pointer: [' => ', :reset, :bright],
|
49
87
|
separator: [':', :reset],
|
data/lib/betterp/version.rb
CHANGED
data/lib/kernel.rb
CHANGED
@@ -3,10 +3,20 @@
|
|
3
3
|
module Kernel
|
4
4
|
def p(*args)
|
5
5
|
raw = caller(1..1).first
|
6
|
+
_betterp(raw, args)
|
7
|
+
end
|
8
|
+
|
9
|
+
def pp(*args)
|
10
|
+
raw = caller(1..1).first
|
11
|
+
_betterp(raw, args, pretty: true)
|
12
|
+
end
|
13
|
+
|
14
|
+
def _betterp(raw, args, options = {})
|
6
15
|
source = Betterp::Source.new(raw, Dir.pwd)
|
16
|
+
pretty = options.fetch(:pretty, false)
|
7
17
|
|
8
|
-
Betterp::Output.new(raw, source).format(args).each do |
|
9
|
-
STDOUT.write(
|
18
|
+
Betterp::Output.new(raw, source, pretty: pretty).format(args).each do |str|
|
19
|
+
STDOUT.write(str + "\n")
|
10
20
|
end
|
11
21
|
|
12
22
|
args.size > 1 ? args : args.first
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: betterp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Farrell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: paint
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.60.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: strong_versions
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.3.2
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.3.2
|
97
111
|
description: Replaces Kernel#p with a fancier version
|
98
112
|
email:
|
99
113
|
- bob@homeflow.co.uk
|
@@ -103,6 +117,7 @@ extra_rdoc_files: []
|
|
103
117
|
files:
|
104
118
|
- ".gitignore"
|
105
119
|
- ".rspec"
|
120
|
+
- ".rubocop.yml"
|
106
121
|
- Gemfile
|
107
122
|
- LICENSE
|
108
123
|
- Makefile
|
@@ -110,7 +125,10 @@ files:
|
|
110
125
|
- Rakefile
|
111
126
|
- betterp.gemspec
|
112
127
|
- bin/console
|
128
|
+
- bin/rspec
|
129
|
+
- bin/rubocop
|
113
130
|
- bin/setup
|
131
|
+
- bin/strong_versions
|
114
132
|
- doc/images/screenshot.png
|
115
133
|
- doc/testp.rb
|
116
134
|
- lib/betterp.rb
|
@@ -138,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
156
|
version: '0'
|
139
157
|
requirements: []
|
140
158
|
rubyforge_project:
|
141
|
-
rubygems_version: 2.
|
159
|
+
rubygems_version: 2.7.6
|
142
160
|
signing_key:
|
143
161
|
specification_version: 4
|
144
162
|
summary: Enhanced debug output
|