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 Classes: CachingCompiler, CompareFunctionCompiler
Constant Summary collapse
- COMPARE_FUNCTION_COMPILERS =
{ KeyTypes::COLOR => CompareFunctionCompiler.new(color_to_components), KeyTypes::COMPONENTS => CompareFunctionCompiler.new, KeyTypes::HEX => CachingCompiler.new(hex_to_components), KeyTypes::FUNCTION => CachingCompiler.new(function_to_components) }.freeze
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().
260 261 262 263 264 265 266 267 |
# File 'lib/color_contrast_calc/sorter.rb', line 260 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 compare = COMPARE_FUNCTION_COMPILERS[key_type].compile(color_order) 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.
240 241 242 243 244 245 246 247 |
# File 'lib/color_contrast_calc/sorter.rb', line 240 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 |