yes_i_did 1.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 +7 -0
- data/lib/yes_i_did.rb +56 -0
- data/yes_i_did.gemspec +14 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 38a00ca0efe986b3fcf6ef4045baaeca7a8258c87e1351f5157c8ffe8fc6b529
|
4
|
+
data.tar.gz: a69948f3cbbb3c9a013eb493940f4e1fddc2456f46d957fece1935358fbea8ea
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f6d4cad5cbdaffd0e6a8d9ad7972ecf765a9b42a1f5920e3dbc0f02814af6ffb80b1b227e801ddb890b9b8101fdeb634f222efee49326fd7f555ff1d9de38b27
|
7
|
+
data.tar.gz: 6931a78b93a0d98e5c480e5216af439a0b615ecacf2bdbad0033d21b941b0ccedd6cf2dbed27820ef77a8be3be6945849fff7ddfcdf6573e59417db8c57841bd
|
data/lib/yes_i_did.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
def yes
|
2
|
+
# This is a proc so that it can return from the "yes" function
|
3
|
+
error = proc do |msg|
|
4
|
+
puts IRB::Color.colorize("yes: #{msg}", ['RED'])
|
5
|
+
return
|
6
|
+
end
|
7
|
+
|
8
|
+
# Get the invalid name and the suggestion replacements
|
9
|
+
exception = $!
|
10
|
+
|
11
|
+
error.("last command didn't raise an exception") if exception.nil?
|
12
|
+
error.("unsupported error type #{exception.class}") unless exception.is_a?(NameError)
|
13
|
+
|
14
|
+
corrections = exception.corrections
|
15
|
+
error.("there are multiple possible corrections") if corrections.length > 1
|
16
|
+
error.("there are no corrections") if corrections.empty?
|
17
|
+
|
18
|
+
# Get the original, incorrect name as a string
|
19
|
+
checker = DidYouMean::NameErrorCheckers.new(exception)
|
20
|
+
case checker
|
21
|
+
when DidYouMean::ClassNameChecker
|
22
|
+
original_name = checker.class_name
|
23
|
+
when DidYouMean::VariableNameChecker
|
24
|
+
original_name = checker.name
|
25
|
+
else
|
26
|
+
error.("couldn't find a matching DidYouMean checker - this is a bug!")
|
27
|
+
end
|
28
|
+
original_name = original_name.to_s
|
29
|
+
|
30
|
+
# Get the last IRB command run
|
31
|
+
previous_command = IRB.CurrentContext.io.line(-2)
|
32
|
+
|
33
|
+
# Replace the original with the correction, but only replace a complete
|
34
|
+
# identifier
|
35
|
+
replacements_made = 0
|
36
|
+
fixed_command = previous_command.gsub(/[a-zA-Z_][a-zA-Z_0-9]*[\?!]?/) do |match|
|
37
|
+
if match == original_name
|
38
|
+
# Replace with correction
|
39
|
+
replacements_made += 1
|
40
|
+
corrections.first.to_s
|
41
|
+
else
|
42
|
+
# Keep the same
|
43
|
+
match
|
44
|
+
end
|
45
|
+
end
|
46
|
+
error.('couldn\'t make replacements, sorry!') if replacements_made.zero?
|
47
|
+
|
48
|
+
# Print the altered code
|
49
|
+
prompt_pad = ' ' * IRB.CurrentContext.io.prompt.length
|
50
|
+
output_fixed_command = fixed_command.each_line.map { |line| prompt_pad + line }.join.chomp
|
51
|
+
message = IRB::Color.colorize(output_fixed_command, ['GREEN'])
|
52
|
+
puts message
|
53
|
+
|
54
|
+
# Run it
|
55
|
+
eval(fixed_command, IRB.CurrentContext.workspace.binding)
|
56
|
+
end
|
data/yes_i_did.gemspec
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
Gem::Specification.new do |spec|
|
3
|
+
spec.name = "yes_i_did"
|
4
|
+
spec.version = '1.0.0'
|
5
|
+
spec.authors = ["Aaron Christiansen"]
|
6
|
+
spec.email = ["hello@aaronc.cc"]
|
7
|
+
|
8
|
+
spec.summary = %q{Re-run code with did_you_mean suggestions in IRB}
|
9
|
+
spec.homepage = "https://github.com/AaronC81/yes_i_did"
|
10
|
+
spec.license = "MIT"
|
11
|
+
|
12
|
+
spec.files = ['lib/yes_i_did.rb', 'yes_i_did.gemspec']
|
13
|
+
spec.require_paths = ["lib"]
|
14
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: yes_i_did
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Aaron Christiansen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-04-04 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email:
|
15
|
+
- hello@aaronc.cc
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/yes_i_did.rb
|
21
|
+
- yes_i_did.gemspec
|
22
|
+
homepage: https://github.com/AaronC81/yes_i_did
|
23
|
+
licenses:
|
24
|
+
- MIT
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubygems_version: 3.0.3
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Re-run code with did_you_mean suggestions in IRB
|
45
|
+
test_files: []
|