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:
<%= @post.title
%>
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!
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 J.” [email protected]
To: “La lista sobre Ruby On Rails (rubyonrails.com) en castellano”
[email protected]
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:
<%= @post.title
%>
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 J.
[email protected]
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
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