Module: ColorContrastCalc::Sorter
- Defined in:
- lib/color_contrast_calc/sorter.rb
Overview
Provide two methods sort() and compile_compare_function()
The other methods defined in this module should not be considered as stable interfaces.
Defined Under Namespace
Modules: KeyTypes
Class Method Summary collapse
-
.compile_compare_function(color_order, key_type, key_mapper = nil, &key_mapper_block) ⇒ Proc
Return a Proc object to be passed to Array#sort().
-
.sort(colors, color_order = 'hSL', key_mapper = nil, &key_mapper_block) ⇒ Array<Color>, Array<String>
Sort colors in the order specified by
color_order
.
Class Method Details
.compile_compare_function(color_order, key_type, key_mapper = nil, &key_mapper_block) ⇒ Proc
Return a Proc object to be passed to Array#sort().
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/color_contrast_calc/sorter.rb', line 113 def self.compile_compare_function(color_order, key_type, key_mapper = nil, &key_mapper_block) key_mapper = key_mapper_block if !key_mapper && key_mapper_block case key_type when KeyTypes::COLOR compare = compile_color_compare_function(color_order) when KeyTypes::COMPONENTS compare = compile_components_compare_function(color_order) when KeyTypes::HEX compare = compile_hex_compare_function(color_order) end compose_function(compare, key_mapper) end |
.sort(colors, color_order = 'hSL', key_mapper = nil, &key_mapper_block) ⇒ Array<Color>, Array<String>
Sort colors in the order specified by color_order
.
Sort colors given as an array of Color instances or hex color codes.
You can specify sorting order by giving a color_order
string, such as “HSL” or “RGB”. A component of color_order
on the left side has a higher sorting precedence, and an uppercase letter means descending order.
93 94 95 96 97 98 99 100 |
# File 'lib/color_contrast_calc/sorter.rb', line 93 def self.sort(colors, color_order = 'hSL', key_mapper = nil, &key_mapper_block) key_mapper = key_mapper_block if !key_mapper && key_mapper_block key_type = KeyTypes.guess(colors[0], key_mapper) compare = compile_compare_function(color_order, key_type, key_mapper) colors.sort(&compare) end |