Posté par totof2000 .
En réponse au message Système de plugins.
Évalué à 2.
Dernière modification le 17 août 2013 à 16:44.
J'ai pas pu m'empêcher de tester ... Méchant, j'avais d'autres choses à faire ... :)
Voici la piste que je prendrais :
#!/usr/pkg/bin/ruby
module Event1
def self.onEvent1()
puts("Event 1 deected")
end
end
class Test
def method_missing(name, *args)
puts("Method missing : #{name}, args: #{args}")
mod=name.to_s().sub("on","")
code=%Q{#{mod}.#{name.to_s()}}
puts(code)
begin
eval(code)
rescue NameError
puts("Module #{mod} does not exists")
end
end
end
t=Test.new()
t.onEvent1()
t.onEvent2()
Le module event2 n'existe pas donc tu auras une erreur interceptée par begin/rescue (traitement des exceptions en Ruby).
Il y a une partie de metaprogrammation pour appeler le bon module, je peux expliquer si tu comprends pas (mais là j'ai pas le temps, peut-être ce soir si ça t'intéresse).
En tout cas si tu arrives à comprendre ça, et que ça peut t'aider à smplifier ton code, tant mieux.
[^] # Re: Pour ma part, je ne passerais pas par des classes mais par des mixin
Posté par totof2000 . En réponse au message Système de plugins. Évalué à 2. Dernière modification le 17 août 2013 à 16:44.
J'ai pas pu m'empêcher de tester ... Méchant, j'avais d'autres choses à faire ... :)
Voici la piste que je prendrais :
Le module event2 n'existe pas donc tu auras une erreur interceptée par begin/rescue (traitement des exceptions en Ruby).
Il y a une partie de metaprogrammation pour appeler le bon module, je peux expliquer si tu comprends pas (mais là j'ai pas le temps, peut-être ce soir si ça t'intéresse).
En tout cas si tu arrives à comprendre ça, et que ça peut t'aider à smplifier ton code, tant mieux.