AccueilAccueil  PortailPortail  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  



Le Deal du moment : -15%
(Adhérents Fnac) LEGO® Star Wars™ ...
Voir le deal
552.49 €

Partagez
 

 [VXAce] Method_Missing

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Invité
Invité
avatar



[VXAce] Method_Missing Empty
MessageSujet: [VXAce] Method_Missing   [VXAce] Method_Missing Icon_minitimeMar 8 Jan 2013 - 16:19

Salut, je publies une features que j'ai écrite pour l'event-extender mais que je publie en stand-alone.
Il s'agit d'une modification de la méthode method_missing qui est appelée lorsqu'on utilise une méthode qui n'existe pas.
Au lieu de lancer une erreur en ne disant que "la méthode n'existe pas", elle suggère des méthodes dont le nom ressemblerait :
Un exemple, j'essaie d'utiliser la commande square_between de l'event-extender, elle n'existe pas, sa vraie appellation est squares_between, voici le message d'erreur que j'aurai avec ce petit script:
[VXAce] Method_Missing 8kNVT4YXRaDdDNvFcw7Q1sKA8
Si comme moi, vous faites beaucoup de fautes de frappe ^^'
Voici le code:
Code:
#==============================================================================
# ** String
#------------------------------------------------------------------------------
#  A String object holds and manipulates an arbitrary sequence of bytes,
#  typically representing characters.
#==============================================================================

class String
  #--------------------------------------------------------------------------
  # * Calcul the Damerau Levenshtein 's Distance
  #--------------------------------------------------------------------------
  def damerau_levenshtein(other)
    n, m = self.length, other.length
    return m if n == 0
    return n if m == 0
    matrix  = Array.new(n+1) do |i|
      Array.new(m+1) do |j|
        if i == 0 then j
        elsif j == 0 then i
        else 0 end
      end
    end
    (1..n).each do |i|
      (1..m).each do |j|
        cost = (self[i] == other[j]) ? 0 : 1
        delete = matrix[i-1][j] + 1
        insert = matrix[i][j-1] + 1
        substitution = matrix[i-1][j-1] + cost
        matrix[i][j] = [delete, insert, substitution].min
        if (i > 1) && (j > 1) && (self[i] == other[j-1]) and (self[i-1] == other[j])
          matrix[i][j] = [matrix[i][j], matrix[i-2][j-2] + cost].min
        end
      end
    end
    return matrix.last.last
  end
end

#==============================================================================
# ** Object
#------------------------------------------------------------------------------
#  Generic behaviour
#==============================================================================

class Object
  #--------------------------------------------------------------------------
  # * Method suggestions
  #--------------------------------------------------------------------------
  def method_missing(*args)
    keywords = self.methods + self.singleton_methods + self.class.instance_methods(false)
    keywords += self.instance_variables
    keywords.uniq!.collect!{|i|i.to_s}
    keywords.sort_by!{|o| o.damerau_levenshtein(args[0].to_s)}
    msg = "#{args[0]} doesn't exists did you mean maybe #{keywords[0]} or #{keywords[1]}  ?"
    raise(NoMethodError, msg)
  end
end

A placer au dessus de main.
Il est possible que certaines méthodes écrasent celle-ci (mais je ne suis pas devin).
Cet outil sera intégré par défaut dans l'Event Extender (nouvelle version).
Revenir en haut Aller en bas
JeanMarieJulio
Poulet carnivore Lv.2
Poulet carnivore Lv.2
JeanMarieJulio


Avertissements : Banni !
Inscrit le : 23/12/2012
Messages : 14

[VXAce] Method_Missing Empty
MessageSujet: Re: [VXAce] Method_Missing   [VXAce] Method_Missing Icon_minitimeVen 11 Jan 2013 - 14:22

Je trouve assez dommage que personne n'ai réagi sur la publication de ce, bien qu'assez mineur, script.
Pour un informaticien pratiquant Ruby avec talent, je doute que ce soit une révolution mais un un simple débutant je pense que le fait d'avoir un détail un peu plus précis d'une erreur de syntaxe peut être salvateur.

Je ne pourrais cependant que commenter l'utilisation de la distance de Damerau-Levenshtein que j'ai abordé lors d'un de mes cours. C'est assez sympathique d'en voir une application dans ce contexte çi (bien qu'il s'agisse plus d'un outil pour développeur qu'une réelle fonctionnalité pour un jeu), j'espère que cela pourra donner des idées à certains makers ingénieux qui souhaiteraient ajouter à leur jeu une dimension linguistique. Bon c'est vrai que ce genre de technique est surtout utilisé pour les correcteurs orthographiques dans des logiciels tels que Word ou Firefox.

Nous te remercions d'avoir partagé ce script !
Revenir en haut Aller en bas
servus
Mage Lv.11
Mage Lv.11
servus


Masculin Age : 24
Inscrit le : 25/03/2012
Messages : 558

[VXAce] Method_Missing Empty
MessageSujet: Re: [VXAce] Method_Missing   [VXAce] Method_Missing Icon_minitimeVen 11 Jan 2013 - 20:11

Comme déjà dit sur zarok merci du partage,moi qui fait beaucoup de fautes de frappes
Revenir en haut Aller en bas
RitoJS
Modérateur
Modérateur
RitoJS


Masculin Age : 29
Inscrit le : 22/12/2011
Messages : 1600

[VXAce] Method_Missing Empty
MessageSujet: Re: [VXAce] Method_Missing   [VXAce] Method_Missing Icon_minitimeSam 26 Jan 2013 - 1:21

Merci du partage.
+5 points Scripts.
Revenir en haut Aller en bas
http://lunarito.wordpress.com/
S4suk3
Citadin Lv.7
Citadin Lv.7
S4suk3


Masculin Inscrit le : 07/09/2011
Messages : 186

[VXAce] Method_Missing Empty
MessageSujet: Re: [VXAce] Method_Missing   [VXAce] Method_Missing Icon_minitimeDim 27 Jan 2013 - 18:29

Vraiment pas dingue.
L'idée est bonne mais l'implémentation de D-L est vraiment pas optimisée. Tu n'aurais pu traiter QUE la diagonale. Et le parcours de toutes les méthodes (filtres) rend le script gourmand et pose énormément de problème pour l'affichage des enfants de Scene_File...
Bref. Une bonne idée, une implémentation douteuse.
Revenir en haut Aller en bas
http://fa.gri.im/~mspawn/
Invité
Invité
avatar



[VXAce] Method_Missing Empty
MessageSujet: Re: [VXAce] Method_Missing   [VXAce] Method_Missing Icon_minitimeDim 27 Jan 2013 - 20:45

Effectivement, je pense améliorer ça. En Top-level implémentation ça ne poserait pas de soucis. Et a priori, ce script n'est appelé qu'en cas de méthode inexistante (donc entrainant un plantage du jeu) alors la question de performance est un peu... excessive. Ceci dit, tu as raison, je vais essayer d'améliorer ça Smile
Revenir en haut Aller en bas
Contenu sponsorisé




[VXAce] Method_Missing Empty
MessageSujet: Re: [VXAce] Method_Missing   [VXAce] Method_Missing Icon_minitime

Revenir en haut Aller en bas
 

[VXAce] Method_Missing

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» [VXAce] Conversion du script Credits Vx=>VxAce
» [VXace] SBS
» [VXace] A-RPG de Xiderowg
» [VXAce]Pop up Item
» [VXAce] Kouett

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX.Ace - RGSS3 :: Utilitaires-
Créer un forum | ©phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit