Class: ColorSort::Ordering

Inherits:
Object
  • Object
show all
Defined in:
lib/color_sort/ordering.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeOrdering

Returns a new instance of Ordering.



7
8
9
# File 'lib/color_sort/ordering.rb', line 7

def initialize
  @colors = []
end

Instance Attribute Details

#colorsObject (readonly)

Returns the value of attribute colors.



5
6
7
# File 'lib/color_sort/ordering.rb', line 5

def colors
  @colors
end

Instance Method Details

#add_lab_color(color) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/color_sort/ordering.rb', line 11

def add_lab_color(color)
  if colors.size < 2
    colors << color
  else
    min_delta = distance(color, colors.first)
    min_delta_index = 0

    (1...colors.size).each do |i|
      remove_distance = distance(colors[i-1], colors[i])
      add_distance = distance(colors[i-1], color) + distance(color, colors[i])
      delta = add_distance - remove_distance
      if delta < min_delta
        min_delta = delta
        min_delta_index = i
      end
    end

    if distance(colors.last, color) < min_delta
      min_delta_index = colors.size
    end

    colors.insert(min_delta_index, color)
  end
end