[Ror-es] Color válido

Damian Janowski damian.janowski at gmail.com
Fri Sep 29 14:35:30 GMT 2006


Buenísimo Juanjo, sigo un poco más, para poder hacer:

<%= sanitize_color 255 %>
-> rgb(255,255,255)

<%= sanitize_color [255, 0, 0] %>
-> rgb(255,0,0)

<%= sanitize_color 'black' %>
-> black

<%= sanitize_color 'negro' %>
-> transparent

<%= sanitize_color 'fff' %>
-> #FFF


CSS_COLOR_NAMES = %w(aqua black blue fuchsia gray green lime maroon
navy olive purple red silver teal white yellow)

  def sanitize_color(color, default = 'transparent')
    color = [color, color, color] if color.is_a?(Integer)
    return "rgb(#{color.map { |i| i > 255 ? 255 : i }.join(',')})" if
color.is_a?(Array) && color.size == 3
    return color if CSS_COLOR_NAMES.include?(color)
    color = color.to_s.chomp.upcase
    color.insert(0, '#') unless color.first == '#'
    color =~ /\#([0-9A-F]{3}|[0-9A-F]{6})/ ? color : default
  end

On 9/29/06, Juanjo Bazán <jjbazan at kflink.com> wrote:
> Buena idea.
> Yo le añadiría un detalle: el que se pueda especificar un color por defecto:
>
>   def sanitize_color(color , default=nil)
>     color = color.to_s.chomp.upcase
>     color.insert(0, '#') unless color.first == '#'
>     color =~ /\#([0-9A-F]{3}|[0-9A-F]{6})/ ? color : default
>   end
>
> Así se puede hacer algo así:
> <%= sanitize_color @post.color, 'black' %> o
> <%= sanitize_color @post.color, '#442271' %>
>
> Salu2!
> Juanjo
>
>
>
>
> ----- Original Message -----
> From: "Damian Janowski" <damian.janowski at gmail.com>
> To: "La lista sobre Ruby On Rails (rubyonrails.com) en castellano"
> <ror-es at lists.simplelogica.net>
> Sent: Friday, September 29, 2006 3:20 PM
> Subject: [Ror-es] Color válido
>
>
> Hola amigos
>
> Les mando este snippet para validar que un color en hexadecimal sea
> válido y que contenga el numeral inicial, como para hacer algo como:
>
> <span style="color: <%= sanitize_color @post.color %>"><%= @post.title
> %></span>
>
> Si a alguien se le ocurre cómo mejorarlo, etc., bienvenido :)
> Además, si a alguien le parece que el nombre sanitize_color no es
> apropiado, comentemelo por favor (yo creo haber seguido el
> sanitize_path, etc.)
>
>   def sanitize_color(color)
>     color = color.to_s.chomp.upcase
>     color.insert(0, '#') unless color.first == '#'
>     color =~ /\#([0-9A-F]{3}|[0-9A-F]{6})/ ? color : nil
>   end
>
> Faltaría hacer un helper que ponga el atributo "color: " sólo si
> sanitize_color no devuelve nil, porque si no es css inválido.
>
> El selector de color que estoy usando es http://colourmod.com  (el que sale
> $2)
>
> Saludos!
> --
> Damian Janowski
> damian.janowski at gmail.com
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>


-- 
Damian Janowski
damian.janowski at gmail.com


More information about the Ror-es mailing list