| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
It's duplicative since you can use `change-prompt simple`.
|
|
|
|
| |
Fixes #1829 (Merge `list-prompts` and `change-prompt` into one command)
|
|
|
|
| |
Fixes #1836 (Add an API for adding new prompts)
|
|
|
|
|
|
| |
`Pry::Platform` really looks like a helper and therefore should be defined as
one. Invoking `Pry::Platform` emits a warning now. Users are encouraged to use
`Pry::Helpers::Platform`.
|
|
|
|
|
| |
It makes a lot more sense to keep these procs under the `Pry::Prompt` namespace
than `Pry`, which is already heavily populated by other various things.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, the Ring class is written with help of Hash as backend store.
According to the comments, the implementation should behave like a circular
buffer, however it doesn't. Upon reaching maximum capacity Ring doesn't replace
old elements but keeps writing to new cells, deleting old cells, so that the
hash contains `nil` entries.
The new implementation is based on Array and seems to be closer to the actual
Ring. Older elemens get overwritten with newer ones.
This class also includes Enumerable, however none of our APIs take advantage of
it, so it seems like an overkill. There was also a problem with with this API
because of the above-mentioned nils. For example, if the ring exceeds its
maximum size, then callin `Enumerable#first` on it returns `nil`.
The new implementation deals with this with removal of Enumerable. The `#[]`
syntax is preserved, and now `ring[0]` returns an actual element instead of
`nil`. In case users need the Enumerable functionality, they can call
`Ring#to_a` to build the array, which supports the wanted methods.
As for the speed, the new implementation is:
* slower overall because it's thread-safe
* faster without mutexes for `#<<`
* slower without mutexes for `#[]`
Benchmark for old implementation:
```
Warming up --------------------------------------
Ring#<< 223.451k i/100ms
Ring#[] 2.837k i/100ms
Calculating -------------------------------------
Ring#<< 223.157B (± 3.4%) i/s - 778.097B
Ring#[] 82.485M (± 9.4%) i/s - 402.602M in 4.957792s
```
Benchmark for this implementation:
```
Warming up --------------------------------------
Ring#<< 211.587k i/100ms
Ring#[] 1.974k i/100ms
Calculating -------------------------------------
Ring#<< 211.385B (± 2.8%) i/s - 698.439B
Ring#[] 40.292M (±17.0%) i/s - 190.069M in 4.971195s
```
The benchmark:
```rb
require './lib/pry'
require 'benchmark/ips'
Benchmark.ips do |x|
empty_ring = Pry::Ring.new(100)
populated_ring = Pry::Ring.new(100)
150.times { |i| populated_ring << i }
x.report("Ring#<<") do |times|
empty_ring << times
end
x.report("Ring#[]") do |times|
populated_ring[0]
populated_ring[1]
populated_ring[2]
populated_ring[-1]
populated_ring[-2]
populated_ring[-3]
populated_ring[1..2]
populated_ring[-2..-1]
populated_ring[-2..3]
populated_ring[0..-1]
populated_ring[2..-1]
populated_ring[-1..10]
populated_ring[-1..0]
populated_ring[-1..1]
end
end
```
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replaces #1713
(Pry local config The following methods take a third required argument, an
instance of Pry)
This fulfills queries to `_pry_.config` in:
* Pry::Helpers.tablify
* Pry::Helpers.tablify_to_screen_width
* Pry::Helpers.tablify_or_one_line
Unlike #1713 this PR doesn't introduce any breaking changes thanks to the
default parameter value trick, *except* the `Table#new` signature.
Overall, this brings the code in line with how the rest of Pry works.
|
| |
|
| |
|
|
|
|
|
|
| |
b031df2f2f5850ee6e9018f33d35f3485a9b0423 added this command but never made use
of this variable. The method is being passed an argument but it never uses
it. Why? Idk, needs investigation.
|
|
|
|
|
| |
This command is quite obscure: no docs and the parameter it expects is not used
in the method. For simplicity, I am leaving the comment to check later.
|
|
|
|
|
|
| |
The way it's written is still a little bit confusing, however for simplicity of
https://github.com/pry/pry/pull/1801 I am leaving this as is and resolving the
parameter issue only.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Fixes #1449 (support exceptions with cause)
Replaces #1525
|
|
|
|
|
|
|
| |
Fixes https://github.com/pry/pry/issues/1452.
($ RuntimeError.exception fails)
Alternative to https://github.com/pry/pry/pull/1453.
|
| |
|
| |
|
|
|
| |
screen Pry is running in regardless of platform (Windows or UNIX-like).
|
|
|
|
|
|
|
|
|
|
|
|
| |
thanks to @dannytatom for the original gem-stats rubygems plugin, which
inspired this Pry command.
it returns some general statistics about a rubygem when given a name.
note that rubygems rate limits the requests, and thanks to that this
command can be a "Fail Whale" although the error is handled gracefully.
This commit depends on pull request:
https://github.com/pry/pry/pull/1701
|
|
|
|
| |
instead (as you would with helper functions from BaseHelpers and
CommandHelpers)
|
|
|
|
| |
`/' operator (#1667)
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Add \n in the end of expected error message
|
|\
| |
| | |
Feature/add histignore
|
| | |
|
| | |
|
|/ |
|
| |
|
| |
|
|\
| |
| |
| | |
https://github.com/dalizard/pry into dalizard-ri-command-requires-argument
|
| |
| |
| |
| |
| | |
When the ri command is called within a pry session, it will prompt
you to supply an argument if none is passed.
|
| | |
|
| | |
|
| |
| |
| |
| | |
The original code was confusing and had incompatible style.
|
| | |
|
| | |
|
| | |
|
| | |
|