Dagi3d v4

Añadiendo emoticonos

Para seguir practicando con ruby pensé en añadir la opción de los emoticonos para el weblog, de tal manera que expresiones tales como :) o 8) fuesen sustituidas por imágenes como face-smile.png o face-glasses.png y esta fue la solución a la que llegué:

lib/emotes.rb
 module Emotes

  class Emotes

    @@expressions = {
      ":)" => "face-smile.png",
      ";)" => "face-wink.png",
      "8)" => "face-glasses.png",
      ":D" => "face-smile-big.png",
      "xD" => "face-grin.png",
      "XD" => "face-grin.png",
      ":(" => "face-sad.png",
      ":O" => "face-surprise.png",
      "}:D" => "face-devil-grin.png",
      "}:)" => "face-devil-grin.png",
      ":*" => "face-kiss.png",
      "O:)" => "face-angel.png" 
    }

    def Emotes.parse(text, location = nil)

      emoticon_text = text.dup

      @@expressions.each {
        |key, value|
        key = Regexp.escape(key)
        emoticon_text.gsub!(/(\s+)#{key}/) {
        $1 + "<img src=\"#{location}#{value}\" class=\"emote\" alt=\"#{value}\" />" 
        }          
      }  

      emoticon_text
    end

    def parse(text, location = nil)
      Emotes.parse(text, location)
    end
  end

end
app/helpers/application_helper.rb
module ApplicationHelper

  #emotes 
  def emotes(text)
    Emotes::Emotes.parse(text, "/images/emotes/")
  end
end

Los emoticonos disponibles están sacados del proyecto Tango y son estos:

:) => face-smile.png
;) => face-wink.png
8) => face-glasses.png
:D => face-smile-big.png
xD => face-grin.png
XD => face-grin.png
:( => face-sad.png
:O => face-surprise.png
}:) => face-devil-grin.png
}:D => face-devil-grin.png
:* => face-kiss.png
O:) => face-angel.png

Bigotitos y Bellamy
25/01/2006 21:38

Son chulisimos…Me apunto la pagina porque el diseño de los iconos que tienen nos chana bastante…

Deja un comentario
*: campos obligatorios. La dirección de correo no será publicada