vendredi, février 15, 2008

Comment tester null ou chaine (string) vide

Récemment dans un petit script j'avais le code suivant:
unless(item.nil? or item.emty?)
  ...
end
Où item est soit nil, soit "", soit "foo". Je n'aimais pas faire ça partout dans le code, je voulais être plus "DRY" en faisant quelque chose comme:
unless(item.blank?)
  ...
end
La solution que j'ai trouvé dans un premier temps pour résoudre ce problème "esthétique" était de déclarer la fonction blank? dans String et NilClass; ça conne ça:

class NilClass
  def blank?
    true
  end
end

class String
  def blank?
    to_s.empty?
  end
end
Mais Benjamin C. m'a montrer une manière plus élégante en étendant Object:
class Object
  def blank?
    respond_to?(:empty?) ? empty? : !self
  end
end
Code re-pompé honteusement de rails.
Technorati tags:

1 commentaire:

Benjamin Cabé a dit…

Honteusement toi-même :)