debugging 1.0.2 → 2.0.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 +5 -5
- data/CODE_OF_CONDUCT.md +74 -0
- data/ChangeLog.md +54 -0
- data/Gemfile +0 -8
- data/Gemfile.lock +17 -29
- data/{LICENSE.txt → MIT-LICENSE.txt} +1 -1
- data/README.md +168 -0
- data/Rakefile +31 -25
- data/debugging.gemspec +10 -11
- data/lib/debugging/all.rb +1 -2
- data/lib/debugging/howtocall.rb +36 -0
- data/lib/debugging/mof.rb +13 -12
- data/lib/debugging/q.rb +1 -1
- data/lib/debugging/version.rb +3 -1
- data/spec/howtocall_spec.rb +74 -0
- data/spec/q_spec.rb +10 -8
- metadata +31 -83
- data/.travis.yml +0 -13
- data/ChangeLog.rdoc +0 -27
- data/README.rdoc +0 -123
- data/lib/debugging/repl.rb +0 -16
- data/pkg/debugging-1.0.0.gem +0 -0
- data/pkg/debugging-1.0.1.gem +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 872be0c025197161f198fa80b00b9858ccd5c2a07fa9206614e167f3ece4127d
|
|
4
|
+
data.tar.gz: f3a4c854578c6a36be5919069a2448c2771e4d14e320a303194214d8a1c74d33
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7d1401c88701c1ff2e1a6a55452dce12f707beaefca1c1391be0f2733d094d93a43810103ce1627bff6165688ef4ae56c05e7f0555b67d65e8c14610fad6cac4
|
|
7
|
+
data.tar.gz: d219975b0a6656d4c3ce8828037a183d6e92aad103fdd41aacd5130fbd17db730aca2f51629171c9e24db2eded92368085eaaa0cffb6dcd46ec05153af65ca7c
|
data/CODE_OF_CONDUCT.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
|
6
|
+
contributors and maintainers pledge to making participation in our project and
|
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
|
8
|
+
size, disability, ethnicity, gender identity and expression, level of experience,
|
|
9
|
+
nationality, personal appearance, race, religion, or sexual identity and
|
|
10
|
+
orientation.
|
|
11
|
+
|
|
12
|
+
## Our Standards
|
|
13
|
+
|
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
|
15
|
+
include:
|
|
16
|
+
|
|
17
|
+
* Using welcoming and inclusive language
|
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
|
19
|
+
* Gracefully accepting constructive criticism
|
|
20
|
+
* Focusing on what is best for the community
|
|
21
|
+
* Showing empathy towards other community members
|
|
22
|
+
|
|
23
|
+
Examples of unacceptable behavior by participants include:
|
|
24
|
+
|
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
|
26
|
+
advances
|
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
28
|
+
* Public or private harassment
|
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
|
30
|
+
address, without explicit permission
|
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
|
32
|
+
professional setting
|
|
33
|
+
|
|
34
|
+
## Our Responsibilities
|
|
35
|
+
|
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
|
38
|
+
response to any instances of unacceptable behavior.
|
|
39
|
+
|
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
|
44
|
+
threatening, offensive, or harmful.
|
|
45
|
+
|
|
46
|
+
## Scope
|
|
47
|
+
|
|
48
|
+
This Code of Conduct applies both within project spaces and in public spaces
|
|
49
|
+
when an individual is representing the project or its community. Examples of
|
|
50
|
+
representing a project or community include using an official project e-mail
|
|
51
|
+
address, posting via an official social media account, or acting as an appointed
|
|
52
|
+
representative at an online or offline event. Representation of a project may be
|
|
53
|
+
further defined and clarified by project maintainers.
|
|
54
|
+
|
|
55
|
+
## Enforcement
|
|
56
|
+
|
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
58
|
+
reported by contacting the project team at conduct@janlelis.com. All
|
|
59
|
+
complaints will be reviewed and investigated and will result in a response that
|
|
60
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
|
61
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
62
|
+
Further details of specific enforcement policies may be posted separately.
|
|
63
|
+
|
|
64
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
65
|
+
faith may face temporary or permanent repercussions as determined by other
|
|
66
|
+
members of the project's leadership.
|
|
67
|
+
|
|
68
|
+
## Attribution
|
|
69
|
+
|
|
70
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
71
|
+
available at [http://contributor-covenant.org/version/1/4][version]
|
|
72
|
+
|
|
73
|
+
[homepage]: http://contributor-covenant.org
|
|
74
|
+
[version]: http://contributor-covenant.org/version/1/4/
|
data/ChangeLog.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
## ChangeLog
|
|
2
|
+
|
|
3
|
+
### 2.0.0 / 2021-12-30
|
|
4
|
+
|
|
5
|
+
* Remove `debugging/repl`, since Ruby now has `binding.irb`
|
|
6
|
+
|
|
7
|
+
### 1.1.2 / 2020-12-29
|
|
8
|
+
|
|
9
|
+
* Relax required Ruby version
|
|
10
|
+
|
|
11
|
+
### 1.1.1 / 2017-03-18
|
|
12
|
+
|
|
13
|
+
* Make howtocall private
|
|
14
|
+
* Relax paint dependency (allow paint versions 2.x)
|
|
15
|
+
|
|
16
|
+
### 1.1.0 / 2015-03-26
|
|
17
|
+
|
|
18
|
+
* Added:
|
|
19
|
+
* howtocall
|
|
20
|
+
* Change output from `mof`, now only returns singleton methods per module for modules
|
|
21
|
+
* Make q compatible with paint ~> 1.0
|
|
22
|
+
* Drop support for Ruby 1
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### 1.0.2 / 2015-01-24
|
|
26
|
+
|
|
27
|
+
* Bump binding.repl version
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### 1.0.1 / 2014-02-15
|
|
31
|
+
|
|
32
|
+
* Bump binding.repl version
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### 1.0.0 / 2014-01-19
|
|
36
|
+
|
|
37
|
+
* Adjusted concept: Only helper method style
|
|
38
|
+
* Removed:
|
|
39
|
+
* dd
|
|
40
|
+
* binding.vars
|
|
41
|
+
|
|
42
|
+
* Added:
|
|
43
|
+
* beep
|
|
44
|
+
* repl
|
|
45
|
+
|
|
46
|
+
* Renamed:
|
|
47
|
+
* oo -> at
|
|
48
|
+
* cc -> callstack
|
|
49
|
+
* mm -> mof
|
|
50
|
+
* regexp_visualize -> re
|
|
51
|
+
|
|
52
|
+
* Method List: Display all available ancestors by default and add third argument for grepping
|
|
53
|
+
* Moved from zucker 13.1 gem into its own gem
|
|
54
|
+
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,43 +1,31 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
debugging (1.
|
|
5
|
-
|
|
6
|
-
paint (~> 0, >= 0.8.7)
|
|
4
|
+
debugging (1.1.2)
|
|
5
|
+
paint (>= 0.9, < 3.0)
|
|
7
6
|
|
|
8
7
|
GEM
|
|
9
8
|
remote: https://rubygems.org/
|
|
10
9
|
specs:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
json (~> 1.4)
|
|
21
|
-
rspec (2.14.1)
|
|
22
|
-
rspec-core (~> 2.14.0)
|
|
23
|
-
rspec-expectations (~> 2.14.0)
|
|
24
|
-
rspec-mocks (~> 2.14.0)
|
|
25
|
-
rspec-core (2.14.7)
|
|
26
|
-
rspec-expectations (2.14.4)
|
|
10
|
+
diff-lcs (1.4.4)
|
|
11
|
+
paint (2.2.1)
|
|
12
|
+
rake (13.0.6)
|
|
13
|
+
rspec (2.99.0)
|
|
14
|
+
rspec-core (~> 2.99.0)
|
|
15
|
+
rspec-expectations (~> 2.99.0)
|
|
16
|
+
rspec-mocks (~> 2.99.0)
|
|
17
|
+
rspec-core (2.99.2)
|
|
18
|
+
rspec-expectations (2.99.2)
|
|
27
19
|
diff-lcs (>= 1.1.3, < 2.0)
|
|
28
|
-
rspec-mocks (2.
|
|
29
|
-
rubygems-tasks (0.2.4)
|
|
30
|
-
rubysl-singleton (2.0.0)
|
|
20
|
+
rspec-mocks (2.99.4)
|
|
31
21
|
|
|
32
22
|
PLATFORMS
|
|
33
23
|
ruby
|
|
34
24
|
|
|
35
25
|
DEPENDENCIES
|
|
36
|
-
binding_of_caller
|
|
37
|
-
bundler (~> 1.0)
|
|
38
26
|
debugging!
|
|
39
|
-
rake (~>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
27
|
+
rake (~> 13.0)
|
|
28
|
+
rspec (~> 2.99)
|
|
29
|
+
|
|
30
|
+
BUNDLED WITH
|
|
31
|
+
2.2.22
|
data/README.md
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Ruby Print Debugging [](https://badge.fury.io/rb/debugging) [<img src="https://github.com/janlelis/debugging/workflows/Test/badge.svg" />](https://github.com/janlelis/debugging/actions?query=workflow%3ATest)
|
|
2
|
+
|
|
3
|
+
Helps you to introspect and debug your code.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## Setup
|
|
7
|
+
|
|
8
|
+
Install gem:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
$ gem install debugging
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
In Ruby:
|
|
16
|
+
|
|
17
|
+
```ruby
|
|
18
|
+
require 'debugging/all'
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Instead of requiring all, you can also require only one function, e.g:
|
|
22
|
+
|
|
23
|
+
```ruby
|
|
24
|
+
require 'debugging/q'
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
In a bundler project, you will need to add the gem to your project's `Gemfile`:
|
|
28
|
+
|
|
29
|
+
```ruby
|
|
30
|
+
gem 'debugging', require: 'debugging/all'
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Methods
|
|
34
|
+
### at(label = nil)
|
|
35
|
+
|
|
36
|
+
Prints out that a specific point in a script has been reached.
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
[label] @ method `...', line ... of file ....
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### beep
|
|
43
|
+
|
|
44
|
+
Lets your terminal bell ring.
|
|
45
|
+
|
|
46
|
+
### callstack
|
|
47
|
+
|
|
48
|
+
Prints out your current callstack. For example:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
<main>
|
|
52
|
+
start
|
|
53
|
+
catch
|
|
54
|
+
block in start
|
|
55
|
+
eval_input
|
|
56
|
+
each_top_level_statement
|
|
57
|
+
catch
|
|
58
|
+
block in each_top_level_statement
|
|
59
|
+
loop
|
|
60
|
+
block (2 levels) in each_top_level_statement
|
|
61
|
+
block in eval_input
|
|
62
|
+
signal_status
|
|
63
|
+
block (2 levels) in eval_input
|
|
64
|
+
evaluate
|
|
65
|
+
evaluate
|
|
66
|
+
eval
|
|
67
|
+
irb_binding
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### howtocall(obj = self, method_or_proc)
|
|
71
|
+
|
|
72
|
+
Displays parameter names and types for a proc or method (identified by a symbol):
|
|
73
|
+
|
|
74
|
+
```ruby
|
|
75
|
+
def function(a, b = 3, &c)
|
|
76
|
+
end
|
|
77
|
+
howtocall :function #=> function(a, b, &c)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
What is not visible in the example above: All optional parameters are displayed underlined.
|
|
81
|
+
|
|
82
|
+
If you want to access a function that is defined on an other object than the current one,
|
|
83
|
+
you can pass it as an optional parameter:
|
|
84
|
+
|
|
85
|
+
```ruby
|
|
86
|
+
howtocall FileUtils, :cd #=> cd(dir, options, &block)
|
|
87
|
+
howtocall Open3, :popen3 #=> popen3(*cmd, **opts, &block)
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
An example with lambdas and keyword arguments:
|
|
92
|
+
|
|
93
|
+
```ruby
|
|
94
|
+
a = ->(filter: /\A.*\z/, string:){ string[filter] }
|
|
95
|
+
howtocall a #=> call(string:, filter:)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
### mof(obj, depth = nil)
|
|
100
|
+
|
|
101
|
+
"Methods of": Prints out available methods, ordered by modules:
|
|
102
|
+
|
|
103
|
+
```ruby
|
|
104
|
+
mof [1,2,3]
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
###
|
|
109
|
+
Eigenclass
|
|
110
|
+
|
|
111
|
+
Array
|
|
112
|
+
inspect to_s to_a to_h to_ary frozen? == eql? hash [] []= at fet
|
|
113
|
+
ch first last concat << push pop shift unshift insert each each_i
|
|
114
|
+
ndex reverse_each length size empty? find_index index rindex join r
|
|
115
|
+
everse reverse! rotate rotate! sort sort! sort_by! collect collect!
|
|
116
|
+
map map! select select! keep_if values_at delete delete_at delete_i
|
|
117
|
+
f reject reject! zip transpose replace clear fill include? <=> sli
|
|
118
|
+
ce slice! assoc rassoc + * - & | uniq uniq! compact compact! fl
|
|
119
|
+
atten flatten! count shuffle! shuffle sample cycle permutation combi
|
|
120
|
+
nation repeated_permutation repeated_combination product take take_whil
|
|
121
|
+
e drop drop_while bsearch pack
|
|
122
|
+
|
|
123
|
+
Enumerable
|
|
124
|
+
to_a entries to_h sort sort_by grep count find detect find_index f
|
|
125
|
+
ind_all select reject collect map flat_map collect_concat inject red
|
|
126
|
+
uce partition group_by first all? any? one? none? min max minmax
|
|
127
|
+
min_by max_by minmax_by member? include? each_with_index reverse_each
|
|
128
|
+
each_entry each_slice each_cons each_with_object zip take take_while
|
|
129
|
+
drop drop_while cycle chunk slice_before lazy
|
|
130
|
+
|
|
131
|
+
Object
|
|
132
|
+
|
|
133
|
+
Debugging
|
|
134
|
+
|
|
135
|
+
Kernel
|
|
136
|
+
nil? === =~ !~ eql? hash <=> class singleton_class clone dup tain
|
|
137
|
+
t tainted? untaint untrust untrusted? trust freeze frozen? to_s ins
|
|
138
|
+
pect methods singleton_methods protected_methods private_methods public
|
|
139
|
+
_methods instance_variables instance_variable_get instance_variable_set
|
|
140
|
+
instance_variable_defined? remove_instance_variable instance_of? kind_of?
|
|
141
|
+
is_a? tap send public_send respond_to? extend display method publi
|
|
142
|
+
c_method singleton_method define_singleton_method object_id to_enum enu
|
|
143
|
+
m_for
|
|
144
|
+
|
|
145
|
+
BasicObject
|
|
146
|
+
== equal? ! != instance_eval instance_exec __send__ __id__
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### q(*args)
|
|
150
|
+
|
|
151
|
+
Like `Kernel#p`, but with colors on one line:
|
|
152
|
+
|
|
153
|
+
```ruby
|
|
154
|
+
q :is_like, ?p, "but on one line"
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### re(string, regex, groups = nil)
|
|
158
|
+
|
|
159
|
+
Assists you when matching regexes againts strings. Try this one:
|
|
160
|
+
|
|
161
|
+
```ruby
|
|
162
|
+
re "mail@janlelis.de", /\b([A-Z0-9._%+-]+)@([A-Z0-9.-]+\.[A-Z]{2,10})\b/i, 0..2
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## J-_-L
|
|
166
|
+
|
|
167
|
+
Copyright (c) 2010-2021 Jan Lelis. MIT License. Originated from the
|
|
168
|
+
[zucker](https://github.com/janlelis/sugar_refinery) gem.
|
data/Rakefile
CHANGED
|
@@ -1,36 +1,42 @@
|
|
|
1
|
-
#
|
|
1
|
+
# # #
|
|
2
|
+
# Get gemspec info
|
|
3
|
+
|
|
4
|
+
gemspec_file = Dir['*.gemspec'].first
|
|
5
|
+
gemspec = eval File.read(gemspec_file), binding, gemspec_file
|
|
6
|
+
info = "#{gemspec.name} | #{gemspec.version} | " \
|
|
7
|
+
"#{gemspec.runtime_dependencies.size} dependencies | " \
|
|
8
|
+
"#{gemspec.files.size} files"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# # #
|
|
12
|
+
# Gem build and install task
|
|
13
|
+
|
|
14
|
+
desc info
|
|
15
|
+
task :gem do
|
|
16
|
+
puts info + "\n\n"
|
|
17
|
+
print " "; sh "gem build #{gemspec_file}"
|
|
18
|
+
FileUtils.mkdir_p 'pkg'
|
|
19
|
+
FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", 'pkg'
|
|
20
|
+
puts; sh %{gem install --no-document pkg/#{gemspec.name}-#{gemspec.version}.gem}
|
|
21
|
+
end
|
|
2
22
|
|
|
3
|
-
require 'rubygems'
|
|
4
23
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
rescue LoadError => e
|
|
8
|
-
warn e.message
|
|
9
|
-
warn "Run `gem install bundler` to install Bundler."
|
|
10
|
-
exit -1
|
|
11
|
-
end
|
|
24
|
+
# # #
|
|
25
|
+
# Start an IRB session with the gem loaded
|
|
12
26
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
warn e.message
|
|
17
|
-
warn "Run `bundle install` to install missing gems."
|
|
18
|
-
exit e.status_code
|
|
27
|
+
desc "#{gemspec.name} | IRB"
|
|
28
|
+
task :irb do
|
|
29
|
+
sh "irb -I ./lib -r #{gemspec.name.gsub '-','/'}"
|
|
19
30
|
end
|
|
20
31
|
|
|
21
|
-
require 'rake'
|
|
22
32
|
|
|
23
|
-
|
|
24
|
-
|
|
33
|
+
# # #
|
|
34
|
+
# Spec
|
|
25
35
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
desc "#{gemspec.name} | Spec"
|
|
37
|
+
task :spec do
|
|
38
|
+
sh "rspec"
|
|
29
39
|
end
|
|
30
|
-
task :doc => :rdoc
|
|
31
|
-
|
|
32
|
-
require 'rspec/core/rake_task'
|
|
33
|
-
RSpec::Core::RakeTask.new
|
|
34
40
|
|
|
35
41
|
task :test => :spec
|
|
36
42
|
task :default => :spec
|
data/debugging.gemspec
CHANGED
|
@@ -5,24 +5,23 @@ require File.expand_path('../lib/debugging/version', __FILE__)
|
|
|
5
5
|
Gem::Specification.new do |gem|
|
|
6
6
|
gem.name = "debugging"
|
|
7
7
|
gem.version = Debugging::VERSION
|
|
8
|
-
gem.summary = 'Print debugging helpers
|
|
9
|
-
gem.description = '
|
|
8
|
+
gem.summary = 'Print debugging helpers'
|
|
9
|
+
gem.description = 'Utilities for better "print debugging"'
|
|
10
10
|
gem.license = "MIT"
|
|
11
11
|
gem.authors = ["Jan Lelis"]
|
|
12
|
-
gem.email = "
|
|
12
|
+
gem.email = ["hi@ruby.consulting"]
|
|
13
13
|
gem.homepage = "https://github.com/janlelis/debugging"
|
|
14
14
|
|
|
15
|
-
gem.files = Dir['{**/}{.*,*}'].select { |path| File.file?(path) }
|
|
15
|
+
gem.files = Dir['{**/}{.*,*}'].select { |path| File.file?(path) && path !~ /pkg/ }
|
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
18
18
|
gem.require_paths = ['lib']
|
|
19
|
+
gem.metadata = { "rubygems_mfa_required" => "true" }
|
|
19
20
|
|
|
20
|
-
gem.
|
|
21
|
-
gem.add_dependency 'binding.repl', '~> 3'
|
|
21
|
+
gem.required_ruby_version = '>= 2.0', '< 4.0'
|
|
22
22
|
|
|
23
|
-
gem.
|
|
24
|
-
|
|
25
|
-
gem.add_development_dependency '
|
|
26
|
-
gem.add_development_dependency 'rspec', '~> 2.
|
|
27
|
-
gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
|
|
23
|
+
gem.add_dependency 'paint', '>= 0.9', '< 3.0'
|
|
24
|
+
|
|
25
|
+
gem.add_development_dependency 'rake', '~> 13.0'
|
|
26
|
+
gem.add_development_dependency 'rspec', '~> 2.99'
|
|
28
27
|
end
|
data/lib/debugging/all.rb
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'debugging'
|
|
2
|
+
|
|
3
|
+
module Debugging
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
def howtocall(object = self, method_or_proc)
|
|
7
|
+
if method_or_proc.is_a? Proc
|
|
8
|
+
params = method_or_proc.parameters
|
|
9
|
+
template = "call(%s)"
|
|
10
|
+
else
|
|
11
|
+
unless method_or_proc.is_a?(Method) || method_or_proc.is_a?(UnboundMethod)
|
|
12
|
+
method_or_proc = object.method(method_or_proc)
|
|
13
|
+
end
|
|
14
|
+
params = method_or_proc.parameters
|
|
15
|
+
template = "#{method_or_proc.name}(%s)"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
sig = params.map{ |type, name|
|
|
19
|
+
param = ""
|
|
20
|
+
param << "*" if type == :rest
|
|
21
|
+
param << "**" if type == :keyrest
|
|
22
|
+
param << "&" if type == :block
|
|
23
|
+
name = ?? if !name && !(type == :rest || type == :keyrest)
|
|
24
|
+
if type == :opt || type == :key
|
|
25
|
+
param << Paint[name, :underline]
|
|
26
|
+
else
|
|
27
|
+
param << name.to_s
|
|
28
|
+
end
|
|
29
|
+
param << ":" if type == :key || type == :keyreq
|
|
30
|
+
param
|
|
31
|
+
}*", "
|
|
32
|
+
|
|
33
|
+
puts template %(sig)
|
|
34
|
+
nil
|
|
35
|
+
end
|
|
36
|
+
end
|
data/lib/debugging/mof.rb
CHANGED
|
@@ -3,27 +3,28 @@ require 'debugging'
|
|
|
3
3
|
module Debugging
|
|
4
4
|
private
|
|
5
5
|
|
|
6
|
-
def mof(obj, depth = nil,
|
|
7
|
-
|
|
6
|
+
def mof(obj, depth = nil, grep = //)
|
|
7
|
+
grep = Regexp.new(grep)
|
|
8
8
|
puts Paint["###", :red, :bold]
|
|
9
9
|
|
|
10
|
-
eigen_methods = obj.singleton_methods.grep(grep_for)
|
|
11
|
-
if eigen_methods.empty?
|
|
12
|
-
puts Paint['Eigenclass', :yellow]
|
|
13
|
-
else
|
|
14
|
-
puts Paint['Eigenclass', :green, :underline], eigen_methods.map(&:to_s)*' '
|
|
15
|
-
end
|
|
16
|
-
puts
|
|
17
|
-
|
|
18
10
|
if obj.is_a? Module
|
|
19
|
-
klass, method_function = obj, :
|
|
11
|
+
klass, method_function = obj, :singleton_methods
|
|
12
|
+
depth += 1 if depth
|
|
20
13
|
else
|
|
21
14
|
klass, method_function = obj.class, :public_instance_methods
|
|
15
|
+
|
|
16
|
+
eigen_methods = obj.singleton_methods.grep(grep)
|
|
17
|
+
if eigen_methods.empty?
|
|
18
|
+
puts Paint['Eigenclass', :yellow]
|
|
19
|
+
else
|
|
20
|
+
puts Paint['Eigenclass', :green, :underline], eigen_methods.map(&:to_s)*' '
|
|
21
|
+
end
|
|
22
|
+
puts
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
(depth || klass.ancestors.size).times{ |level|
|
|
25
26
|
if cur = klass.ancestors[level]
|
|
26
|
-
level_methods = cur.send(method_function, false).grep(
|
|
27
|
+
level_methods = cur.send(method_function, false).grep(grep)
|
|
27
28
|
colors = level_methods.empty? ? [:yellow] : [:green, :underline]
|
|
28
29
|
puts Paint["#{cur}", *colors], level_methods.map(&:to_s)*' '
|
|
29
30
|
puts unless level_methods.empty?
|
data/lib/debugging/q.rb
CHANGED
data/lib/debugging/version.rb
CHANGED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'debugging/howtocall'
|
|
3
|
+
|
|
4
|
+
describe "howtocall" do
|
|
5
|
+
it "displays method parameters" do
|
|
6
|
+
def function(a, b)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
expect( capture_stdout{ howtocall :function } ).to eq "function(a, b)\n"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "underlines optional parameters" do
|
|
13
|
+
def function(a, b = 3)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
expect( capture_stdout{ howtocall :function } ).to eq "function(a, \e[4mb\e[0m)\n"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "shows block parameters" do
|
|
20
|
+
def function(a, &b)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
expect( capture_stdout{ howtocall :function } ).to eq "function(a, &b)\n"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "optionally takes an object where the method shoud be looked for (if not self)" do
|
|
27
|
+
module Klass
|
|
28
|
+
def self.function(a,b)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
expect( capture_stdout{ howtocall Klass, :function } ).to eq "function(a, b)\n"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "appends : for keyword arguments" do
|
|
36
|
+
def function(a: 42, b: 43)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
expect( capture_stdout{ howtocall :function } ).to eq "function(\e[4ma\e[0m:, \e[4mb\e[0m:)\n"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "shows *splats and keyword **splats" do
|
|
43
|
+
def function(*cmd, **opts)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
expect( capture_stdout{ howtocall :function } ).to eq "function(*cmd, **opts)\n"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "shows ? for array deconstructor parameters" do
|
|
50
|
+
def function((a, b))
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
expect( capture_stdout{ howtocall :function } ).to eq "function(?)\n"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "also works for procs" do
|
|
57
|
+
lambda = ->(a, b){}
|
|
58
|
+
|
|
59
|
+
expect( capture_stdout{ howtocall lambda } ).to eq "call(a, b)\n"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
if RUBY_ENGINE == "ruby" || RUBY_ENGINE == "jruby"
|
|
63
|
+
context "[native methods]" do
|
|
64
|
+
it "shows ? instead of parameter names for fixed amount of parameters" do
|
|
65
|
+
expect( capture_stdout{ howtocall :is_a? } ).to eq "is_a?(?)\n"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "shows * instead of parameters for variable amount of parameters" do
|
|
69
|
+
expect( capture_stdout{ howtocall :puts } ).to eq "puts(*)\n"
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
data/spec/q_spec.rb
CHANGED
|
@@ -2,18 +2,20 @@ require 'spec_helper'
|
|
|
2
2
|
require 'debugging/q'
|
|
3
3
|
|
|
4
4
|
describe 'q' do
|
|
5
|
-
it
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
it "should output the same as p for a single arg" do
|
|
6
|
+
expect(
|
|
7
|
+
Paint.unpaint(capture_stdout{q /some object/})
|
|
8
|
+
).to eq capture_stdout{p /some object/}
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
it "should output the same as p but for multiple args one one line, values separated by two spaces" do
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
expect(
|
|
13
|
+
Paint.unpaint(capture_stdout{
|
|
14
|
+
q 1, "1", 2..5, [], {:hallo => :du}, nil, true
|
|
15
|
+
}
|
|
16
|
+
).chop ).to eq capture_stdout{
|
|
15
17
|
p 1, "1", 2..5, [], {:hallo => :du}, nil, true
|
|
16
|
-
|
|
18
|
+
}.chop.gsub( "\n", ' ' )
|
|
17
19
|
end
|
|
18
20
|
end
|
|
19
21
|
|
metadata
CHANGED
|
@@ -1,121 +1,66 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: debugging
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jan Lelis
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-12-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: paint
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
- - ">="
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version: 0.8.7
|
|
23
|
-
type: :runtime
|
|
24
|
-
prerelease: false
|
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
-
requirements:
|
|
27
|
-
- - "~>"
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: '0'
|
|
30
17
|
- - ">="
|
|
31
18
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: 0.
|
|
33
|
-
-
|
|
34
|
-
name: binding.repl
|
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - "~>"
|
|
19
|
+
version: '0.9'
|
|
20
|
+
- - "<"
|
|
38
21
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '3'
|
|
22
|
+
version: '3.0'
|
|
40
23
|
type: :runtime
|
|
41
24
|
prerelease: false
|
|
42
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
26
|
requirements:
|
|
44
|
-
- - "
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '3'
|
|
47
|
-
- !ruby/object:Gem::Dependency
|
|
48
|
-
name: bundler
|
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
27
|
+
- - ">="
|
|
52
28
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
54
|
-
|
|
55
|
-
prerelease: false
|
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
requirements:
|
|
58
|
-
- - "~>"
|
|
29
|
+
version: '0.9'
|
|
30
|
+
- - "<"
|
|
59
31
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '
|
|
32
|
+
version: '3.0'
|
|
61
33
|
- !ruby/object:Gem::Dependency
|
|
62
34
|
name: rake
|
|
63
35
|
requirement: !ruby/object:Gem::Requirement
|
|
64
36
|
requirements:
|
|
65
37
|
- - "~>"
|
|
66
38
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: '
|
|
68
|
-
type: :development
|
|
69
|
-
prerelease: false
|
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - "~>"
|
|
73
|
-
- !ruby/object:Gem::Version
|
|
74
|
-
version: '10.1'
|
|
75
|
-
- !ruby/object:Gem::Dependency
|
|
76
|
-
name: rdoc
|
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
|
78
|
-
requirements:
|
|
79
|
-
- - "~>"
|
|
80
|
-
- !ruby/object:Gem::Version
|
|
81
|
-
version: '3.0'
|
|
39
|
+
version: '13.0'
|
|
82
40
|
type: :development
|
|
83
41
|
prerelease: false
|
|
84
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
85
43
|
requirements:
|
|
86
44
|
- - "~>"
|
|
87
45
|
- !ruby/object:Gem::Version
|
|
88
|
-
version: '
|
|
46
|
+
version: '13.0'
|
|
89
47
|
- !ruby/object:Gem::Dependency
|
|
90
48
|
name: rspec
|
|
91
49
|
requirement: !ruby/object:Gem::Requirement
|
|
92
50
|
requirements:
|
|
93
51
|
- - "~>"
|
|
94
52
|
- !ruby/object:Gem::Version
|
|
95
|
-
version: '2.
|
|
53
|
+
version: '2.99'
|
|
96
54
|
type: :development
|
|
97
55
|
prerelease: false
|
|
98
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
99
57
|
requirements:
|
|
100
58
|
- - "~>"
|
|
101
59
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: '2.
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
requirements:
|
|
107
|
-
- - "~>"
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0.2'
|
|
110
|
-
type: :development
|
|
111
|
-
prerelease: false
|
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - "~>"
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0.2'
|
|
117
|
-
description: Provides useful print debugging helpers.
|
|
118
|
-
email: mail@janlelis.de
|
|
60
|
+
version: '2.99'
|
|
61
|
+
description: Utilities for better "print debugging"
|
|
62
|
+
email:
|
|
63
|
+
- hi@ruby.consulting
|
|
119
64
|
executables: []
|
|
120
65
|
extensions: []
|
|
121
66
|
extra_rdoc_files: []
|
|
@@ -123,12 +68,12 @@ files:
|
|
|
123
68
|
- ".editorconfig"
|
|
124
69
|
- ".gitignore"
|
|
125
70
|
- ".rspec"
|
|
126
|
-
-
|
|
127
|
-
- ChangeLog.
|
|
71
|
+
- CODE_OF_CONDUCT.md
|
|
72
|
+
- ChangeLog.md
|
|
128
73
|
- Gemfile
|
|
129
74
|
- Gemfile.lock
|
|
130
|
-
- LICENSE.txt
|
|
131
|
-
- README.
|
|
75
|
+
- MIT-LICENSE.txt
|
|
76
|
+
- README.md
|
|
132
77
|
- Rakefile
|
|
133
78
|
- debugging.gemspec
|
|
134
79
|
- lib/debugging.rb
|
|
@@ -136,20 +81,20 @@ files:
|
|
|
136
81
|
- lib/debugging/at.rb
|
|
137
82
|
- lib/debugging/beep.rb
|
|
138
83
|
- lib/debugging/callstack.rb
|
|
84
|
+
- lib/debugging/howtocall.rb
|
|
139
85
|
- lib/debugging/mof.rb
|
|
140
86
|
- lib/debugging/q.rb
|
|
141
87
|
- lib/debugging/re.rb
|
|
142
|
-
- lib/debugging/repl.rb
|
|
143
88
|
- lib/debugging/version.rb
|
|
144
|
-
-
|
|
145
|
-
- pkg/debugging-1.0.1.gem
|
|
89
|
+
- spec/howtocall_spec.rb
|
|
146
90
|
- spec/q_spec.rb
|
|
147
91
|
- spec/re_spec.rb
|
|
148
92
|
- spec/spec_helper.rb
|
|
149
93
|
homepage: https://github.com/janlelis/debugging
|
|
150
94
|
licenses:
|
|
151
95
|
- MIT
|
|
152
|
-
metadata:
|
|
96
|
+
metadata:
|
|
97
|
+
rubygems_mfa_required: 'true'
|
|
153
98
|
post_install_message:
|
|
154
99
|
rdoc_options: []
|
|
155
100
|
require_paths:
|
|
@@ -158,19 +103,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
158
103
|
requirements:
|
|
159
104
|
- - ">="
|
|
160
105
|
- !ruby/object:Gem::Version
|
|
161
|
-
version: '0'
|
|
106
|
+
version: '2.0'
|
|
107
|
+
- - "<"
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '4.0'
|
|
162
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
111
|
requirements:
|
|
164
112
|
- - ">="
|
|
165
113
|
- !ruby/object:Gem::Version
|
|
166
114
|
version: '0'
|
|
167
115
|
requirements: []
|
|
168
|
-
|
|
169
|
-
rubygems_version: 2.4.5
|
|
116
|
+
rubygems_version: 3.3.3
|
|
170
117
|
signing_key:
|
|
171
118
|
specification_version: 4
|
|
172
|
-
summary: Print debugging helpers
|
|
119
|
+
summary: Print debugging helpers
|
|
173
120
|
test_files:
|
|
121
|
+
- spec/howtocall_spec.rb
|
|
174
122
|
- spec/q_spec.rb
|
|
175
123
|
- spec/re_spec.rb
|
|
176
124
|
- spec/spec_helper.rb
|
data/.travis.yml
DELETED
data/ChangeLog.rdoc
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
=== 1.0.2 / 2015-01-24
|
|
2
|
-
|
|
3
|
-
* Bump binding.repl version
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
=== 1.0.1 / 2014-02-15
|
|
7
|
-
|
|
8
|
-
* Bump binding.repl version
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
=== 1.0.0 / 2014-01-19
|
|
12
|
-
|
|
13
|
-
* Adjusted concept: Only helper method style
|
|
14
|
-
* Removed:
|
|
15
|
-
* dd
|
|
16
|
-
* binding.vars
|
|
17
|
-
* Added:
|
|
18
|
-
* beep
|
|
19
|
-
* repl
|
|
20
|
-
* Renamed:
|
|
21
|
-
* oo -> at
|
|
22
|
-
* cc -> callstack
|
|
23
|
-
* mm -> mof
|
|
24
|
-
* regexp_visualize -> re
|
|
25
|
-
* Method List: Display all available ancestors by default and add third argument for grepping
|
|
26
|
-
* Moved from zucker 13.1 gem into its own gem
|
|
27
|
-
|
data/README.rdoc
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
= Ruby Print Debugging {<img src="https://travis-ci.org/janlelis/debugging.png" />}[https://travis-ci.org/janlelis/debugging]
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
== Setup
|
|
5
|
-
|
|
6
|
-
$ gem install debugging binding_of_caller
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Or in your Gemfile:
|
|
10
|
-
|
|
11
|
-
gem 'debugging', require: 'debugging/all'
|
|
12
|
-
gem 'binding_of_caller'
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
In Ruby:
|
|
16
|
-
|
|
17
|
-
require 'debugging/all'
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
== Methods
|
|
21
|
-
|
|
22
|
-
=== at(label = nil)
|
|
23
|
-
|
|
24
|
-
[label] @ method `...', line ... of file ....
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
=== beep
|
|
28
|
-
|
|
29
|
-
Lets your terminal bell ring.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
=== callstack
|
|
33
|
-
|
|
34
|
-
<main>
|
|
35
|
-
start
|
|
36
|
-
catch
|
|
37
|
-
block in start
|
|
38
|
-
eval_input
|
|
39
|
-
each_top_level_statement
|
|
40
|
-
catch
|
|
41
|
-
block in each_top_level_statement
|
|
42
|
-
loop
|
|
43
|
-
block (2 levels) in each_top_level_statement
|
|
44
|
-
block in eval_input
|
|
45
|
-
signal_status
|
|
46
|
-
block (2 levels) in eval_input
|
|
47
|
-
evaluate
|
|
48
|
-
evaluate
|
|
49
|
-
eval
|
|
50
|
-
irb_binding
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
=== mof(obj, depth = nil)
|
|
54
|
-
|
|
55
|
-
"methods of:"
|
|
56
|
-
|
|
57
|
-
>> mof [1,2,3]
|
|
58
|
-
###
|
|
59
|
-
Eigenclass
|
|
60
|
-
|
|
61
|
-
Array
|
|
62
|
-
inspect to_s to_a to_h to_ary frozen? == eql? hash [] []= at fet
|
|
63
|
-
ch first last concat << push pop shift unshift insert each each_i
|
|
64
|
-
ndex reverse_each length size empty? find_index index rindex join r
|
|
65
|
-
everse reverse! rotate rotate! sort sort! sort_by! collect collect!
|
|
66
|
-
map map! select select! keep_if values_at delete delete_at delete_i
|
|
67
|
-
f reject reject! zip transpose replace clear fill include? <=> sli
|
|
68
|
-
ce slice! assoc rassoc + * - & | uniq uniq! compact compact! fl
|
|
69
|
-
atten flatten! count shuffle! shuffle sample cycle permutation combi
|
|
70
|
-
nation repeated_permutation repeated_combination product take take_whil
|
|
71
|
-
e drop drop_while bsearch pack
|
|
72
|
-
|
|
73
|
-
Enumerable
|
|
74
|
-
to_a entries to_h sort sort_by grep count find detect find_index f
|
|
75
|
-
ind_all select reject collect map flat_map collect_concat inject red
|
|
76
|
-
uce partition group_by first all? any? one? none? min max minmax
|
|
77
|
-
min_by max_by minmax_by member? include? each_with_index reverse_each
|
|
78
|
-
each_entry each_slice each_cons each_with_object zip take take_while
|
|
79
|
-
drop drop_while cycle chunk slice_before lazy
|
|
80
|
-
|
|
81
|
-
Object
|
|
82
|
-
|
|
83
|
-
Debugging
|
|
84
|
-
|
|
85
|
-
Kernel
|
|
86
|
-
nil? === =~ !~ eql? hash <=> class singleton_class clone dup tain
|
|
87
|
-
t tainted? untaint untrust untrusted? trust freeze frozen? to_s ins
|
|
88
|
-
pect methods singleton_methods protected_methods private_methods public
|
|
89
|
-
_methods instance_variables instance_variable_get instance_variable_set
|
|
90
|
-
instance_variable_defined? remove_instance_variable instance_of? kind_of?
|
|
91
|
-
is_a? tap send public_send respond_to? extend display method publi
|
|
92
|
-
c_method singleton_method define_singleton_method object_id to_enum enu
|
|
93
|
-
m_for
|
|
94
|
-
|
|
95
|
-
BasicObject
|
|
96
|
-
== equal? ! != instance_eval instance_exec __send__ __id__
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
=== q(*args)
|
|
100
|
-
|
|
101
|
-
q :is_like, ?p, "but on one line"
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
=== re(string, regex, groups = nil)
|
|
105
|
-
|
|
106
|
-
Assists you when matching regexes againts strings. Try this one:
|
|
107
|
-
|
|
108
|
-
re "mail@janlelis.de", /\b([A-Z0-9._%+-]+)@([A-Z0-9.-]+\.[A-Z]{2,10})\b/i, 0..2
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
=== repl
|
|
112
|
-
|
|
113
|
-
Starts your favorite IRB session.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
== Also See
|
|
117
|
-
|
|
118
|
-
https://github.com/davejacobs/letters
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
== J-_-L
|
|
122
|
-
|
|
123
|
-
Copyright (c) 2010-2015 Jan Lelis. MIT License. Originated from the {zucker}[http://rubyzucker.info] gem.
|
data/lib/debugging/repl.rb
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
require 'debugging'
|
|
2
|
-
require 'binding.repl'
|
|
3
|
-
|
|
4
|
-
begin
|
|
5
|
-
require 'binding_of_caller'
|
|
6
|
-
rescue LoadError
|
|
7
|
-
warn 'Using Debugging#repl requires the "binding_of_caller" gem. Please install it or add it to your Gemfile!'
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
module Debugging
|
|
11
|
-
private
|
|
12
|
-
|
|
13
|
-
def repl
|
|
14
|
-
binding.of_caller(1).repl.auto
|
|
15
|
-
end
|
|
16
|
-
end
|
data/pkg/debugging-1.0.0.gem
DELETED
|
Binary file
|
data/pkg/debugging-1.0.1.gem
DELETED
|
Binary file
|