=?iso-8859-1?q?Color_v=E1lido?=

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 :slight_smile:
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 :slight_smile:
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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs