irbtools 3.0.5 → 4.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 97638932440324b1ac2515e752f8246e725a9424b20e2ccdb7e3bf9c19c4d73f
4
- data.tar.gz: 92466a6931a28d47fc933be842347daf9cd5caea37a5929fd125e7031b855b0a
3
+ metadata.gz: 4c962628e77711b94b8b2c4f1c9324d5b35c1f0b92419519fd6caa0509214219
4
+ data.tar.gz: d58171b0e82e5aba322a790c8ed9d51f96ce0606ddbfca60f44391719cfc07b3
5
5
  SHA512:
6
- metadata.gz: a7632dbde24787c8fca33e883b549c8519f9bb4fe18035b788cfd412adfb7a9f255b3b814d24bb71a60f067cb6aabd26c3ab71f2eb5a18c9e2639cdf90715dee
7
- data.tar.gz: cd8474954adc2b449e4bdb99b1631cec1036027158d8b87ad2a2addee4eabc4f984e4135cbd3ebab67ddbf332f3daa2d75bb6a216423202d06d0eb09f385a082
6
+ metadata.gz: bd488a948771e30dcab7dfc91c2e29fe223ac92976f4111c8e9154517107a92859b3d8f9da6713ec4c8439f453ec928031265053fbe761e37e749666a3b355fc
7
+ data.tar.gz: c5ee0a94b72e07441b774ba8fa795b61be1a116252736d7ec605ff3d9a6ea9b3092cc1839fa4eb340085bb0d09f2cc26f8ce4653355600fd130946da3108e646
data/.editorconfig ADDED
@@ -0,0 +1,11 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 2
6
+ end_of_line = lf
7
+ insert_final_newline = true
8
+ trim_trailing_whitespace = true
9
+
10
+ [*.{md,rdoc,txt}]
11
+ indent_size = 4
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ Gemfile.lock
2
+ /pkg
data/CHANGELOG-MORE.md ADDED
@@ -0,0 +1,78 @@
1
+ # Irbtools (More) Changelog
2
+
3
+ ## 3.0 (final)
4
+
5
+ Retire irbtools-more:
6
+
7
+ * Move looksee to core irbtools
8
+ * Move core_docs to core irbtools
9
+ * Remove bond (outdated)
10
+ * Leave binding_of_caller optional
11
+
12
+ ## 2.5.0
13
+ * Bump binding_of_caller & core_docs for Ruby 3.0
14
+
15
+ ## 2.4.1
16
+ * Loosen Ruby dependency to allow Ruby 3.0
17
+
18
+ ## 2.4.0
19
+ * Bump looksee & core_docs for Ruby 2.7
20
+
21
+ ## 2.3.1
22
+ * Loosen irbrtools-more dependency to irbtools (allow 3.x)
23
+
24
+ ## 2.3.0
25
+ * Remove dependency to did_you_mean, since it is now a default gem anyways
26
+ * Version bump: irbtools, looksee, core_docs, and binding_of_caller
27
+
28
+ ## 2.2.1
29
+ * Add core_docs dependency
30
+
31
+ ## 2.2.0
32
+ * Re-enable looksee (not comptible with Ruby 2.3, but does not crash anymore during install)
33
+
34
+ ## 2.1.0
35
+ * Ruby 2.3 compat: Upgrade did_you_mean to ~> 1.0
36
+ * Ruby 2.3 compat: Disable looksee gem as long it is not adapted for 2.3
37
+
38
+ ## 2.0.0
39
+ * Integrate more-repo into irbtools main repo
40
+ * Improve auto-completion
41
+ * Remove Object#l alias for looksee, use Object#lp
42
+
43
+ ## 1.7.2
44
+ * Bump did_you_mean and looksee (Ruby 2.2 compat)
45
+
46
+ ## 1.7.1
47
+ * Bump did_you_mean version
48
+
49
+ ## 1.7.0
50
+ * Bump looksee
51
+ * Ruby 1.9.3 required
52
+ * Add did_you_mean gem
53
+
54
+ ## 1.6.1
55
+ * Add binding_of_caller
56
+ * Alias looksee to Object#lp instead of Object#ls
57
+
58
+ ## 1.6.0
59
+ * (nothing)
60
+
61
+ ## 1.5.2
62
+ * Ruby 2.1 Compatibility / Update looksee gem
63
+ * Be less restrictive in gem dependencies
64
+
65
+ ## 1.5.1
66
+ * (nothing)
67
+
68
+ ## 1.5.0
69
+ * Ruby 2.0 Compatibility
70
+ * Drop 1.8 Support
71
+ * Drop DrX gem
72
+
73
+ ## 1.2.0
74
+ * add looksee
75
+
76
+ ## 0.3.2
77
+ * load in threads (irbtools 1.0)
78
+ * remove jeweler
data/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Irbtools Changelog
2
2
 
3
+ ## 4.0.1
4
+
5
+ * Bump ruby_engine gem
6
+
7
+ ## 4.0.0
8
+
9
+ * Requires IRB 1.6 (Ruby 3.2 bundles IRB 1.6.2)
10
+ * Requires Ruby 3.0
11
+
12
+ * Remove a bunch of gems:
13
+ * Drop binding.repl gem since it was only needed for older Rubies
14
+ * Drop ori gem, since IRB now has `show_doc`
15
+ * Drop RubyInfo
16
+
17
+ * Retire irbtools-more:
18
+ * Move looksee to core irbtools
19
+ * Move core_docs to core irbtools
20
+ * Remove bond (outdated)
21
+ * Leave binding_of_caller optional
22
+
23
+ * Add command wrappers for code, howtocall, looksee, shadow
24
+ * Add `$` command to directly call system
25
+
26
+ * Version bumps: looksee, os, methodfinder, code, core_docs, debugging
27
+ * Alias IRB's ls to ils (fixes #53)
28
+ * Remove support for RIPL repl (outdated)
29
+
3
30
  ## 3.0.5
4
31
  * Bump methodfinder dependency & update usage (fixes #52)
5
32
 
@@ -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 opensource@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/CONFIGURE.md CHANGED
@@ -43,8 +43,7 @@ The following options are possible
43
43
  : Same as `:thread`, but after loading late libraries.
44
44
  `:sub_session => true`
45
45
  : The library is loaded every time a sub-session starts (using
46
- `IRB.conf[:IRB_RC]`). In [ripl](https://github.com/cldwalker/ripl),
47
- `ripl-after_rc` is used.
46
+ `IRB.conf[:IRB_RC]`).
48
47
  `:autoload => :Constant`
49
48
  : Use Ruby's `autoload` feature. It loads the library as soon as the
50
49
  constant is encountered.
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec name: "irbtools"
4
+
5
+ gem "rspec"
6
+ gem "rake"
7
+ gem "irb"
data/Gemfile.lock ADDED
@@ -0,0 +1,93 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ irbtools (4.0.0)
5
+ clipboard (~> 1.3)
6
+ code (>= 0.9.4, < 2.0)
7
+ coderay (~> 1.1)
8
+ core_docs (~> 0.9.9)
9
+ debugging (~> 2.1)
10
+ every_day_irb (~> 2.2)
11
+ fancy_irb (~> 1.2, >= 1.2.1)
12
+ hirb (~> 0.7, >= 0.7.3)
13
+ interactive_editor (~> 0.0, >= 0.0.10)
14
+ irb (~> 1.6.2)
15
+ looksee (~> 5.0)
16
+ methodfinder (~> 2.2, >= 2.2.5)
17
+ object_shadow (~> 1.1)
18
+ os (~> 1.1, >= 1.1.4)
19
+ paint (>= 0.9, < 3.0)
20
+ ruby_engine (~> 1.0)
21
+ ruby_version (~> 1.0)
22
+ wirb (~> 2.0, >= 2.2.1)
23
+
24
+ GEM
25
+ remote: https://rubygems.org/
26
+ specs:
27
+ cd (1.0.1)
28
+ clipboard (1.3.6)
29
+ code (0.9.4)
30
+ coderay (~> 1.1)
31
+ method_source (>= 0.9, < 2.0)
32
+ coderay (1.1.3)
33
+ core_docs (0.9.9)
34
+ yard (~> 0.9.11)
35
+ debugging (2.1.0)
36
+ paint (>= 0.9, < 3.0)
37
+ diff-lcs (1.5.0)
38
+ every_day_irb (2.2.0)
39
+ cd (~> 1.0)
40
+ fancy_irb (1.4.3)
41
+ paint (>= 0.9, < 3.0)
42
+ unicode-display_width (>= 1.1)
43
+ ffi (1.15.5)
44
+ hirb (0.7.3)
45
+ interactive_editor (0.0.11)
46
+ spoon (>= 0.0.1)
47
+ io-console (0.6.0)
48
+ irb (1.6.2)
49
+ reline (>= 0.3.0)
50
+ looksee (5.0.0)
51
+ method_source (1.0.0)
52
+ methodfinder (2.2.5)
53
+ object_shadow (1.1.1)
54
+ os (1.1.4)
55
+ paint (2.3.0)
56
+ rake (13.0.6)
57
+ reline (0.3.2)
58
+ io-console (~> 0.5)
59
+ rspec (3.12.0)
60
+ rspec-core (~> 3.12.0)
61
+ rspec-expectations (~> 3.12.0)
62
+ rspec-mocks (~> 3.12.0)
63
+ rspec-core (3.12.0)
64
+ rspec-support (~> 3.12.0)
65
+ rspec-expectations (3.12.1)
66
+ diff-lcs (>= 1.2.0, < 2.0)
67
+ rspec-support (~> 3.12.0)
68
+ rspec-mocks (3.12.1)
69
+ diff-lcs (>= 1.2.0, < 2.0)
70
+ rspec-support (~> 3.12.0)
71
+ rspec-support (3.12.0)
72
+ ruby_engine (1.0.1)
73
+ ruby_version (1.0.2)
74
+ spoon (0.0.6)
75
+ ffi
76
+ unicode-display_width (2.3.0)
77
+ webrick (1.7.0)
78
+ wirb (2.2.2)
79
+ paint (>= 0.9, < 3.0)
80
+ yard (0.9.28)
81
+ webrick (~> 1.7.0)
82
+
83
+ PLATFORMS
84
+ ruby
85
+
86
+ DEPENDENCIES
87
+ irb
88
+ irbtools!
89
+ rake
90
+ rspec
91
+
92
+ BUNDLED WITH
93
+ 2.4.1
data/MIT-LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010-2021 Jan Lelis
1
+ Copyright (c) 2010-2022 Jan Lelis
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,19 +1,156 @@
1
1
  # Irbtools [![[version]](https://badge.fury.io/rb/irbtools.svg)](https://badge.fury.io/rb/irbtools) [![[ci]](https://github.com/janlelis/irbtools/workflows/Test/badge.svg)](https://github.com/janlelis/irbtools/actions?query=workflow%3ATest)
2
2
 
3
+ ## Irbtools 4.0 for IRB 1.6+
4
+
5
+ The current version of Irbtools requires [IRB 1.6+](https://github.com/ruby/irb) (which is the default for Ruby
6
+ from 3.2 on). Please use Irbtools 3 for earlier versions of IRB.
7
+
8
+ ## Description
9
+
10
+ Improves Ruby's IRB with:
11
+
12
+ - a default configuration
13
+ - improved syntax highlighting of result objects
14
+ - helpful commands for debugging and introspection
15
+
16
+ ## Examples
17
+
18
+ ### Show lookup chain and method list grouped by visibility
19
+
20
+ ```ruby
21
+ >> shadow [1,2,3].reverse
22
+ => # ObjectShadow of Object #85280
23
+
24
+ ## Lookup Chain
25
+
26
+ [#<Class:#<Array:0x00007fccd9cfac30>>, Array, Enumerable, Object, "…"]
27
+
28
+ ## 141 Public Methods (Non-Class/Object)
29
+
30
+ [:&, :*, :+, :-, :<<, :<=>, :==, :[], :[]=, :all?, :any?, :append, :assoc, :at, :bsearch, :bsearch_index, :chain,
31
+ :chunk, :chunk_while, :clear, :collect, :collect!, :collect_concat, :combination, :compact, :compact!, :concat,
32
+ :count, :cycle, :deconstruct, :delete, :delete_at, :delete_if, :detect, :difference, :dig, :drop, :drop_while,
33
+ :each, :each_cons, :each_entry, :each_index, :each_slice, :each_with_index, :each_with_object, :empty?, :entries,
34
+ :eql?, :fetch, :fill, :filter, :filter!, :filter_map, :find, :find_all, :find_index, :first, :flat_map, :flatten,
35
+ :flatten!, :grep, :grep_v, :group_by, :hash, :include?, :index, :inject, :insert, :inspect, :intersect?,
36
+ :intersection, :join, :keep_if, :last, :lazy, :length, :map, :map!, :max, :max_by, :member?, :min, :min_by,
37
+ :minmax, :minmax_by, :none?, :one?, :pack, :partition, :permutation, :pop, :prepend, :product, :push, :rassoc,
38
+ :reduce, :reject, :reject!, :repeated_combination, :repeated_permutation, :replace, :reverse, :reverse!,
39
+ :reverse_each, :rindex, :rotate, :rotate!, :sample, :select, :select!, :shelljoin, :shift, :shuffle, :shuffle!,
40
+ :size, :slice, :slice!, :slice_after, :slice_before, :slice_when, :sort, :sort!, :sort_by, :sort_by!, :sum,
41
+ :take, :take_while, :tally, :to_a, :to_ary, :to_h, :to_s, :to_set, :transpose, :union, :uniq, :uniq!, :unshift,
42
+ :values_at, :zip, :|]
43
+
44
+ ## 2 Private Methods (Non-Class/Object)
45
+
46
+ [:initialize, :initialize_copy]
47
+
48
+ ## Object Inspect
49
+
50
+ [3, 2, 1]
51
+ ```
52
+
53
+ ### Show a method list grouped by ancestors
54
+
55
+ ```ruby
56
+ >> look "str"
57
+ .
58
+ .
59
+ .
60
+ Comparable
61
+ < <= == > >= between? clamp
62
+ String
63
+ % crypt inspect squeeze!
64
+ * dedup intern start_with?
65
+ + delete length strip
66
+ +@ delete! lines strip!
67
+ -@ delete_prefix ljust sub
68
+ << delete_prefix! lstrip sub!
69
+ <=> delete_suffix lstrip! succ
70
+ .
71
+ .
72
+ .
73
+ ```
74
+
75
+ ### Show source code of a Ruby-based method
76
+
77
+ ```ruby
78
+ >> code SecureRandom.uuid
79
+ #
80
+ # /home/dan/.rvm/rubies/ruby-3.2.0/lib/ruby/3.2.0/random/formatter.rb:170
81
+ #
82
+ # Generate a random v4 UUID (Universally Unique IDentifier).
83
+ #
84
+ # require 'random/formatter'
85
+ #
86
+ # Random.uuid #=> "2d931510-d99f-494a-8c67-87feb05e1594"
87
+ # Random.uuid #=> "bad85eb9-0713-4da7-8d36-07a8e4b00eab"
88
+ # # or
89
+ # prng = Random.new
90
+ # prng.uuid #=> "62936e70-1815-439b-bf89-8492855a7e6b"
91
+ #
92
+ # The version 4 UUID is purely random (except the version).
93
+ # It doesn't contain meaningful information such as MAC addresses, timestamps, etc.
94
+ #
95
+ # The result contains 122 random bits (15.25 random bytes).
96
+ #
97
+ # See RFC4122[https://datatracker.ietf.org/doc/html/rfc4122] for details of UUID.
98
+ #
99
+ def uuid
100
+ ary = random_bytes(16).unpack("NnnnnN")
101
+ ary[2] = (ary[2] & 0x0fff) | 0x4000
102
+ ary[3] = (ary[3] & 0x3fff) | 0x8000
103
+ "%08x-%04x-%04x-%04x-%04x%08x" % ary
104
+ end
105
+ ```
106
+
107
+ ### Show source code of a natively implemented method
108
+
109
+ ```ruby
110
+ >> code Array#reverse
111
+ //
112
+ // https://github.com/ruby/ruby/blob/ruby_3_2/array.c#L3282
113
+ //
114
+ // Returns a new \Array with the elements of +self+ in reverse order:
115
+ //
116
+ // a = ['foo', 'bar', 'two']
117
+ // a1 = a.reverse
118
+ // a1 # => ["two", "bar", "foo"]
119
+ static VALUE
120
+ rb_ary_reverse_m(VALUE ary)
121
+ {
122
+ long len = RARRAY_LEN(ary);
123
+ VALUE dup = rb_ary_new2(len);
124
+
125
+ if (len > 0) {
126
+ const VALUE *p1 = RARRAY_CONST_PTR_TRANSIENT(ary);
127
+ VALUE *p2 = (VALUE *)RARRAY_CONST_PTR_TRANSIENT(dup) + len - 1;
128
+ do *p2-- = *p1++; while (--len > 0);
129
+ }
130
+ ARY_SET_LEN(dup, RARRAY_LEN(ary));
131
+ return dup;
132
+ }
133
+ ```
134
+
135
+ ### Find out method signatures (most useful for Ruby-based methods with keyword args)
136
+
3
137
  ```ruby
4
- _| _|
5
- _|_|_| _|_|_| _|_|_| _| _| _| _|_|_| _|
6
- _| _| _| _| _| _|_|_|_| _|_| _|_| _| _|_|_| _| _| _|
7
- _| _|_|_| _|_|_| _| _| _| _| _| _| _|_| _| _|_| _|
8
- _| _| _| _| _| _| _| _| _| _| _| _|_| _| _| _|
9
- _|_|_| _| _| _|_|_| _| _|_| _|_| _|_| _| _|_|_| _| _|_|_| _|
10
- _| _|
138
+ >> howtocall require
139
+ require(path)
11
140
  ```
12
141
 
13
- Improvements for Ruby's IRB console, like syntax highlighted output and a lot of
14
- debugging and introspection methods. Unlike with PRY, you are still in your
15
- normal IRB. It is designed to work out-of-the-box, so there is no reason to not
16
- use it!
142
+ ```ruby
143
+ >> require "rubygems/user_interaction"
144
+ >> ui = Gem::ConsoleUI.new
145
+ >> howtocall ui.choose_from_list
146
+ choose_from_list(question, list)
147
+ ```
148
+
149
+ ### Call system commands with `$`
150
+
151
+ ```ruby
152
+ >> $ git status # displays current git status
153
+ ```
17
154
 
18
155
  ## Setup
19
156
 
@@ -28,55 +165,66 @@ You also need to add irbtools to your project's `Gemfile`:
28
165
 
29
166
  gem 'irbtools', require: 'irbtools/binding'
30
167
 
31
- Then start IRB (with **Irbtools** loaded) from the terminal or directly from your code with:
168
+ Then start IRB (with **Irbtools** loaded) from the terminal or directly from
169
+ your code with:
32
170
 
33
171
  binding.irb
34
172
 
35
- ### Enable More Gems
36
-
37
- Some suggested gems will not be installed to ensure wider general support. For
38
- the full feature set, you can install **irbtools-more**. To do so, change your
39
- `.irbrc` to:
40
-
41
- require 'irbtools/more'
173
+ *Optional:* If the **binding_of_caller** gem is available, you can just call the `irb`
174
+ method and it will start a session with the current binding:
42
175
 
43
- and edit your `Gemfile` to read like this:
44
-
45
- gem 'irbtools-more', require: 'irbtools/binding'
176
+ irb
46
177
 
47
178
  ## Features
48
179
 
49
- ### Irbtools' IRB Improvements
180
+ ### General IRB Improvements
50
181
 
51
182
  - Syntax highlighting ([wirb](https://github.com/janlelis/wirb/) / [fancy_irb](https://github.com/janlelis/fancy_irb))
52
- - Loads included third party libraries effeciently
53
- - Customizable views for specfic options using [hirb](https://tagaholic.me/2009/03/13/hirb-irb-on-the-good-stuff.html)
54
- - ActiveRecord results get displayed as a table
55
- - **(irbtools-more)** [Improved tab-completion](https://tagaholic.me/bond/)
183
+ - Loads included libraries efficiently to reduce IRB start-up time
184
+ - Customizable views for specfic options using [hirb](https://tagaholic.me/2009/03/13/hirb-irb-on-the-good-stuff.html). By default, ActiveRecord results get displayed as a table.
56
185
 
57
- ### Irbtools' Included Methods for IRB
186
+ ### Included Debugging Methods for IRB
58
187
 
59
188
  #### Highlights
60
189
 
61
190
  - Lookup and manipulate instance variables / methods with ease using [object_shadow](https://github.com/janlelis/object_shadow/)
62
- - **(irbtools-more)** Go even further with [looksee](https://github.com/oggy/looksee), the best lookup path inspection tool out there
191
+ - Go even further with [looksee](https://github.com/oggy/looksee), the best lookup path inspection tool out there
63
192
  - Display a method's source code using [code](https://github.com/janlelis/code)
64
- - Inline access to *ri* docs by [ori](https://github.com/dadooda/ori)
65
- - If you have deactivated *ri*, you can re-generate the docs with something like: `rvm docs generate-ri`
66
193
  - Find methods that turn one value into another value with [methodfinder](https://github.com/citizen428/methodfinder)
67
194
  - [Use VIM from inside IRB](https://github.com/jberkel/interactive_editor)
68
195
 
196
+ #### Extra Commands
197
+
198
+ Commands get treated specially by IRB and do not necessarily follow Ruby syntax.
199
+
200
+ Command | Alias | Description | Example
201
+ ------ | ---------- | ---------|---
202
+ `code ` | - | Shows syntax-highlighted source code of a method | `code Array#reverse`
203
+ `howtocall ` | - | Shows the method signature | `howtocall String#gsub`
204
+ `look ` | - | Shows looksee method list | `look [1,2,3]`
205
+ `shadow ` | `+ ` | Shows object shadow method list | `shadow [1,2,3]`
206
+ `sys ` | `$ ` | Calls system shell | `$ top`
207
+
208
+ Two default commands have an additional alias:
209
+
210
+ Command | Alias | Description | Example
211
+ ------ | ---------- | ---------|---
212
+ `show_doc` | `ri ` | Shows documentation | `ri String#gsub`
213
+ `chws` | `co ` | "change into an object" | `co [1,2,3]`
214
+
215
+ ##### IRB's ls?
216
+
217
+ Please note that IRB's own **ls** command is aliased to `ils`, since `ls` already refers to a method listing all files in the current directory. If you haven't tried looksee (`look`) or object shadows (`shadow`) - give it a try ;)
218
+
69
219
  #### Ruby Introspection
70
220
 
71
221
  Method / Constant | Arguments | Description | Provided By
72
222
  ------ | ---------- | -----------|-
73
- `code` | object = self, method_name | Display the method source with syntax highlighting. Will also look up C methods if the **core_docs** gem (which is included in **irbtools-more**) is available. | [code](https://github.com/janlelis/code)
223
+ `Object#lp` or `Object#look` | | Supercharged method introspection in IRB | [looksee](https://github.com/oggy/looksee)
224
+ `Object#shadow` | | Manipulate instance variables and learn about callable methods | [object_shadow](https://github.com/janlelis/object_shadow/)
225
+ `code` | object = self, method_name | Display the method source with syntax highlighting. Will also try to look up C methods. | [code](https://github.com/janlelis/code)
74
226
  `howtocall` | object = self, method_or_proc | Display parameter names and types you will need to call a method | [debugging/howtocall](https://github.com/janlelis/debugging#howtocallobj--self-method_or_proc)
75
227
  `mf` | object1, object2 | Find methods which turn one value into another value | [methodfinder](https://github.com/citizen428/methodfinder)
76
- `mof` | object, depth = 0, grep = // | Print a method list, ordered by modules (looksee lite) | [debugging](https://github.com/janlelis/debugging#mofobj-depth--nil)
77
- `Object#lp` | | **(irbtools-more)** Supercharged method introspection in IRB | [looksee](https://github.com/oggy/looksee)
78
- `Object#ri` | *args | Show ri documentation for this object or method | [ori](https://github.com/dadooda/ori)
79
- `Object#shadow` | | Manipulate instance variables and learn about callable methods | [object_shadow](https://github.com/janlelis/object_shadow/)
80
228
 
81
229
  #### Platform Info
82
230
 
@@ -85,14 +233,15 @@ Method / Constant | Arguments | Description | Provided By
85
233
  `OS` | | Query operating system information | [os](https://github.com/rdp/os)
86
234
  `RubyVersion` | | Show the Ruby version | [ruby_version](https://github.com/janlelis/ruby_version)
87
235
  `RubyEngine` | | Show the Ruby engine | [ruby_engine](https://github.com/janlelis/ruby_engine)
88
- `RubyInfo` | | List general information about the Ruby environment | [ruby_info](https://github.com/janlelis/ruby_info)
89
236
 
90
237
  #### General Utils
91
238
 
92
239
  Method / Constant | Arguments | Description | Provided By
93
240
  ------ | ---------- | -----------|-
94
241
  `beep` | | Ring terminal bell | [debugging/beep](https://github.com/janlelis/debugging#beep)
242
+ `clear` | | Clear the terminal | [every_day_irb](https://github.com/janlelis/every_day_irb)
95
243
  `copy` | string | Copy something to the clipboard | [clipboard](https://github.com/janlelis/clipboard)
244
+ `copy_output` | | Copy session output history to the clipboard | [clipboard](https://github.com/janlelis/clipboard), irbtools
96
245
  `colorize` | string | Syntax-highlight a string of Ruby code | [coderay](https://github.com/rubychan/coderay), irbtools
97
246
  `ed` / `emacs` / `mate` / `mvim` / `nano` / `vi` / `vim` | filename = nil | Start an editor in the session context | [interactive_editor](https://github.com/jberkel/interactive_editor)
98
247
  `ld` | file | Shortcut for `load lib.to_s + '.rb'` | [every_day_irb](https://github.com/janlelis/every_day_irb)
@@ -101,21 +250,12 @@ Method / Constant | Arguments | Description | Provided By
101
250
  `paste` | | Paste clipboard content | [clipboard](https://github.com/janlelis/clipboard)
102
251
  `q` | *args | Like `Kernel#p`, but prints results on one line, with different colors | [debugging/q](https://github.com/janlelis/debugging#qargs)
103
252
  `re` | string, regexg, groups = nil | Regex debugging helper | [debugging/re](https://github.com/janlelis/debugging#qargs)
253
+ `reset!` | | Restart the current IRB session | [every_day_irb](https://github.com/janlelis/every_day_irb)
104
254
  `rq` | lib | Shortcut for `require lib.to_s`. Use it like this: `rq:prime` | [every_day_irb](https://github.com/janlelis/every_day_irb)
105
255
  `rr` | lib | Shortcut for `require_relative lib.to_s` | [every_day_irb](https://github.com/janlelis/every_day_irb)
106
256
  `rrq` / `rerequire` | lib | Hack to remove a library from `$LOADED_FEATURES` and `require` it again | [every_day_irb](https://github.com/janlelis/every_day_irb)
107
257
  `wp` | inspect_string | Syntax-highlight a Ruby return value | [wirb](https://github.com/janlelis/wirb#kernelwp)
108
258
 
109
- #### IRB Support
110
-
111
- Method / Constant | Arguments | Description | Provided By
112
- ------ | ---------- | -----------|-
113
- `clear` | | Clear the terminal | [every_day_irb](https://github.com/janlelis/every_day_irb)
114
- `copy_input` | | Copy session history to the clipboard | [clipboard](https://github.com/janlelis/clipboard), irbtools
115
- `copy_output` | | Copy session output history to the clipboard | [clipboard](https://github.com/janlelis/clipboard), irbtools
116
- `reset!` | | Restart the current IRB session | [every_day_irb](https://github.com/janlelis/every_day_irb)
117
- `session_history` | number_of_lines = nil | Return a string of all commands issued in the current session | [every_day_irb](https://github.com/janlelis/every_day_irb)
118
-
119
259
  #### Files and Navigation
120
260
 
121
261
  Method / Constant | Arguments | Description | Provided By
@@ -128,7 +268,7 @@ Method / Constant | Arguments | Description | Provided By
128
268
  `chown_R` | user, group, path | Set file owner for directory | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
129
269
  `cp` | source, destination | Copy file | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
130
270
  `cp_r` | source, destination | Copy directory | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
131
- `ls` | path = "." | List directory content | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
271
+ `ls` | path = "." | List directory content | [cd](https://github.com/janlelis/cd)
132
272
  `ln` | target, link | Create symlink (`ln`) | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
133
273
  `ln_s` | target, link | Create symlink (`ln -s`) | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
134
274
  `ln_sf` | target, link | Create symlink (`ln -sf`) | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
@@ -173,12 +313,7 @@ You can use **Irbtools** without colors/IRB extensions. To do so, put this into
173
313
  require 'irbtools/non_fancy'
174
314
  Irbtools.start
175
315
  ```
176
-
177
- ### Hint: Web Console and Other Approaches
178
-
179
- **Irbtools** works well together with the amazing [web-console!](https://github.com/rails/web-console), and also with the [ripl](https://github.com/cldwalker/ripl) IRB alternative.
180
-
181
316
  ## J-_-L
182
317
 
183
- Copyright (c) 2010-2021 Jan Lelis <https://janlelis.com> released under the MIT
318
+ Copyright (c) 2010-2022 Jan Lelis <https://janlelis.com> released under the MIT
184
319
  license.