Ruby Method Finder
fabs em 09/03/2009Eu nunca tinha experimentado SmallTalk antes do Dojo da semana passada aqui no ime. Confesso que a sintaxe muito intuitiva as vezes deixava a desejar, expressando mensagens do tipo “should not do: #not” ou semelhantes.
Entretanto, uma funcionalidade do Squeak me atraiu bastante, chamava-se MethodFinder. Como você pode ver na imagem ao lado. Nessa “janelinha”, ao se escrever:
2. 2. 4
Aparece a lista de métodos que podem ser chamados no objeto 2, passando o parâmetro 2 (podiam ser mais) e que devolvem o valor 4 como resultado, que são.
* (vezes)
+ (mais)
raisedTo (elevado a ..)
raisedToInteger
Decidi então implementar algo em ruby, fiz durante uma aula de concorrentes portanto não está bem escrito, mas funciona :-). O resultado chama-se method_finder pode ser obtido no github. Para usar basta fazer o “require” do arquivo method_finder.rb, ele vai criar uma função no kernel do ruby chamada match_method. Vejam os resultados:
require ‘method_finder’ #=> true
match_method(2,[2],4) #=> ["*", "**", "+"]
match_method([1],[2],[1,2]) #=> ["<<", "push"]
match_method([1],[2,3],[1,2,3]) #=> ["push"]
match_method([3,2,1],[],[1,2,3]) #=> ["reverse", "reverse!", "sort", "sort!"]
Ainda não suporta blocos, bem como preciso fazer um gem disso eventualmente. Contribuições aceitas.