Rust library for parsing CSS color string as defined in the W3C's CSS Color Module Level 4.
Supported Color Format
Absolute Color
- Named colors
- RGB hexadecimal (with and without
#prefix)- Short format
#rgb - Short format with alpha
#rgba - Long format
#rrggbb - Long format with alpha
#rrggbbaa
- Short format
rgb()andrgba()hsl()andhsla()hwb()lab()lch()oklab()oklch()hwba(),hsv(),hsva()- not in CSS standard.
Relative Color
Example:
rgb(from red r g calc(b + 20))
rgb(from gold calc(((r + g) + b) / 3) 127 127)
hwb(from #bad455 calc(h + 35) w b)
hsl(from purple h s l / 0.5)
Relative Color Format Limitations
Doesn't support percentage.
calc() only support the following expression:
[OPERAND] [OPERATOR] [OPERAND]
OPERAND can be a number, a variable (r, g, b, alpha etc. depends on color function) or another expression wrapped in parenthesis.
OPERATOR is one of +, -, * or /.
Not Supported
rgb(from #bad455 100% g b)
rgb(from #bad455 r g b / 50%)
rgb(from #bad455 calc(r+g-30) 90 b)
OK
rgb(from #bad455 255 g b)
rgb(from #bad455 r g b / 0.5)
rgb(from #bad455 calc(r+15) 90 b)
rgb(from #bad455 calc((r+g)-30) 90 b)
hwb(from rgb(from rgb(100% 0% 50%) r g 75) calc(h+25) w b)
Usage
Add this to your Cargo.toml
= "0.8"
Examples
Using csscolorparser::parse() function.
let c = parse?;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
assert_eq!;
Using parse() method on &str.
use Color;
let c: Color = "#ff00007f".parse?;
assert_eq!;
assert_eq!;
Features
Default
- std: Using the standard library.
- named-colors: Enables parsing from named colors.
Default features can be disabled using default-features = false.
Optional
- rust-rgb: Enables converting from
rgbcrate types intoColor. - cint: Enables converting
cintcrate types to and fromColor. - serde: Enables serializing (into HEX string) and deserializing (from any supported string color format) using
serdeframework.
Similar Projects
- csscolorparser (Go)
- csscolorparser (Javascript)