Project

husl

0.01
No release in over 3 years
Low commit activity in last 3 years
HUSL is implemented as a set of functions to convert colors between RGB, HUSL and HUSLp.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.8
>= 0
~> 10.0
>= 0
 Project Readme

Ruby Gem Version

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

  1. Log in to rubygems.org using our shared hsluv profile
  2. Make a new API key if necessary, copy it to GitHub Actions HSLUV_RUBYGEMS_API_KEY secret
  3. Update hsluv.gemspec with new version, e.g. 1.0.2.rc1, push to a branch
  4. Run gem.yml workflow on that branch
  5. 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)