Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров710
После поста пользователя 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
Теги:
Хабы:
Всего голосов 28: ↑20 и ↓8+12
Комментарии4

Публикации

Истории

Работа

Ruby on Rails
7 вакансий
Программист Ruby
5 вакансий

Ближайшие события

Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
OTUS CONF: GameDev
Дата30 мая
Время19:00 – 20:30
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область