def rgba(*args)
case args.size
when 2
color, alpha = args
assert_type color, :Color, :color
if calc?(alpha)
unquoted_string("rgba(#{color.red}, #{color.green}, #{color.blue}, #{alpha})")
else
assert_type alpha, :Number, :alpha
check_alpha_unit alpha, 'rgba'
color.with(:alpha => alpha.value)
end
when 4
red, green, blue, alpha = args
if calc?(red) || calc?(green) || calc?(blue) || calc?(alpha)
unquoted_string("rgba(#{red}, #{green}, #{blue}, #{alpha})")
else
rgba(rgb(red, green, blue), alpha)
end
else
raise ArgumentError.new("wrong number of arguments (#{args.size} for 4)")
end
end