color_contrast_calc 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1a8775f32887a986970172b51ad16f6ecfed4eef
4
+ data.tar.gz: e7b5c2e6b91390bd2d9e2ad198bba4a02d4fd739
5
+ SHA512:
6
+ metadata.gz: 976ca9c5262cb36a3c293f6ee856f2c5ba485a6b98ed62cb545dd730623edfcc3ff449b18f5f242953cc9d408185d0ef9c5365e53ca0203dad6f327da0743f16
7
+ data.tar.gz: 5cd83c0fa63c5a601162a0ae79d5e09149594333c5218d058d17a9c3af54d6c98effbf412adb57c471cac5a1bd9147ad503671a20d0c43536bfcaf22726369fd
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
13
+
14
+ *~
15
+ .ruby-version
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,8 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.2
3
+ Style/SpaceInsideBlockBraces:
4
+ SpaceBeforeBlockParameters: false
5
+ Metrics/BlockLength:
6
+ Exclude: ["spec/**/*", "test/**/*"]
7
+ Documentation:
8
+ Enabled: false
@@ -0,0 +1,9 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.2
5
+ - 2.3
6
+ - 2.4
7
+ - ruby-head
8
+ - jruby-head
9
+ before_install: gem install bundler -v 1.15.3
@@ -0,0 +1,4 @@
1
+ --readme README.md
2
+ --no-private
3
+ -
4
+ README.ja.md
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in color_contrast_calc.gemspec
6
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 HASHIMOTO, Naoki
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,296 @@
1
+ # ColorContrastCalc
2
+
3
+ `ColorContrastCalc`は、十分なコントラストのある色をWCAG 2.0を念頭に置きながら
4
+ 選択することを支援するユーティリティとして開発しています。
5
+
6
+ このユーティリティを使い次のことができます:
7
+
8
+ * 2つの色のコントラスト比を確認する
9
+ * ある色に対し十分なコントラストがある色を(もしあれば)見つける
10
+ * ある色の属性を調整し、新しい色を作る
11
+ * 色をソートする
12
+
13
+ ## インストール
14
+
15
+ Gemfileに次の行を追加し:
16
+
17
+ ```ruby
18
+ gem 'color_contrast_calc'
19
+ ```
20
+
21
+ 次のコマンドを実行します:
22
+
23
+ $ bundle install
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install color_contrast_calc
28
+
29
+ ## 使い方
30
+
31
+ ### 色の表現
32
+
33
+ ユーティリティ内で色を表わすクラスとしてColorContrastCalc::Color`
34
+ が用意されています。
35
+ このクラスはユーティリティ内のほとんどの操作で利用されます。
36
+
37
+ 例えば赤色を表す`Color`のインスタンスを生成したい場合、
38
+ `ColorContrastCalc.color_from`というメソッドが利用できます。
39
+
40
+ 次のコードを`color_instance.rb`として保存し:
41
+
42
+ ```ruby
43
+ require 'color_contrast_calc'
44
+
45
+ # Create an instance of Color from a hex code
46
+ # (You can pass 'red' or [255, 0, 0] instead of '#ff0000')
47
+ red = ColorContrastCalc.color_from('#ff0000')
48
+ puts red.class
49
+ puts red.name
50
+ puts red.hex
51
+ puts red.rgb.to_s
52
+ puts red.hsl.to_s
53
+
54
+ ```
55
+
56
+ 以下のように実行します:
57
+
58
+ ```bash
59
+ $ ruby color_instance.rb
60
+ ColorContrastCalc::Color
61
+ red
62
+ #ff0000
63
+ [255, 0, 0]
64
+ [0.0, 100.0, 50.0]
65
+
66
+ ```
67
+
68
+ ### 例1: 2つの色のコントラスト比を計算する
69
+
70
+ 例えば黄色と黒のコントラスト比を計算したい場合、
71
+ 次のコードを`yellow_black_contrast.rb`として保存し:
72
+
73
+ ```ruby
74
+ require 'color_contrast_calc'
75
+
76
+ yellow = ColorContrastCalc.color_from('yellow')
77
+ black = ColorContrastCalc.color_from('black')
78
+
79
+ contrast_ratio = yellow.contrast_ratio_against(black)
80
+
81
+ report = 'The contrast ratio between %s and %s is %2.4f'
82
+ puts(format(report, yellow.name, black.name, contrast_ratio))
83
+ puts(format(report, yellow.hex, black.hex, contrast_ratio))
84
+ ```
85
+
86
+ 以下のように実行します:
87
+
88
+ ```bash
89
+ $ ruby yellow_black_contrast.rb
90
+ The contrast ratio between yellow and black is 19.5560
91
+ The contrast ratio between #ffff00 and #000000 is 19.5560
92
+ ```
93
+
94
+ ### 例2: ある色に対し十分なコントラスト比のある色を見つける
95
+
96
+ 2色の組み合わせのうち、一方の色のbrightness/lightnessを変化させることで十分な
97
+ コントラストのある色を見つけたい場合、次のコードを`yellow_orange_contrast.rb`
98
+ として保存し:
99
+
100
+ ```ruby
101
+ require 'color_contrast_calc'
102
+
103
+ yellow = ColorContrastCalc.color_from('yellow')
104
+ orange = ColorContrastCalc.color_from('orange')
105
+
106
+ report = 'The contrast ratio between %s and %s is %2.4f'
107
+
108
+ # Find brightness adjusted colors.
109
+
110
+ a_orange = yellow.find_brightness_threshold(orange, 'A')
111
+ a_contrast_ratio = yellow.contrast_ratio_against(a_orange)
112
+
113
+ aa_orange = yellow.find_brightness_threshold(orange, 'AA')
114
+ aa_contrast_ratio = yellow.contrast_ratio_against(aa_orange)
115
+
116
+ puts('# Brightness adjusted colors')
117
+ puts(format(report, yellow.hex, a_orange.hex, a_contrast_ratio))
118
+ puts(format(report, yellow.hex, aa_orange.hex, aa_contrast_ratio))
119
+
120
+ # Find lightness adjusted colors.
121
+
122
+ a_orange = yellow.find_lightness_threshold(orange, 'A')
123
+ a_contrast_ratio = yellow.contrast_ratio_against(a_orange)
124
+
125
+ aa_orange = yellow.find_lightness_threshold(orange, 'AA')
126
+ aa_contrast_ratio = yellow.contrast_ratio_against(aa_orange)
127
+
128
+ puts('# Lightness adjusted colors')
129
+ puts(format(report, yellow.hex, a_orange.hex, a_contrast_ratio))
130
+ puts(format(report, yellow.hex, aa_orange.hex, aa_contrast_ratio))
131
+ ```
132
+
133
+ 以下のように実行します:
134
+
135
+ ```bash
136
+ $ ruby yellow_orange_contrast.rb
137
+ # Brightness adjusted colors
138
+ The contrast ratio between #ffff00 and #c68000 is 3.0138
139
+ The contrast ratio between #ffff00 and #9d6600 is 4.5121
140
+ # Lightness adjusted colors
141
+ The contrast ratio between #ffff00 and #c78000 is 3.0012
142
+ The contrast ratio between #ffff00 and #9d6600 is 4.5121
143
+ ```
144
+
145
+ ### 例3: ある色のグレースケール
146
+
147
+ ある色のグレースケールを得るために`ColorContrastCalc::Color` には
148
+ `new_grayscale_color`というインスタンスメソッドがあります。
149
+
150
+ 例えば次のコードを`grayscale.rb`として保存し:
151
+
152
+ ```ruby
153
+ require 'color_contrast_calc'
154
+
155
+ yellow = ColorContrastCalc.color_from('yellow')
156
+ orange = ColorContrastCalc.color_from('orange')
157
+
158
+ report = 'The grayscale of %s is %s.'
159
+ puts(format(report, yellow.hex, yellow.new_grayscale_color))
160
+ puts(format(report, orange.hex, orange.new_grayscale_color))
161
+ ```
162
+
163
+ 以下のように実行します:
164
+
165
+ ```bash
166
+ $ ruby grayscale.rb
167
+ The grayscale of #ffff00 is #ededed.
168
+ The grayscale of #ffa500 is #acacac.
169
+ ```
170
+
171
+ また`new_grayscale_color`以外に、以下のインスタンスメッソドが
172
+ `ColorContrastCalc::Color`では利用できます。:
173
+
174
+ * `new_brightness_color`
175
+ * `new_contrast_color`
176
+ * `new_hue_rotate_color`
177
+ * `new_invert_color`
178
+ * `new_saturate_color`
179
+
180
+ ### 例4: 色をソートする
181
+
182
+ `ColorContrastCalc::Sorter.sort`を使って色のソートができます。
183
+
184
+ またこのメソッドの2番目の引数でソート順を指定することもできます。
185
+
186
+ 例えば次のコードを`sort_colors.rb`として保存し:
187
+
188
+ ```ruby
189
+ require 'color_contrast_calc'
190
+
191
+ color_names = ['red', 'yellow', 'lime', 'cyan', 'fuchsia', 'blue']
192
+ colors = color_names.map {|c| ColorContrastCalc.color_from(c) }
193
+
194
+ # sort by hSL order. An uppercase for a component of color means
195
+ # that component should be sorted in descending order.
196
+
197
+ hsl_ordered = ColorContrastCalc::Sorter.sort(colors, 'hSL')
198
+ puts("Colors sorted in the order of hSL: #{hsl_ordered.map(&:name)}")
199
+
200
+ # sort by RGB order.
201
+
202
+ rgb_ordered = ColorContrastCalc::Sorter.sort(colors, 'RGB')
203
+ puts("Colors sorted in the order of RGB: #{rgb_ordered.map(&:name)}")
204
+
205
+ # You can also change the precedence of components.
206
+
207
+ grb_ordered = ColorContrastCalc::Sorter.sort(colors, 'GRB')
208
+ puts("Colors sorted in the order of GRB: #{grb_ordered.map(&:name)}")
209
+
210
+ # And you can directly sort hex color codes.
211
+
212
+ ## Hex color codes that correspond to the color_names given above.
213
+ hex_codes = ['#ff0000', '#ff0', '#00ff00', '#0ff', '#f0f', '#0000FF']
214
+
215
+ hsl_ordered = ColorContrastCalc::Sorter.sort(hex_codes, 'hSL')
216
+ puts("Colors sorted in the order of hSL: #{hsl_ordered}")
217
+ ```
218
+
219
+ 以下のように実行します:
220
+
221
+ ```bash
222
+ $ ruby sort_colors.rb
223
+ Colors sorted in the order of hSL: ["red", "yellow", "lime", "cyan", "blue", "fuchsia"]
224
+ Colors sorted in the order of RGB: ["yellow", "fuchsia", "red", "cyan", "lime", "blue"]
225
+ Colors sorted in the order of GRB: ["yellow", "cyan", "lime", "fuchsia", "red", "blue"]
226
+ Colors sorted in the order of hSL: ["#ff0000", "#ff0", "#00ff00", "#0ff", "#0000FF", "#f0f"]
227
+ ```
228
+
229
+ ### 例5: 定義済みの色のリスト
230
+
231
+ [拡張カラーキーワードで定義された色](https://www.w3.org/TR/SVG/types.html#ColorKeywords)・
232
+ ウェブセーフカラーの2つのリストが予め定義されています。
233
+
234
+
235
+ また、HSLでsaturation・lightnessが共通する色のリストを生成する
236
+ `ColorContrastCalc::Color::List.hsl_colors`というメソッドがあります。
237
+
238
+ 例えば次のコードを`color_lists.rb`として保存し:
239
+
240
+ ```ruby
241
+ require 'color_contrast_calc'
242
+
243
+ # Named colors
244
+ named_colors = ColorContrastCalc.named_colors
245
+
246
+ puts("The number of named colors: #{named_colors.size}")
247
+ puts("The first of named colors: #{named_colors[0].name}")
248
+ puts("The last of named colors: #{named_colors[-1].name}")
249
+
250
+ # Web safe colors
251
+ web_safe_colors = ColorContrastCalc.web_safe_colors
252
+
253
+ puts("The number of web safe colors: #{web_safe_colors.size}")
254
+ puts("The first of web safe colors: #{web_safe_colors[0].name}")
255
+ puts("The last of web safe colors: #{web_safe_colors[-1].name}")
256
+
257
+ # HSL colors
258
+ hsl_colors = ColorContrastCalc.hsl_colors
259
+
260
+ puts("The number of HSL colors: #{hsl_colors.size}")
261
+ puts("The first of HSL colors: #{hsl_colors[0].name}")
262
+ puts("The 60th of HSL colors: #{hsl_colors[60].name}")
263
+ puts("The 120th of HSL colors: #{hsl_colors[120].name}")
264
+ puts("The last of HSL colors: #{hsl_colors[-1].name}")
265
+ ```
266
+
267
+ 以下のように実行します:
268
+
269
+ ```bash
270
+ $ ruby color_lists.rb
271
+ The number of named colors: 147
272
+ The first of named colors: aliceblue
273
+ The last of named colors: yellowgreen
274
+ The number of web safe colors: 216
275
+ The first of web safe colors: black
276
+ The last of web safe colors: white
277
+ The number of HSL colors: 361
278
+ The first of HSL colors: #ff0000
279
+ The 60th of HSL colors: #ffff00
280
+ The 120th of HSL colors: #00ff00
281
+ The last of HSL colors: #ff0000
282
+ ```
283
+
284
+ ## Development
285
+
286
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
287
+
288
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
289
+
290
+ ## Contributing
291
+
292
+ Bug reports and pull requests are welcome on GitHub at https://github.com/nico-hn/color_contrast_calc_rb.
293
+
294
+ ## License
295
+
296
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,295 @@
1
+ # ColorContrastCalc
2
+
3
+ `ColorContrastCalc` is a utility that helps you choose colors with
4
+ sufficient contrast, WCAG 2.0 in mind.
5
+
6
+ With this library, you can do following things:
7
+
8
+ * Check the contrast ratio between two colors
9
+ * Find (if exists) a color that has suffcient contrast to a given color
10
+ * Create a new color from a given color by adjusting properies of the latter
11
+ * Sort colors
12
+
13
+ ## Installation
14
+
15
+ Add this line to your application's Gemfile:
16
+
17
+ ```ruby
18
+ gem 'color_contrast_calc'
19
+ ```
20
+
21
+ And then execute:
22
+
23
+ $ bundle
24
+
25
+ Or install it yourself as:
26
+
27
+ $ gem install color_contrast_calc
28
+
29
+ ## Usage
30
+
31
+ ### Representing a color
32
+
33
+ To represent a color, class `ColorContrastCalc::Color` is provided.
34
+ And most of the operations in this utility use this class.
35
+
36
+ As an illustration, if you want to create an instance of `Color` for red,
37
+ you may use a method `ColorContrastCalc.color_from`
38
+
39
+ Save the following code as `color_instance.rb`:
40
+
41
+ ```ruby
42
+ require 'color_contrast_calc'
43
+
44
+ # Create an instance of Color from a hex code
45
+ # (You can pass 'red' or [255, 0, 0] instead of '#ff0000')
46
+ red = ColorContrastCalc.color_from('#ff0000')
47
+ puts red.class
48
+ puts red.name
49
+ puts red.hex
50
+ puts red.rgb.to_s
51
+ puts red.hsl.to_s
52
+
53
+ ```
54
+
55
+ Then execute the script:
56
+
57
+ ```bash
58
+ $ ruby color_instance.rb
59
+ ColorContrastCalc::Color
60
+ red
61
+ #ff0000
62
+ [255, 0, 0]
63
+ [0.0, 100.0, 50.0]
64
+
65
+ ```
66
+
67
+ ### Example 1: Calculate the contrast ratio between two colors
68
+
69
+ If you want to calculate the contrast ratio between yellow and black,
70
+ save the following code as `yellow_black_contrast.rb`:
71
+
72
+ ```ruby
73
+ require 'color_contrast_calc'
74
+
75
+ yellow = ColorContrastCalc.color_from('yellow')
76
+ black = ColorContrastCalc.color_from('black')
77
+
78
+ contrast_ratio = yellow.contrast_ratio_against(black)
79
+
80
+ report = 'The contrast ratio between %s and %s is %2.4f'
81
+ puts(format(report, yellow.name, black.name, contrast_ratio))
82
+ puts(format(report, yellow.hex, black.hex, contrast_ratio))
83
+ ```
84
+
85
+ Then execute the script:
86
+
87
+ ```bash
88
+ $ ruby yellow_black_contrast.rb
89
+ The contrast ratio between yellow and black is 19.5560
90
+ The contrast ratio between #ffff00 and #000000 is 19.5560
91
+ ```
92
+
93
+ ### Example 2: Find colors that have enough contrast ratio with a given color
94
+
95
+ If you want to find a combination of colors with sufficient contrast
96
+ by changing the brightness/lightness of one of those colors, save the
97
+ following code as `yellow_orange_contrast.rb`:
98
+
99
+ ```ruby
100
+ require 'color_contrast_calc'
101
+
102
+ yellow = ColorContrastCalc.color_from('yellow')
103
+ orange = ColorContrastCalc.color_from('orange')
104
+
105
+ report = 'The contrast ratio between %s and %s is %2.4f'
106
+
107
+ # Find brightness adjusted colors.
108
+
109
+ a_orange = yellow.find_brightness_threshold(orange, 'A')
110
+ a_contrast_ratio = yellow.contrast_ratio_against(a_orange)
111
+
112
+ aa_orange = yellow.find_brightness_threshold(orange, 'AA')
113
+ aa_contrast_ratio = yellow.contrast_ratio_against(aa_orange)
114
+
115
+ puts('# Brightness adjusted colors')
116
+ puts(format(report, yellow.hex, a_orange.hex, a_contrast_ratio))
117
+ puts(format(report, yellow.hex, aa_orange.hex, aa_contrast_ratio))
118
+
119
+ # Find lightness adjusted colors.
120
+
121
+ a_orange = yellow.find_lightness_threshold(orange, 'A')
122
+ a_contrast_ratio = yellow.contrast_ratio_against(a_orange)
123
+
124
+ aa_orange = yellow.find_lightness_threshold(orange, 'AA')
125
+ aa_contrast_ratio = yellow.contrast_ratio_against(aa_orange)
126
+
127
+ puts('# Lightness adjusted colors')
128
+ puts(format(report, yellow.hex, a_orange.hex, a_contrast_ratio))
129
+ puts(format(report, yellow.hex, aa_orange.hex, aa_contrast_ratio))
130
+ ```
131
+
132
+ Then execute the script:
133
+
134
+ ```bash
135
+ $ ruby yellow_orange_contrast.rb
136
+ # Brightness adjusted colors
137
+ The contrast ratio between #ffff00 and #c68000 is 3.0138
138
+ The contrast ratio between #ffff00 and #9d6600 is 4.5121
139
+ # Lightness adjusted colors
140
+ The contrast ratio between #ffff00 and #c78000 is 3.0012
141
+ The contrast ratio between #ffff00 and #9d6600 is 4.5121
142
+ ```
143
+
144
+ ### Example 3: Grayscale of given colors
145
+
146
+ For getting grayscale, `ColorContrastCalc::Color` has an instance method
147
+ `new_grayscale_color`.
148
+ For example, save the following code as `grayscale.rb`:
149
+
150
+ ```ruby
151
+ require 'color_contrast_calc'
152
+
153
+ yellow = ColorContrastCalc.color_from('yellow')
154
+ orange = ColorContrastCalc.color_from('orange')
155
+
156
+ report = 'The grayscale of %s is %s.'
157
+ puts(format(report, yellow.hex, yellow.new_grayscale_color))
158
+ puts(format(report, orange.hex, orange.new_grayscale_color))
159
+ ```
160
+
161
+ Then execute the script:
162
+
163
+ ```bash
164
+ $ ruby grayscale.rb
165
+ The grayscale of #ffff00 is #ededed.
166
+ The grayscale of #ffa500 is #acacac.
167
+ ```
168
+
169
+ And other than `new_grayscale_color`, following instance methods
170
+ are available for `ColorContrastCalc::Color`:
171
+
172
+ * `new_brightness_color`
173
+ * `new_contrast_color`
174
+ * `new_hue_rotate_color`
175
+ * `new_invert_color`
176
+ * `new_saturate_color`
177
+
178
+ ### Example 4: Sort colors
179
+
180
+ You can sort colors using a method `ColorContrastCalc::Sorter.sort`.
181
+
182
+ And by passing the second argument to this method, you can also specify
183
+ the sort order.
184
+
185
+ For example, save the following code as `sort_colors.rb`:
186
+
187
+ ```ruby
188
+ require 'color_contrast_calc'
189
+
190
+ color_names = ['red', 'yellow', 'lime', 'cyan', 'fuchsia', 'blue']
191
+ colors = color_names.map {|c| ColorContrastCalc.color_from(c) }
192
+
193
+ # sort by hSL order. An uppercase for a component of color means
194
+ # that component should be sorted in descending order.
195
+
196
+ hsl_ordered = ColorContrastCalc::Sorter.sort(colors, 'hSL')
197
+ puts("Colors sorted in the order of hSL: #{hsl_ordered.map(&:name)}")
198
+
199
+ # sort by RGB order.
200
+
201
+ rgb_ordered = ColorContrastCalc::Sorter.sort(colors, 'RGB')
202
+ puts("Colors sorted in the order of RGB: #{rgb_ordered.map(&:name)}")
203
+
204
+ # You can also change the precedence of components.
205
+
206
+ grb_ordered = ColorContrastCalc::Sorter.sort(colors, 'GRB')
207
+ puts("Colors sorted in the order of GRB: #{grb_ordered.map(&:name)}")
208
+
209
+ # And you can directly sort hex color codes.
210
+
211
+ ## Hex color codes that correspond to the color_names given above.
212
+ hex_codes = ['#ff0000', '#ff0', '#00ff00', '#0ff', '#f0f', '#0000FF']
213
+
214
+ hsl_ordered = ColorContrastCalc::Sorter.sort(hex_codes, 'hSL')
215
+ puts("Colors sorted in the order of hSL: #{hsl_ordered}")
216
+ ```
217
+
218
+ Then execute the script:
219
+
220
+ ```bash
221
+ $ ruby sort_colors.rb
222
+ Colors sorted in the order of hSL: ["red", "yellow", "lime", "cyan", "blue", "fuchsia"]
223
+ Colors sorted in the order of RGB: ["yellow", "fuchsia", "red", "cyan", "lime", "blue"]
224
+ Colors sorted in the order of GRB: ["yellow", "cyan", "lime", "fuchsia", "red", "blue"]
225
+ Colors sorted in the order of hSL: ["#ff0000", "#ff0", "#00ff00", "#0ff", "#0000FF", "#f0f"]
226
+ ```
227
+
228
+ ### Example 5: Lists of predefined colors
229
+
230
+ Two lists of colors are provided, one is for
231
+ [named colors](https://www.w3.org/TR/SVG/types.html#ColorKeywords)
232
+ and the other for the web safe colors.
233
+
234
+ And there is a method `ColorContrastCalc::Color::List.hsl_colors` that
235
+ generates a list of HSL colors that share same saturation and lightness.
236
+
237
+ For example, save the following code as `color_lists.rb`:
238
+
239
+ ```ruby
240
+ require 'color_contrast_calc'
241
+
242
+ # Named colors
243
+ named_colors = ColorContrastCalc.named_colors
244
+
245
+ puts("The number of named colors: #{named_colors.size}")
246
+ puts("The first of named colors: #{named_colors[0].name}")
247
+ puts("The last of named colors: #{named_colors[-1].name}")
248
+
249
+ # Web safe colors
250
+ web_safe_colors = ColorContrastCalc.web_safe_colors
251
+
252
+ puts("The number of web safe colors: #{web_safe_colors.size}")
253
+ puts("The first of web safe colors: #{web_safe_colors[0].name}")
254
+ puts("The last of web safe colors: #{web_safe_colors[-1].name}")
255
+
256
+ # HSL colors
257
+ hsl_colors = ColorContrastCalc.hsl_colors
258
+
259
+ puts("The number of HSL colors: #{hsl_colors.size}")
260
+ puts("The first of HSL colors: #{hsl_colors[0].name}")
261
+ puts("The 60th of HSL colors: #{hsl_colors[60].name}")
262
+ puts("The 120th of HSL colors: #{hsl_colors[120].name}")
263
+ puts("The last of HSL colors: #{hsl_colors[-1].name}")
264
+ ```
265
+
266
+ Then execute the script:
267
+
268
+ ```bash
269
+ $ ruby color_lists.rb
270
+ The number of named colors: 147
271
+ The first of named colors: aliceblue
272
+ The last of named colors: yellowgreen
273
+ The number of web safe colors: 216
274
+ The first of web safe colors: black
275
+ The last of web safe colors: white
276
+ The number of HSL colors: 361
277
+ The first of HSL colors: #ff0000
278
+ The 60th of HSL colors: #ffff00
279
+ The 120th of HSL colors: #00ff00
280
+ The last of HSL colors: #ff0000
281
+ ```
282
+
283
+ ## Development
284
+
285
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
286
+
287
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
288
+
289
+ ## Contributing
290
+
291
+ Bug reports and pull requests are welcome on GitHub at https://github.com/nico-hn/color_contrast_calc_rb.
292
+
293
+ ## License
294
+
295
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).