A Ruby implementation of HSLuv.
Installation
Add this line to your application's Gemfile:
gem 'hsluv'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hsluv
Usage
-
hue
is a float between 0 and 360 -
saturation
is a float between 0 and 100 -
lightness
is a float between 0 and 100 -
hex
is the hexadecimal format of the color -
red
is a float between 0 and 1 -
green
is a float between 0 and 1 -
blue
is a float between 0 and 1
Hsluv::hsluv_to_hex(hue, saturation, lightness) -> color as a hex string
Hsluv.hsluv_to_hex(12.177, 100, 53.23)
=> #ff0000
Hsluv::hsluv_to_rgb(hue, saturation, lightness) -> color as rgb
Hsluv.hsluv_to_rgb(12.177, 100, 53.23)
=> [0.9998643703868711, 6.849859221502719e-14, 8.791283550555612e-06]
Hsluv::hex_to_hsluv(hex) -> list of floats as defined above
Hsluv.hex_to_hsluv("#ff0000")
=> [12.177050630061776, 100.0000000000022, 53.23711559542933]
Hsluv::rgb_to_hsluv(rgb) -> list of floats as defined above
Hsluv.rgb_to_hsluv(0.99, 6.84e-14, 8.79e-16)
=> [12.17705063006216, 100.00000000000209, 52.711595266911985]
For HPLuv (the pastel variant), use:
hpluv_to_hex
hpluv_to_rgb
hex_to_hpluv
rgb_to_hpluv
Local workflow
If you don't have Ruby installed already, I recommend using our devcontainer.json configuration to launch your editor in a pre-built Ruby container. Also consider using GitHub "Codespaces" feature if you don't use Docker.
Initial setup:
bundle install
Test:
bundle exec rspec
Releasing a new version
- Log in to rubygems.org using our shared hsluv profile
- Make a new API key if necessary, copy it to GitHub Actions
HSLUV_RUBYGEMS_API_KEY
secret - Update hsluv.gemspec with new version, e.g.
1.0.2.rc1
, push to a branch - Run gem.yml workflow on that branch
- Sanity check:
gem install --user-install hsluv -v 1.0.2.rc1
Version history
1.0.2
- Add HSLuv revision 4 support (thanks @felix-d)