8 releases (5 breaking)

0.6.2 Jul 22, 2022
0.6.1 Jul 14, 2022
0.6.0 May 14, 2022
0.5.0 Jun 12, 2021
0.1.0 Dec 13, 2020

#1838 in Parser implementations

Download history 11576/week @ 2023-12-13 7194/week @ 2023-12-20 7508/week @ 2023-12-27 14865/week @ 2024-01-03 20867/week @ 2024-01-10 22298/week @ 2024-01-17 19158/week @ 2024-01-24 17755/week @ 2024-01-31 17791/week @ 2024-02-07 16718/week @ 2024-02-14 18177/week @ 2024-02-21 18047/week @ 2024-02-28 17597/week @ 2024-03-06 17885/week @ 2024-03-13 20727/week @ 2024-03-20 15151/week @ 2024-03-27

74,580 downloads per month
Used in 87 crates (25 directly)

MIT/Apache

57KB
1K SLoC

Rust CSS Color Parser Library

License crates.io Documentation Build Status codecov Total Downloads

Rust library for parsing CSS color string as defined in the W3C's CSS Color Module Level 4.

Supported Color Format

  • Named colors
  • RGB hexadecimal (with and without # prefix)
    • Short format #rgb
    • Short format with alpha #rgba
    • Long format #rrggbb
    • Long format with alpha #rrggbbaa
  • rgb() and rgba()
  • hsl() and hsla()
  • hwb()
  • lab()
  • lch()
  • hwba(), hsv(), hsva() - not in CSS standard.

Example Color Format

Click to expand!
transparent
gold
rebeccapurple
lime
#0f0
#0f0f
#00ff00
#00ff00ff
rgb(0,255,0)
rgb(0% 100% 0%)
rgb(0 255 0 / 100%)
rgba(0,255,0,1)
hsl(120,100%,50%)
hsl(120deg 100% 50%)
hsl(-240 100% 50%)
hsl(-240deg 100% 50%)
hsl(0.3333turn 100% 50%)
hsl(133.333grad 100% 50%)
hsl(2.0944rad 100% 50%)
hsla(120,100%,50%,100%)
hwb(120 0% 0%)
hwb(480deg 0% 0% / 100%)
hsv(120,100%,100%)
hsv(120deg 100% 100% / 100%)

Usage

Add this to your Cargo.toml

csscolorparser = "0.6.2"

Examples

Using csscolorparser::parse() function.

let c = csscolorparser::parse("rgb(100%,0%,0%)")?;

assert_eq!(c.to_array(), [1.0, 0.0, 0.0, 1.0]);
assert_eq!(c.to_rgba8(), [255, 0, 0, 255]);
assert_eq!(c.to_hex_string(), "#ff0000");
assert_eq!(c.to_rgb_string(), "rgb(255,0,0)");

Using parse() method on &str.

use csscolorparser::Color;

let c = "#ff00007f".parse::<Color>()?;

assert_eq!(c.to_rgba8(), [255, 0, 0, 127]);
assert_eq!(c.to_hex_string(), "#ff00007f");

Default Feature

  • named-colors: Enables parsing from named colors. Requires phf. Can be disabled using default-features = false.

Optional Features

  • lab: Enables parsing lab() and lch() color format.
  • rust-rgb: Enables converting from rgb crate types into Color.
  • cint: Enables converting cint crate types to and from Color.
  • serde: Enables serializing (into HEX string) and deserializing (from any supported string color format) using serde framework.

Similar Projects

Dependencies

~0–285KB