Linux, Open-source, Programação e Produtividade

Ruby Method Finder

fabs em 09/03/2009

Eu 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.

Creative Commons License
Ruby Method Finder de fabs está licenciado sob Creative Commons License.