irbtools 3.0.4 → 4.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 +4 -4
- data/CHANGELOG.md +26 -0
- data/CONFIGURE.md +1 -2
- data/MIT-LICENSE.txt +1 -1
- data/README.md +189 -56
- data/irbtools.gemspec +17 -11
- data/lib/irbtools/binding.rb +4 -21
- data/lib/irbtools/commands/code.rb +35 -0
- data/lib/irbtools/commands/howtocall.rb +35 -0
- data/lib/irbtools/commands/look.rb +20 -0
- data/lib/irbtools/commands/shadow.rb +20 -0
- data/lib/irbtools/commands/sys.rb +25 -0
- data/lib/irbtools/commands.rb +5 -0
- data/lib/irbtools/configure.rb +1 -0
- data/lib/irbtools/implementation.rb +48 -37
- data/lib/irbtools/libraries.rb +15 -42
- data/lib/irbtools/version.rb +1 -1
- data/lib/irbtools.rb +6 -22
- metadata +53 -48
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1e9a398324ec34c6a93632f3eb26f84be51607b45e1e06e311a3c7507e11e15b
         | 
| 4 | 
            +
              data.tar.gz: bb9072432d1e2404e9bcb1a763d338458d97d8126bbdd6e26b773aaff98c514e
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 33c1fd0e1ee8b60cccbc8cc10620341826aaaebaed527bea9e4a046347d2a1753c91bdb69204619de6624981ed58e838d5b0fdf7c08cf26ce24375ec0d9a39ce
         | 
| 7 | 
            +
              data.tar.gz: 2c8c5a3668896580a9f0e6f6e8a959eff7b80caacbfb3b6632114063ad1f511e03d56b3dccf84f0d6f5ccc42e3c16c8f065315feed9022f41a3ffd15f182083f
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,31 @@ | |
| 1 1 | 
             
            # Irbtools Changelog
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 4.0
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Requires IRB 1.6 (Ruby 3.2 bundles IRB 1.6.2)
         | 
| 6 | 
            +
            * Requires Ruby 3.0
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            * Remove a bunch of gems:
         | 
| 9 | 
            +
                * Drop binding.repl gem since it was only needed for older Rubies
         | 
| 10 | 
            +
                * Drop ori gem, since IRB now has `show_doc`
         | 
| 11 | 
            +
                * Drop RubyInfo
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            * Retire irbtools-more:
         | 
| 14 | 
            +
              * Move looksee to core irbtools
         | 
| 15 | 
            +
              * Move core_docs to core irbtools
         | 
| 16 | 
            +
              * Remove bond (outdated)
         | 
| 17 | 
            +
              * Leave binding_of_caller optional
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            * Add command wrappers for code, howtocall, looksee, shadow
         | 
| 20 | 
            +
            * Add `$` command to directly call system
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            * Version bumps: looksee, os, methodfinder, code, core_docs, debugging
         | 
| 23 | 
            +
            * Alias IRB's ls to ils (fixes #53)
         | 
| 24 | 
            +
            * Remove support for RIPL repl (outdated)
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            ## 3.0.5
         | 
| 27 | 
            +
            * Bump methodfinder dependency & update usage (fixes #52)
         | 
| 28 | 
            +
             | 
| 3 29 | 
             
            ## 3.0.4
         | 
| 4 30 | 
             
            * Loosen Ruby dependency to allow Ruby 3.0
         | 
| 5 31 |  | 
    
        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]`). | 
| 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/MIT-LICENSE.txt
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -1,21 +1,156 @@ | |
| 1 | 
            -
            # Irbtools [](https://badge.fury.io/rb/irbtools) | 
| 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 | 
            +
             | 
| 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
         | 
| 2 19 |  | 
| 3 20 | 
             
            ```ruby
         | 
| 4 | 
            -
             | 
| 5 | 
            -
              | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 9 | 
            -
              | 
| 10 | 
            -
             | 
| 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]
         | 
| 11 51 | 
             
            ```
         | 
| 12 52 |  | 
| 13 | 
            -
             | 
| 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!
         | 
| 53 | 
            +
            ### Show a method list grouped by ancestors
         | 
| 17 54 |  | 
| 18 | 
            -
             | 
| 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 | 
            +
             | 
| 137 | 
            +
            ```ruby
         | 
| 138 | 
            +
            >> howtocall require
         | 
| 139 | 
            +
            require(path)
         | 
| 140 | 
            +
            ```
         | 
| 141 | 
            +
             | 
| 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 | 
            +
            ```
         | 
| 19 154 |  | 
| 20 155 | 
             
            ## Setup
         | 
| 21 156 |  | 
| @@ -30,55 +165,66 @@ You also need to add irbtools to your project's `Gemfile`: | |
| 30 165 |  | 
| 31 166 | 
             
                gem 'irbtools', require: 'irbtools/binding'
         | 
| 32 167 |  | 
| 33 | 
            -
            Then start IRB (with **Irbtools** loaded) from the terminal or directly from | 
| 168 | 
            +
            Then start IRB (with **Irbtools** loaded) from the terminal or directly from
         | 
| 169 | 
            +
            your code with:
         | 
| 34 170 |  | 
| 35 171 | 
             
                binding.irb
         | 
| 36 172 |  | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
            Some suggested gems will not be installed to ensure wider general support. For
         | 
| 40 | 
            -
            the full feature set, you can install **irbtools-more**. To do so, change your
         | 
| 41 | 
            -
            `.irbrc` to:
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                require 'irbtools/more'
         | 
| 44 | 
            -
             | 
| 45 | 
            -
            and edit your `Gemfile` to read like this:
         | 
| 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:
         | 
| 46 175 |  | 
| 47 | 
            -
                 | 
| 176 | 
            +
                irb
         | 
| 48 177 |  | 
| 49 178 | 
             
            ## Features
         | 
| 50 179 |  | 
| 51 | 
            -
            ###  | 
| 180 | 
            +
            ### General IRB Improvements
         | 
| 52 181 |  | 
| 53 182 | 
             
            - Syntax highlighting ([wirb](https://github.com/janlelis/wirb/) / [fancy_irb](https://github.com/janlelis/fancy_irb))
         | 
| 54 | 
            -
            - Loads included  | 
| 55 | 
            -
            - Customizable views for specfic options using [hirb](https://tagaholic.me/2009/03/13/hirb-irb-on-the-good-stuff.html)
         | 
| 56 | 
            -
              - ActiveRecord results get displayed as a table
         | 
| 57 | 
            -
            -  **(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.
         | 
| 58 185 |  | 
| 59 | 
            -
            ###  | 
| 186 | 
            +
            ### Included Debugging Methods for IRB
         | 
| 60 187 |  | 
| 61 188 | 
             
            #### Highlights
         | 
| 62 189 |  | 
| 63 190 | 
             
            - Lookup and manipulate instance variables / methods with ease using [object_shadow](https://github.com/janlelis/object_shadow/)
         | 
| 64 | 
            -
            -  | 
| 191 | 
            +
            - Go even further with [looksee](https://github.com/oggy/looksee), the best lookup path inspection tool out there
         | 
| 65 192 | 
             
            - Display a method's source code using [code](https://github.com/janlelis/code)
         | 
| 66 | 
            -
            - Inline access to *ri* docs by [ori](https://github.com/dadooda/ori)
         | 
| 67 | 
            -
              - If you have deactivated *ri*, you can re-generate the docs with something like: `rvm docs generate-ri`
         | 
| 68 193 | 
             
            - Find methods that turn one value into another value with [methodfinder](https://github.com/citizen428/methodfinder)
         | 
| 69 194 | 
             
            - [Use VIM from inside IRB](https://github.com/jberkel/interactive_editor)
         | 
| 70 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 | 
            +
             | 
| 71 219 | 
             
            #### Ruby Introspection
         | 
| 72 220 |  | 
| 73 221 | 
             
            Method / Constant | Arguments  | Description | Provided By
         | 
| 74 222 | 
             
            ------ | ---------- | -----------|-
         | 
| 75 | 
            -
            ` | 
| 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)
         | 
| 76 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)
         | 
| 77 227 | 
             
            `mf` | object1, object2 | Find methods which turn one value into another value | [methodfinder](https://github.com/citizen428/methodfinder)
         | 
| 78 | 
            -
            `mof` | object, depth = 0, grep = // | Print a method list, ordered by modules (looksee lite) | [debugging](https://github.com/janlelis/debugging#mofobj-depth--nil)
         | 
| 79 | 
            -
            `Object#lp` | | **(irbtools-more)** Supercharged method introspection in IRB | [looksee](https://github.com/oggy/looksee)
         | 
| 80 | 
            -
            `Object#ri` | *args | Show ri documentation for this object or method | [ori](https://github.com/dadooda/ori)
         | 
| 81 | 
            -
            `Object#shadow` | | Manipulate instance variables and learn about callable methods |  [object_shadow](https://github.com/janlelis/object_shadow/)
         | 
| 82 228 |  | 
| 83 229 | 
             
            #### Platform Info
         | 
| 84 230 |  | 
| @@ -87,14 +233,15 @@ Method / Constant | Arguments  | Description | Provided By | |
| 87 233 | 
             
            `OS` | | Query operating system information | [os](https://github.com/rdp/os)
         | 
| 88 234 | 
             
            `RubyVersion` | | Show the Ruby version | [ruby_version](https://github.com/janlelis/ruby_version)
         | 
| 89 235 | 
             
            `RubyEngine` | | Show the Ruby engine | [ruby_engine](https://github.com/janlelis/ruby_engine)
         | 
| 90 | 
            -
            `RubyInfo` | | List general information about the Ruby environment | [ruby_info](https://github.com/janlelis/ruby_info)
         | 
| 91 236 |  | 
| 92 237 | 
             
            #### General Utils
         | 
| 93 238 |  | 
| 94 239 | 
             
            Method / Constant | Arguments  | Description | Provided By
         | 
| 95 240 | 
             
            ------ | ---------- | -----------|-
         | 
| 96 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)
         | 
| 97 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
         | 
| 98 245 | 
             
            `colorize` | string | Syntax-highlight a string of Ruby code | [coderay](https://github.com/rubychan/coderay), irbtools
         | 
| 99 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)
         | 
| 100 247 | 
             
            `ld` | file | Shortcut for `load lib.to_s + '.rb'` | [every_day_irb](https://github.com/janlelis/every_day_irb)
         | 
| @@ -103,21 +250,12 @@ Method / Constant | Arguments  | Description | Provided By | |
| 103 250 | 
             
            `paste` | | Paste clipboard content | [clipboard](https://github.com/janlelis/clipboard)
         | 
| 104 251 | 
             
            `q` | *args | Like `Kernel#p`, but prints results on one line, with different colors | [debugging/q](https://github.com/janlelis/debugging#qargs)
         | 
| 105 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)
         | 
| 106 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)
         | 
| 107 255 | 
             
            `rr` | lib | Shortcut for `require_relative lib.to_s` |  [every_day_irb](https://github.com/janlelis/every_day_irb)
         | 
| 108 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)
         | 
| 109 257 | 
             
            `wp` | inspect_string | Syntax-highlight a Ruby return value | [wirb](https://github.com/janlelis/wirb#kernelwp)
         | 
| 110 258 |  | 
| 111 | 
            -
            #### IRB Support
         | 
| 112 | 
            -
             | 
| 113 | 
            -
            Method / Constant | Arguments  | Description | Provided By
         | 
| 114 | 
            -
            ------ | ---------- | -----------|-
         | 
| 115 | 
            -
            `clear` | | Clear the terminal | [every_day_irb](https://github.com/janlelis/every_day_irb)
         | 
| 116 | 
            -
            `copy_input` | | Copy session history to the clipboard | [clipboard](https://github.com/janlelis/clipboard), irbtools
         | 
| 117 | 
            -
            `copy_output` | | Copy session output history to the clipboard | [clipboard](https://github.com/janlelis/clipboard), irbtools
         | 
| 118 | 
            -
            `reset!` | | Restart the current IRB session | [every_day_irb](https://github.com/janlelis/every_day_irb)
         | 
| 119 | 
            -
            `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)
         | 
| 120 | 
            -
             | 
| 121 259 | 
             
            #### Files and Navigation
         | 
| 122 260 |  | 
| 123 261 | 
             
            Method / Constant | Arguments  | Description | Provided By
         | 
| @@ -130,7 +268,7 @@ Method / Constant | Arguments  | Description | Provided By | |
| 130 268 | 
             
            `chown_R` | user, group, path | Set file owner for directory | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
         | 
| 131 269 | 
             
            `cp` | source, destination | Copy file | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
         | 
| 132 270 | 
             
            `cp_r` | source, destination | Copy directory | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
         | 
| 133 | 
            -
            `ls` | path = "." | List directory content | [ | 
| 271 | 
            +
            `ls` | path = "." | List directory content | [cd](https://github.com/janlelis/cd)
         | 
| 134 272 | 
             
            `ln` | target, link | Create symlink (`ln`) | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
         | 
| 135 273 | 
             
            `ln_s` | target, link | Create symlink (`ln -s`) | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
         | 
| 136 274 | 
             
            `ln_sf` | target, link | Create symlink (`ln -sf`) | [fileutils](https://ruby-doc.org/stdlib/libdoc/fileutils/rdoc/FileUtils.html)
         | 
| @@ -175,12 +313,7 @@ You can use **Irbtools** without colors/IRB extensions. To do so, put this into | |
| 175 313 | 
             
            require 'irbtools/non_fancy'
         | 
| 176 314 | 
             
            Irbtools.start
         | 
| 177 315 | 
             
            ```
         | 
| 178 | 
            -
             | 
| 179 | 
            -
            ### Hint: Web Console and Other Approaches
         | 
| 180 | 
            -
             | 
| 181 | 
            -
            **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.
         | 
| 182 | 
            -
             | 
| 183 316 | 
             
            ## J-_-L
         | 
| 184 317 |  | 
| 185 | 
            -
            Copyright (c) 2010- | 
| 318 | 
            +
            Copyright (c) 2010-2022 Jan Lelis <https://janlelis.com> released under the MIT
         | 
| 186 319 | 
             
            license.
         | 
    
        data/irbtools.gemspec
    CHANGED
    
    | @@ -5,7 +5,7 @@ Gem::Specification.new do |s| | |
| 5 5 | 
             
              s.name = 'irbtools'
         | 
| 6 6 | 
             
              s.version = Irbtools::VERSION
         | 
| 7 7 |  | 
| 8 | 
            -
              s.homepage              = 'https:// | 
| 8 | 
            +
              s.homepage              = 'https://github.com/janlelis/irbtools'
         | 
| 9 9 | 
             
              s.authors               = ["Jan Lelis"]
         | 
| 10 10 | 
             
              s.email                 = ["hi@ruby.consulting"]
         | 
| 11 11 | 
             
              s.summary               = 'Irbtools happy IRB.'
         | 
| @@ -20,6 +20,12 @@ Gem::Specification.new do |s| | |
| 20 20 | 
             
                lib/irbtools/hirb.rb
         | 
| 21 21 | 
             
                lib/irbtools/minimal.rb
         | 
| 22 22 | 
             
                lib/irbtools/binding.rb
         | 
| 23 | 
            +
                lib/irbtools/commands.rb
         | 
| 24 | 
            +
                lib/irbtools/commands/code.rb
         | 
| 25 | 
            +
                lib/irbtools/commands/howtocall.rb
         | 
| 26 | 
            +
                lib/irbtools/commands/look.rb
         | 
| 27 | 
            +
                lib/irbtools/commands/shadow.rb
         | 
| 28 | 
            +
                lib/irbtools/commands/sys.rb
         | 
| 23 29 | 
             
                Rakefile
         | 
| 24 30 | 
             
                irbtools.gemspec
         | 
| 25 31 | 
             
              ]
         | 
| @@ -29,35 +35,35 @@ Gem::Specification.new do |s| | |
| 29 35 | 
             
                CHANGELOG.md
         | 
| 30 36 | 
             
                MIT-LICENSE.txt
         | 
| 31 37 | 
             
              ]
         | 
| 38 | 
            +
              s.metadata              = { "rubygems_mfa_required" => "true" }
         | 
| 32 39 | 
             
              s.license               = 'MIT'
         | 
| 33 40 |  | 
| 34 | 
            -
              s.required_ruby_version = '>=  | 
| 41 | 
            +
              s.required_ruby_version = '>= 3.0', '< 4.0'
         | 
| 35 42 |  | 
| 36 43 | 
             
              # # #
         | 
| 37 44 | 
             
              # Dependencies
         | 
| 38 45 |  | 
| 39 46 | 
             
              # Core Functionality
         | 
| 40 | 
            -
              s.add_dependency %q<irb>,           " | 
| 41 | 
            -
              s.add_dependency %q<every_day_irb>, "~> 2. | 
| 47 | 
            +
              s.add_dependency %q<irb>,           "~> 1.6.2"
         | 
| 48 | 
            +
              s.add_dependency %q<every_day_irb>, "~> 2.2"
         | 
| 42 49 | 
             
              s.add_dependency %q<fancy_irb>,     "~> 1.2", ">= 1.2.1"
         | 
| 43 50 | 
             
              s.add_dependency %q<wirb>,          "~> 2.0", ">= 2.2.1"
         | 
| 44 51 | 
             
              s.add_dependency %q<hirb>,          "~> 0.7", ">= 0.7.3"
         | 
| 45 | 
            -
              s.add_dependency %q<binding.repl>,  "~> 3.0"
         | 
| 46 52 |  | 
| 47 53 | 
             
              # Utils
         | 
| 48 54 | 
             
              s.add_dependency %q<paint>,         ">= 0.9", "< 3.0"
         | 
| 49 55 | 
             
              s.add_dependency %q<clipboard>,     "~> 1.3"
         | 
| 50 56 | 
             
              s.add_dependency %q<interactive_editor>, "~> 0.0", ">= 0.0.10"
         | 
| 51 57 | 
             
              s.add_dependency %q<coderay>,       "~> 1.1"
         | 
| 52 | 
            -
              s.add_dependency %q<debugging>,     "~>  | 
| 58 | 
            +
              s.add_dependency %q<debugging>,     "~> 2.1"
         | 
| 53 59 |  | 
| 54 60 | 
             
              # Introspection / Docs
         | 
| 61 | 
            +
              s.add_dependency %q<looksee>,       "~> 5.0"
         | 
| 55 62 | 
             
              s.add_dependency %q<object_shadow>, "~> 1.1"
         | 
| 56 | 
            -
              s.add_dependency %q<code>,          ">= 0.9. | 
| 57 | 
            -
              s.add_dependency %q< | 
| 58 | 
            -
              s.add_dependency %q<methodfinder>,  "~> 2.2"
         | 
| 63 | 
            +
              s.add_dependency %q<code>,          ">= 0.9.4", "< 2.0"
         | 
| 64 | 
            +
              s.add_dependency %q<core_docs>,     "~> 0.9.9"
         | 
| 65 | 
            +
              s.add_dependency %q<methodfinder>,  "~> 2.2", ">= 2.2.5"
         | 
| 59 66 | 
             
              s.add_dependency %q<ruby_version>,  "~> 1.0"
         | 
| 60 67 | 
             
              s.add_dependency %q<ruby_engine>,   "~> 1.0"
         | 
| 61 | 
            -
              s.add_dependency %q< | 
| 62 | 
            -
              s.add_dependency %q<os>
         | 
| 68 | 
            +
              s.add_dependency %q<os>,            "~> 1.1", ">= 1.1.4"
         | 
| 63 69 | 
             
            end
         | 
    
        data/lib/irbtools/binding.rb
    CHANGED
    
    | @@ -3,27 +3,10 @@ begin | |
| 3 3 | 
             
            rescue LoadError
         | 
| 4 4 | 
             
            end
         | 
| 5 5 |  | 
| 6 | 
            -
            if  | 
| 7 | 
            -
               | 
| 8 | 
            -
                 | 
| 9 | 
            -
                   | 
| 10 | 
            -
                    binding.of_caller(1).irb
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
              end
         | 
| 14 | 
            -
            else
         | 
| 15 | 
            -
              require 'binding.repl'
         | 
| 16 | 
            -
              BindingRepl.auto = %w[irb ripl ir rib pry]
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              class Binding
         | 
| 19 | 
            -
                alias irb repl!
         | 
| 20 | 
            -
              end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
              if defined? BindingOfCaller
         | 
| 23 | 
            -
                require 'debugging/repl'
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                module Debugging
         | 
| 26 | 
            -
                  alias irb repl
         | 
| 6 | 
            +
            if defined? BindingOfCaller
         | 
| 7 | 
            +
              module Kernel
         | 
| 8 | 
            +
                private def irb
         | 
| 9 | 
            +
                  binding.of_caller(1).irb
         | 
| 27 10 | 
             
                end
         | 
| 28 11 | 
             
              end
         | 
| 29 12 | 
             
            end
         | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            require "irb/cmd/nop"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module IRB
         | 
| 4 | 
            +
              module ExtendCommand
         | 
| 5 | 
            +
                class Code < Nop
         | 
| 6 | 
            +
                  category "Introspection"
         | 
| 7 | 
            +
                  description "Shows the syntax-highlighted source code of a method"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  class << self
         | 
| 10 | 
            +
                    def transform_args(args)
         | 
| 11 | 
            +
                      if args.strip =~ /\A(?:([\w:]+)([#.]))?(\w+)\z/
         | 
| 12 | 
            +
                        if $1
         | 
| 13 | 
            +
                          if $2 == "#"
         | 
| 14 | 
            +
                            "#{$1}, #{$1}.instance_method(:#{$3})"
         | 
| 15 | 
            +
                          else
         | 
| 16 | 
            +
                            "#{$1}, :#{$3}"
         | 
| 17 | 
            +
                          end
         | 
| 18 | 
            +
                        else
         | 
| 19 | 
            +
                          ":" + $3
         | 
| 20 | 
            +
                        end
         | 
| 21 | 
            +
                      else
         | 
| 22 | 
            +
                        args
         | 
| 23 | 
            +
                      end
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  def execute(*args)
         | 
| 28 | 
            +
                    @irb_context.workspace.binding.send(:code, *args)
         | 
| 29 | 
            +
                  rescue NameError
         | 
| 30 | 
            +
                    warn "code: Class or method not found."
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
| 35 | 
            +
             | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            require "irb/cmd/nop"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module IRB
         | 
| 4 | 
            +
              module ExtendCommand
         | 
| 5 | 
            +
                class Howtocall < Nop
         | 
| 6 | 
            +
                  category "Introspection"
         | 
| 7 | 
            +
                  description "Displays method signatures based on Method#parameters"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  class << self
         | 
| 10 | 
            +
                    def transform_args(args)
         | 
| 11 | 
            +
                      if args.strip =~ /\A(?:([\w:]+)([#.]))?(\w+)\z/
         | 
| 12 | 
            +
                        if $1
         | 
| 13 | 
            +
                          if $2 == "#"
         | 
| 14 | 
            +
                            "#{$1}, #{$1}.instance_method(:#{$3})"
         | 
| 15 | 
            +
                          else
         | 
| 16 | 
            +
                            "#{$1}, :#{$3}"
         | 
| 17 | 
            +
                          end
         | 
| 18 | 
            +
                        else
         | 
| 19 | 
            +
                          ":" + $3
         | 
| 20 | 
            +
                        end
         | 
| 21 | 
            +
                      else
         | 
| 22 | 
            +
                        args
         | 
| 23 | 
            +
                      end
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  def execute(*args)
         | 
| 28 | 
            +
                    @irb_context.workspace.binding.send(:howtocall, *args)
         | 
| 29 | 
            +
                  rescue NameError
         | 
| 30 | 
            +
                    warn "howtocall: Class or method not found"
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
| 35 | 
            +
             | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            require "irb/cmd/nop"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module IRB
         | 
| 4 | 
            +
              module ExtendCommand
         | 
| 5 | 
            +
                class Look < Nop
         | 
| 6 | 
            +
                  category "Introspection"
         | 
| 7 | 
            +
                  description 'Method list and lookup path inspection based on looksee gem'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def execute(*args)
         | 
| 10 | 
            +
                    if args.empty?
         | 
| 11 | 
            +
                      @irb_context.workspace.binding.look
         | 
| 12 | 
            +
                    else
         | 
| 13 | 
            +
                      obj, *params = *args
         | 
| 14 | 
            +
                      obj.look(*params)
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| 20 | 
            +
             | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            require "irb/cmd/nop"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module IRB
         | 
| 4 | 
            +
              module ExtendCommand
         | 
| 5 | 
            +
                class Shadow < Nop
         | 
| 6 | 
            +
                  category "Introspection"
         | 
| 7 | 
            +
                  description 'Method list and lookup path inspection based on object shadow gem'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  def execute(*args)
         | 
| 10 | 
            +
                    if args.empty?
         | 
| 11 | 
            +
                      @irb_context.workspace.binding.shadow
         | 
| 12 | 
            +
                    else
         | 
| 13 | 
            +
                      obj, *params = *args
         | 
| 14 | 
            +
                      obj.shadow(*params)
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
            end
         | 
| 20 | 
            +
             | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            require "irb/cmd/nop"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module IRB
         | 
| 4 | 
            +
              module ExtendCommand
         | 
| 5 | 
            +
                class Sys < Nop
         | 
| 6 | 
            +
                  category "Misc"
         | 
| 7 | 
            +
                  description 'Run a system command'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  class << self
         | 
| 10 | 
            +
                    def transform_args(args)
         | 
| 11 | 
            +
                      if args.empty? || string_literal?(args)
         | 
| 12 | 
            +
                        args
         | 
| 13 | 
            +
                      else
         | 
| 14 | 
            +
                        args.strip.dump
         | 
| 15 | 
            +
                      end
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  def execute(*args)
         | 
| 20 | 
            +
                    system(*args)
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| 25 | 
            +
             | 
    
        data/lib/irbtools/configure.rb
    CHANGED
    
    
| @@ -1,7 +1,6 @@ | |
| 1 1 | 
             
            module Irbtools
         | 
| 2 2 | 
             
              @libraries       = { :start => [], :sub_session => [], :autoload => [], :thread => {}, :late => [], :late_thread => {} }
         | 
| 3 3 | 
             
              @lib_hooks       = Hash.new{|h,k| h[k] = [] }
         | 
| 4 | 
            -
              @packages        = []
         | 
| 5 4 | 
             
              @shell_name      = File.split($0)[-1].upcase
         | 
| 6 5 | 
             
              @welcome_message = "Welcome to #{ @shell_name }. You are using #{ RUBY_DESCRIPTION }. Have fun ;)"
         | 
| 7 6 | 
             
              @minimal         ||= false
         | 
| @@ -20,9 +19,6 @@ module Irbtools | |
| 20 19 | 
             
                # keys determine if lib is required, required on sub-session or autoloaded
         | 
| 21 20 | 
             
                attr_accessor :libraries
         | 
| 22 21 |  | 
| 23 | 
            -
                # an array of extension packages that get loaded (e.g. irbtools-more)
         | 
| 24 | 
            -
                attr_accessor :packages
         | 
| 25 | 
            -
             | 
| 26 22 | 
             
                # add a library. the block gets executed, when the library was loaded.
         | 
| 27 23 | 
             
                # if the second param is true, it's hooked in into IRB.conf[:IRB_RC] instead of the start.
         | 
| 28 24 | 
             
                def add_library(lib, options = {}, &block)
         | 
| @@ -83,23 +79,6 @@ module Irbtools | |
| 83 79 | 
             
                  @lib_hooks.delete lib
         | 
| 84 80 | 
             
                end
         | 
| 85 81 |  | 
| 86 | 
            -
                # add extensions packages
         | 
| 87 | 
            -
                def add_package(pkg)
         | 
| 88 | 
            -
                  @packages << pkg.to_s
         | 
| 89 | 
            -
                end
         | 
| 90 | 
            -
             | 
| 91 | 
            -
                # remove extension package
         | 
| 92 | 
            -
                def remove_package(pkg)
         | 
| 93 | 
            -
                  @packages.delete pkg.to_s
         | 
| 94 | 
            -
                end
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                # actually require registered packages
         | 
| 97 | 
            -
                def load_packages
         | 
| 98 | 
            -
                  @packages.each{ |pkg|
         | 
| 99 | 
            -
                    require "irbtools/#{pkg}"
         | 
| 100 | 
            -
                  }
         | 
| 101 | 
            -
                end
         | 
| 102 | 
            -
             | 
| 103 82 | 
             
                # te be triggered when a library has loaded
         | 
| 104 83 | 
             
                def library_loaded(lib)
         | 
| 105 84 | 
             
                  @lib_hooks[lib.to_s].each{ |hook| hook.call }
         | 
| @@ -122,30 +101,62 @@ module Irbtools | |
| 122 101 | 
             
                  $VERBOSE, $DEBUG = remember_verbose_and_debug
         | 
| 123 102 | 
             
                end
         | 
| 124 103 |  | 
| 125 | 
            -
                # configure irb
         | 
| 126 104 | 
             
                def configure_irb!
         | 
| 127 105 | 
             
                  if defined?(IRB)
         | 
| 128 106 | 
             
                    IRB.conf[:AUTO_INDENT]  = true                 # simple auto indent
         | 
| 129 107 | 
             
                    IRB.conf[:EVAL_HISTORY] = 42424242424242424242 # creates the special __ variable
         | 
| 130 108 | 
             
                    IRB.conf[:SAVE_HISTORY] = 2000                 # how many lines will go to ~/.irb_history
         | 
| 131 | 
            -
             | 
| 132 | 
            -
                     | 
| 133 | 
            -
                     | 
| 134 | 
            -
             | 
| 135 | 
            -
                      :PROMPT_N => "|  ",    # indenting
         | 
| 136 | 
            -
                      :PROMPT_C => " > ",    # continuing a statement
         | 
| 137 | 
            -
                      :PROMPT_S => "%l> ",   # continuing a string
         | 
| 138 | 
            -
                      :RETURN   => "=> %s \n",
         | 
| 139 | 
            -
                      :AUTO_INDENT => true,
         | 
| 140 | 
            -
                    }})
         | 
| 141 | 
            -
             | 
| 142 | 
            -
                    IRB.conf[:PROMPT_MODE] = :IRBTOOLS
         | 
| 109 | 
            +
                    set_propmt
         | 
| 110 | 
            +
                    load_commands
         | 
| 111 | 
            +
                    add_command_aliases
         | 
| 112 | 
            +
                    rename_ls_to_ils
         | 
| 143 113 | 
             
                  end
         | 
| 144 114 | 
             
                end
         | 
| 145 115 |  | 
| 146 | 
            -
                 | 
| 147 | 
            -
             | 
| 148 | 
            -
             | 
| 116 | 
            +
                def set_propmt
         | 
| 117 | 
            +
                  (IRB.conf[:PROMPT] ||= {} ).merge!( {:IRBTOOLS => {
         | 
| 118 | 
            +
                    :PROMPT_I => ">> ",    # normal
         | 
| 119 | 
            +
                    :PROMPT_N => "|  ",    # indenting
         | 
| 120 | 
            +
                    :PROMPT_C => " > ",    # continuing a statement
         | 
| 121 | 
            +
                    :PROMPT_S => "%l> ",   # continuing a string
         | 
| 122 | 
            +
                    :RETURN   => "=> %s \n",
         | 
| 123 | 
            +
                    :AUTO_INDENT => true,
         | 
| 124 | 
            +
                  }})
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                  IRB.conf[:PROMPT_MODE] = :IRBTOOLS
         | 
| 127 | 
            +
                end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                def load_commands
         | 
| 130 | 
            +
                  ec = IRB::ExtendCommandBundle.instance_variable_get(:@EXTEND_COMMANDS)
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                  [
         | 
| 133 | 
            +
                    [:code, :Code, nil, [:code, IRB::ExtendCommandBundle::OVERRIDE_ALL]],
         | 
| 134 | 
            +
                    [:howtocall, :Howtocall, nil, [:howtocall, IRB::ExtendCommandBundle::OVERRIDE_ALL]],
         | 
| 135 | 
            +
                    [:look, :Look, nil, [:look, IRB::ExtendCommandBundle::OVERRIDE_ALL]],
         | 
| 136 | 
            +
                    [:shadow, :Shadow, nil, [:shadow, IRB::ExtendCommandBundle::OVERRIDE_ALL]],
         | 
| 137 | 
            +
                    [:sys, :Sys, nil, [:sys, IRB::ExtendCommandBundle::OVERRIDE_ALL]],
         | 
| 138 | 
            +
                  ].each{ |ecconfig|
         | 
| 139 | 
            +
                    ec.push(ecconfig)
         | 
| 140 | 
            +
                    IRB::ExtendCommandBundle.def_extend_command(*ecconfig)
         | 
| 141 | 
            +
                  }
         | 
| 142 | 
            +
                end
         | 
| 143 | 
            +
             | 
| 144 | 
            +
                def add_command_aliases
         | 
| 145 | 
            +
                  IRB.conf[:COMMAND_ALIASES] = (IRB.conf[:COMMAND_ALIASES] || {}).merge({
         | 
| 146 | 
            +
                    :ri => :show_doc,
         | 
| 147 | 
            +
                    :co => :chws,
         | 
| 148 | 
            +
                    :'$' => :sys,
         | 
| 149 | 
            +
                    :'+' => :shadow,
         | 
| 150 | 
            +
                  })
         | 
| 151 | 
            +
                end
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                # prevent clash between IRB's ls and FileUtil's ls
         | 
| 154 | 
            +
                def rename_ls_to_ils
         | 
| 155 | 
            +
                  if aliases = IRB::ExtendCommandBundle.instance_variable_get(:@ALIASES)
         | 
| 156 | 
            +
                    if irb_ls = aliases.find{|a,*| a == :ls}
         | 
| 157 | 
            +
                      irb_ls[0] = :ils
         | 
| 158 | 
            +
                    end
         | 
| 159 | 
            +
                  end
         | 
| 149 160 | 
             
                end
         | 
| 150 161 |  | 
| 151 162 | 
             
                # loads all the stuff
         | 
    
        data/lib/irbtools/libraries.rb
    CHANGED
    
    | @@ -21,14 +21,11 @@ Irbtools.add_library 'wirb/wp', thread: :paint do | |
| 21 21 | 
             
              Wirb.start
         | 
| 22 22 | 
             
            end
         | 
| 23 23 |  | 
| 24 | 
            -
             | 
| 25 | 
            -
               | 
| 26 | 
            -
                FancyIrb.start
         | 
| 27 | 
            -
              end
         | 
| 24 | 
            +
            Irbtools.add_library :fancy_irb, thread: :paint do
         | 
| 25 | 
            +
              FancyIrb.start
         | 
| 28 26 | 
             
            end
         | 
| 29 27 |  | 
| 30 28 | 
             
            Irbtools.add_library 'debugging/q',         thread: :paint
         | 
| 31 | 
            -
            Irbtools.add_library 'debugging/mof',       thread: :paint
         | 
| 32 29 | 
             
            Irbtools.add_library 'debugging/re',        thread: :paint
         | 
| 33 30 | 
             
            Irbtools.add_library 'debugging/beep',      thread: :paint
         | 
| 34 31 | 
             
            Irbtools.add_library 'debugging/howtocall', thread: :paint
         | 
| @@ -39,41 +36,23 @@ Irbtools.add_library 'object_shadow', thread: :paint do | |
| 39 36 | 
             
              ObjectShadow.include(ObjectShadow::DeepInspect)
         | 
| 40 37 | 
             
            end
         | 
| 41 38 |  | 
| 42 | 
            -
            Irbtools.add_library 'readline', thread: : | 
| 43 | 
            -
            Irbtools.add_library ' | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
                def self.get_ri_arg_prefix(cmd)
         | 
| 47 | 
            -
                  if cmd && (mat = cmd.match /\A(\s*.+?\.ri)\s+\S/)
         | 
| 48 | 
            -
                    mat[1]
         | 
| 49 | 
            -
                  end
         | 
| 50 | 
            -
                end
         | 
| 51 | 
            -
              end
         | 
| 39 | 
            +
            Irbtools.add_library 'readline', thread: :readline
         | 
| 40 | 
            +
            Irbtools.add_library 'os', thread: :os
         | 
| 41 | 
            +
            Irbtools.add_library 'ruby_engine', thread: :re
         | 
| 42 | 
            +
            Irbtools.add_library 'ruby_version', thread: :rv
         | 
| 52 43 |  | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
                    begin
         | 
| 60 | 
            -
                      klass = Object.const_get $1
         | 
| 61 | 
            -
                      klass.ri $2
         | 
| 62 | 
            -
                    rescue
         | 
| 63 | 
            -
                      super
         | 
| 64 | 
            -
                    end
         | 
| 65 | 
            -
                  else
         | 
| 66 | 
            -
                    super
         | 
| 67 | 
            -
                  end
         | 
| 44 | 
            +
            begin
         | 
| 45 | 
            +
              # Object#l method for inspecting its lookup path
         | 
| 46 | 
            +
              Irbtools.add_library 'looksee', thread: :ls do
         | 
| 47 | 
            +
                Looksee.rename :lp
         | 
| 48 | 
            +
                class Object
         | 
| 49 | 
            +
                  alias look lp
         | 
| 68 50 | 
             
                end
         | 
| 69 51 | 
             
              end
         | 
| 52 | 
            +
            rescue LoadError
         | 
| 53 | 
            +
              # do not load if not supported
         | 
| 70 54 | 
             
            end
         | 
| 71 55 |  | 
| 72 | 
            -
            Irbtools.add_library 'ruby_info', thread: :ri
         | 
| 73 | 
            -
            Irbtools.add_library 'os', thread: :os
         | 
| 74 | 
            -
            Irbtools.add_library 'ruby_engine', thread: :re
         | 
| 75 | 
            -
            Irbtools.add_library 'ruby_version', thread: :rv
         | 
| 76 | 
            -
             | 
| 77 56 | 
             
            # # # load via autoload
         | 
| 78 57 |  | 
| 79 58 | 
             
            Irbtools.add_library 'code', :autoload => :Code do
         | 
| @@ -105,12 +84,6 @@ Irbtools.add_library :clipboard, :autoload => :Clipboard do | |
| 105 84 | 
             
                Clipboard.paste
         | 
| 106 85 | 
             
              end
         | 
| 107 86 |  | 
| 108 | 
            -
              # copies everything you have entered in this irb session
         | 
| 109 | 
            -
              def copy_input
         | 
| 110 | 
            -
                copy session_history
         | 
| 111 | 
            -
                "The session input history has been copied to the clipboard."
         | 
| 112 | 
            -
              end
         | 
| 113 | 
            -
             | 
| 114 87 | 
             
              # copies the output of all irb commands in this irb session
         | 
| 115 88 | 
             
              def copy_output
         | 
| 116 89 | 
             
                copy context.instance_variable_get(:@eval_history_values).inspect.gsub(/^\d+ (.*)/, '\1')
         | 
| @@ -119,7 +92,7 @@ Irbtools.add_library :clipboard, :autoload => :Clipboard do | |
| 119 92 | 
             
            end
         | 
| 120 93 |  | 
| 121 94 | 
             
            Irbtools.add_library :methodfinder, autoload: :MethodFinder do
         | 
| 122 | 
            -
              MethodFinder:: | 
| 95 | 
            +
              MethodFinder::INSTANCE_METHOD_IGNORELIST[:Object] += [:ri, :vi, :vim, :emacs, :nano, :mate, :mvim, :ed]
         | 
| 123 96 |  | 
| 124 97 | 
             
              def mf(*args, &block)
         | 
| 125 98 | 
             
                args.empty? ? MethodFinder : MethodFinder.find(*args, &block)
         | 
    
        data/lib/irbtools/version.rb
    CHANGED
    
    
    
        data/lib/irbtools.rb
    CHANGED
    
    | @@ -1,13 +1,5 @@ | |
| 1 1 | 
             
            require_relative 'irbtools/configure'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            # # # # #
         | 
| 4 | 
            -
            # Make sure we load IRB if we are not in RIPL
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            require 'irb' unless Irbtools.ripl?
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            # # # # #
         | 
| 9 | 
            -
            # Load irbtools extension packages
         | 
| 10 | 
            -
            Irbtools.load_packages
         | 
| 2 | 
            +
            require 'irb'
         | 
| 11 3 |  | 
| 12 4 | 
             
            # # # # #
         | 
| 13 5 | 
             
            # Load: start
         | 
| @@ -27,19 +19,11 @@ Irbtools.configure_irb! | |
| 27 19 |  | 
| 28 20 | 
             
            # # # # #
         | 
| 29 21 | 
             
            # Load: sub-session / after_rc
         | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 33 | 
            -
               | 
| 34 | 
            -
             | 
| 35 | 
            -
              end
         | 
| 36 | 
            -
            else
         | 
| 37 | 
            -
              original_irbrc_proc = IRB.conf[:IRB_RC]
         | 
| 38 | 
            -
              IRB.conf[:IRB_RC] = proc{
         | 
| 39 | 
            -
                Irbtools.load_libraries(Irbtools.libraries[:sub_session])
         | 
| 40 | 
            -
                original_irbrc_proc.call if original_irbrc_proc
         | 
| 41 | 
            -
              }
         | 
| 42 | 
            -
            end
         | 
| 22 | 
            +
            original_irbrc_proc = IRB.conf[:IRB_RC]
         | 
| 23 | 
            +
            IRB.conf[:IRB_RC] = proc{
         | 
| 24 | 
            +
              Irbtools.load_libraries(Irbtools.libraries[:sub_session])
         | 
| 25 | 
            +
              original_irbrc_proc.call if original_irbrc_proc
         | 
| 26 | 
            +
            }
         | 
| 43 27 |  | 
| 44 28 | 
             
            # # # # #
         | 
| 45 29 | 
             
            # Load: threads
         | 
    
        metadata
    CHANGED
    
    | @@ -1,43 +1,43 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: irbtools
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 4.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: 2022-12-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: irb
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - - " | 
| 17 | 
            +
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version:  | 
| 19 | 
            +
                    version: 1.6.2
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - - " | 
| 24 | 
            +
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version:  | 
| 26 | 
            +
                    version: 1.6.2
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 28 | 
             
              name: every_day_irb
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '2. | 
| 33 | 
            +
                    version: '2.2'
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '2. | 
| 40 | 
            +
                    version: '2.2'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: fancy_irb
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -98,20 +98,6 @@ dependencies: | |
| 98 98 | 
             
                - - ">="
         | 
| 99 99 | 
             
                  - !ruby/object:Gem::Version
         | 
| 100 100 | 
             
                    version: 0.7.3
         | 
| 101 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 102 | 
            -
              name: binding.repl
         | 
| 103 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 104 | 
            -
                requirements:
         | 
| 105 | 
            -
                - - "~>"
         | 
| 106 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 107 | 
            -
                    version: '3.0'
         | 
| 108 | 
            -
              type: :runtime
         | 
| 109 | 
            -
              prerelease: false
         | 
| 110 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 111 | 
            -
                requirements:
         | 
| 112 | 
            -
                - - "~>"
         | 
| 113 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 114 | 
            -
                    version: '3.0'
         | 
| 115 101 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 116 102 | 
             
              name: paint
         | 
| 117 103 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -186,14 +172,28 @@ dependencies: | |
| 186 172 | 
             
                requirements:
         | 
| 187 173 | 
             
                - - "~>"
         | 
| 188 174 | 
             
                  - !ruby/object:Gem::Version
         | 
| 189 | 
            -
                    version: ' | 
| 175 | 
            +
                    version: '2.1'
         | 
| 190 176 | 
             
              type: :runtime
         | 
| 191 177 | 
             
              prerelease: false
         | 
| 192 178 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 193 179 | 
             
                requirements:
         | 
| 194 180 | 
             
                - - "~>"
         | 
| 195 181 | 
             
                  - !ruby/object:Gem::Version
         | 
| 196 | 
            -
                    version: ' | 
| 182 | 
            +
                    version: '2.1'
         | 
| 183 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 184 | 
            +
              name: looksee
         | 
| 185 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 186 | 
            +
                requirements:
         | 
| 187 | 
            +
                - - "~>"
         | 
| 188 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 189 | 
            +
                    version: '5.0'
         | 
| 190 | 
            +
              type: :runtime
         | 
| 191 | 
            +
              prerelease: false
         | 
| 192 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 193 | 
            +
                requirements:
         | 
| 194 | 
            +
                - - "~>"
         | 
| 195 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 196 | 
            +
                    version: '5.0'
         | 
| 197 197 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 198 198 | 
             
              name: object_shadow
         | 
| 199 199 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -214,7 +214,7 @@ dependencies: | |
| 214 214 | 
             
                requirements:
         | 
| 215 215 | 
             
                - - ">="
         | 
| 216 216 | 
             
                  - !ruby/object:Gem::Version
         | 
| 217 | 
            -
                    version: 0.9. | 
| 217 | 
            +
                    version: 0.9.4
         | 
| 218 218 | 
             
                - - "<"
         | 
| 219 219 | 
             
                  - !ruby/object:Gem::Version
         | 
| 220 220 | 
             
                    version: '2.0'
         | 
| @@ -224,24 +224,24 @@ dependencies: | |
| 224 224 | 
             
                requirements:
         | 
| 225 225 | 
             
                - - ">="
         | 
| 226 226 | 
             
                  - !ruby/object:Gem::Version
         | 
| 227 | 
            -
                    version: 0.9. | 
| 227 | 
            +
                    version: 0.9.4
         | 
| 228 228 | 
             
                - - "<"
         | 
| 229 229 | 
             
                  - !ruby/object:Gem::Version
         | 
| 230 230 | 
             
                    version: '2.0'
         | 
| 231 231 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 232 | 
            -
              name:  | 
| 232 | 
            +
              name: core_docs
         | 
| 233 233 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 234 234 | 
             
                requirements:
         | 
| 235 235 | 
             
                - - "~>"
         | 
| 236 236 | 
             
                  - !ruby/object:Gem::Version
         | 
| 237 | 
            -
                    version: 0. | 
| 237 | 
            +
                    version: 0.9.9
         | 
| 238 238 | 
             
              type: :runtime
         | 
| 239 239 | 
             
              prerelease: false
         | 
| 240 240 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 241 241 | 
             
                requirements:
         | 
| 242 242 | 
             
                - - "~>"
         | 
| 243 243 | 
             
                  - !ruby/object:Gem::Version
         | 
| 244 | 
            -
                    version: 0. | 
| 244 | 
            +
                    version: 0.9.9
         | 
| 245 245 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 246 246 | 
             
              name: methodfinder
         | 
| 247 247 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -249,6 +249,9 @@ dependencies: | |
| 249 249 | 
             
                - - "~>"
         | 
| 250 250 | 
             
                  - !ruby/object:Gem::Version
         | 
| 251 251 | 
             
                    version: '2.2'
         | 
| 252 | 
            +
                - - ">="
         | 
| 253 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 254 | 
            +
                    version: 2.2.5
         | 
| 252 255 | 
             
              type: :runtime
         | 
| 253 256 | 
             
              prerelease: false
         | 
| 254 257 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -256,6 +259,9 @@ dependencies: | |
| 256 259 | 
             
                - - "~>"
         | 
| 257 260 | 
             
                  - !ruby/object:Gem::Version
         | 
| 258 261 | 
             
                    version: '2.2'
         | 
| 262 | 
            +
                - - ">="
         | 
| 263 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 264 | 
            +
                    version: 2.2.5
         | 
| 259 265 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 260 266 | 
             
              name: ruby_version
         | 
| 261 267 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -285,33 +291,25 @@ dependencies: | |
| 285 291 | 
             
                  - !ruby/object:Gem::Version
         | 
| 286 292 | 
             
                    version: '1.0'
         | 
| 287 293 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 288 | 
            -
              name:  | 
| 294 | 
            +
              name: os
         | 
| 289 295 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 290 296 | 
             
                requirements:
         | 
| 291 297 | 
             
                - - "~>"
         | 
| 292 298 | 
             
                  - !ruby/object:Gem::Version
         | 
| 293 | 
            -
                    version: '1. | 
| 294 | 
            -
              type: :runtime
         | 
| 295 | 
            -
              prerelease: false
         | 
| 296 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 297 | 
            -
                requirements:
         | 
| 298 | 
            -
                - - "~>"
         | 
| 299 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 300 | 
            -
                    version: '1.0'
         | 
| 301 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 302 | 
            -
              name: os
         | 
| 303 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 304 | 
            -
                requirements:
         | 
| 299 | 
            +
                    version: '1.1'
         | 
| 305 300 | 
             
                - - ">="
         | 
| 306 301 | 
             
                  - !ruby/object:Gem::Version
         | 
| 307 | 
            -
                    version:  | 
| 302 | 
            +
                    version: 1.1.4
         | 
| 308 303 | 
             
              type: :runtime
         | 
| 309 304 | 
             
              prerelease: false
         | 
| 310 305 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 311 306 | 
             
                requirements:
         | 
| 307 | 
            +
                - - "~>"
         | 
| 308 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 309 | 
            +
                    version: '1.1'
         | 
| 312 310 | 
             
                - - ">="
         | 
| 313 311 | 
             
                  - !ruby/object:Gem::Version
         | 
| 314 | 
            -
                    version:  | 
| 312 | 
            +
                    version: 1.1.4
         | 
| 315 313 | 
             
            description: The Irbtools make working with Ruby's IRB console more fun & productive.
         | 
| 316 314 | 
             
            email:
         | 
| 317 315 | 
             
            - hi@ruby.consulting
         | 
| @@ -331,6 +329,12 @@ files: | |
| 331 329 | 
             
            - irbtools.gemspec
         | 
| 332 330 | 
             
            - lib/irbtools.rb
         | 
| 333 331 | 
             
            - lib/irbtools/binding.rb
         | 
| 332 | 
            +
            - lib/irbtools/commands.rb
         | 
| 333 | 
            +
            - lib/irbtools/commands/code.rb
         | 
| 334 | 
            +
            - lib/irbtools/commands/howtocall.rb
         | 
| 335 | 
            +
            - lib/irbtools/commands/look.rb
         | 
| 336 | 
            +
            - lib/irbtools/commands/shadow.rb
         | 
| 337 | 
            +
            - lib/irbtools/commands/sys.rb
         | 
| 334 338 | 
             
            - lib/irbtools/configure.rb
         | 
| 335 339 | 
             
            - lib/irbtools/hirb.rb
         | 
| 336 340 | 
             
            - lib/irbtools/implementation.rb
         | 
| @@ -338,10 +342,11 @@ files: | |
| 338 342 | 
             
            - lib/irbtools/minimal.rb
         | 
| 339 343 | 
             
            - lib/irbtools/non_fancy.rb
         | 
| 340 344 | 
             
            - lib/irbtools/version.rb
         | 
| 341 | 
            -
            homepage: https:// | 
| 345 | 
            +
            homepage: https://github.com/janlelis/irbtools
         | 
| 342 346 | 
             
            licenses:
         | 
| 343 347 | 
             
            - MIT
         | 
| 344 | 
            -
            metadata: | 
| 348 | 
            +
            metadata:
         | 
| 349 | 
            +
              rubygems_mfa_required: 'true'
         | 
| 345 350 | 
             
            post_install_message: 
         | 
| 346 351 | 
             
            rdoc_options: []
         | 
| 347 352 | 
             
            require_paths:
         | 
| @@ -350,7 +355,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 350 355 | 
             
              requirements:
         | 
| 351 356 | 
             
              - - ">="
         | 
| 352 357 | 
             
                - !ruby/object:Gem::Version
         | 
| 353 | 
            -
                  version: ' | 
| 358 | 
            +
                  version: '3.0'
         | 
| 354 359 | 
             
              - - "<"
         | 
| 355 360 | 
             
                - !ruby/object:Gem::Version
         | 
| 356 361 | 
             
                  version: '4.0'
         | 
| @@ -360,7 +365,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 360 365 | 
             
                - !ruby/object:Gem::Version
         | 
| 361 366 | 
             
                  version: '0'
         | 
| 362 367 | 
             
            requirements: []
         | 
| 363 | 
            -
            rubygems_version: 3.1 | 
| 368 | 
            +
            rubygems_version: 3.4.1
         | 
| 364 369 | 
             
            signing_key: 
         | 
| 365 370 | 
             
            specification_version: 4
         | 
| 366 371 | 
             
            summary: Irbtools happy IRB.
         |