├── .gitignore ├── lib └── yeah_i_did.rb ├── yeah_i_did.gemspec ├── Readme.md └── test └── test.rb /.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | -------------------------------------------------------------------------------- /lib/yeah_i_did.rb: -------------------------------------------------------------------------------- 1 | module DidYouMean 2 | def self.yeah_i_did 3 | begin 4 | yield 5 | rescue NoMethodError => e 6 | e.receiver.send(e.corrections.first, *e.args) 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /yeah_i_did.gemspec: -------------------------------------------------------------------------------- 1 | Gem::Specification.new do |s| 2 | s.name = "yeah_i_did" 3 | s.version = "1.0.0" 4 | s.author = "Will Leinweber" 5 | s.email = "will@bitfission.com" 6 | s.summary = "you know what I mean" 7 | s.description = "Helpfully fixes your typos" 8 | s.files = ['lib/yeah_i_did.rb'] 9 | end 10 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | # install 2 | ``` 3 | gem install yeah_i_did 4 | ``` 5 | 6 | # use 7 | ``` 8 | [1] pry(main)> require 'yeah_i_did' 9 | => true 10 | [2] pry(main)> putz "oh no" 11 | NoMethodError: undefined method `putz' for main:Object 12 | Did you mean? puts 13 | putc 14 | from (pry):2:in `__pry__' 15 | [3] pry(main)> DidYouMean.yeah_i_did { putz "aw yeah" } 16 | aw yeah 17 | => nil 18 | ``` 19 | -------------------------------------------------------------------------------- /test/test.rb: -------------------------------------------------------------------------------- 1 | require "minitest/autorun" 2 | require File.expand_path('../lib/yeah_i_did', File.dirname(__FILE__)) 3 | 4 | class Aa 5 | def foo(a=3, b=4) 6 | a+b 7 | end 8 | end 9 | 10 | class TestMethodMissing < Minitest::Test 11 | def test_no_args 12 | result = DidYouMean.yeah_i_did { Aa.new.fo } 13 | assert_equal 7, result 14 | end 15 | 16 | def test_one_arg 17 | result = DidYouMean.yeah_i_did { Aa.new.fo(1) } 18 | assert_equal 5, result 19 | end 20 | 21 | def test_two_args 22 | result = DidYouMean.yeah_i_did { Aa.new.fo(1, 2) } 23 | assert_equal 3, result 24 | end 25 | end 26 | 27 | --------------------------------------------------------------------------------