Pull to refresh

Method Finder для Ruby по мотивом Squeak'овского

Reading time2 min
Views702
После поста пользователя aovoe захотелось что-то аналогичное для ruby. Наспех был накидан код, который умеет искать по селекторам без аргументов (например «hello».upcase).
Примеры:

  irb(main):001:0> "hello".suggest_method("HELLO")
  => ["upcase", "swapcase"]
  
  irb(main):002:0> "hello".suggest_method("Hello")
  => "capitalize"
  
  irb(main):007:0> Date.parse('13 Sep 2009').suggest_method(256) # Programmer's Day
  => "yday"
  
  irb(main):009:0> 1.01.suggest_method(1)
  => ["prec_i", "round", "truncate", "to_i", "to_int", "floor"]
  
  irb(main):010:0> 1.01.suggest_method(2)
  => "ceil"


MethodFinder может учитывать и несколько результатов, например:

  irb(main):011:0> MethodFinder.suggest_method(-1.01 => -2, 1.01 => 1)
  => "floor"

  irb(main):001:0> MethodFinder.suggest_method(-1.01 => -1, 1.01 => 1)
  => ["to_int", "round", "to_i", "prec_i", "truncate"]


Update:
Теперь и по селекторам с аргументами

  irb(main):005:0> "hello ".suggest_method("hello world", "world")
  => ["+", "concat", "<<"]
  
  irb(main):003:0> MethodFinder.suggest_method([2, 4, 2], [[2], [2, 2], 2])
  ./method_finder.rb:20: warning: do not use Fixnums as Symbols
  => "*"

Сорцы на гитхабе: github.com/mholub/method_finder/tree/master

Update:
Сие есть велосипед, ибо уже куча народа написала аналоги, например, andy@nobugs.org
www.nobugs.org/developer/ruby/method_finder.html
Улучшенная версия:
redhanded.hobix.com/inspect/stickItInYourIrbrcMethodfinder.html
Tags:
Hubs:
+12
Comments4

Articles

Change theme settings