Sha256: 8d06d017680c5e769422306c34fa2a1737c530222af971d10ab16be465e149ef

Contents?: true

Size: 561 Bytes

Versions: 2

Compression:

Stored size: 561 Bytes

Contents

module Cheers
  class ContrastingColorPicker
    
    MAX_RETRIES = 10
    
    attr_reader :palette, :colors
    
    def initialize(palette, *colors)
      @palette = palette.map { |c| Color.new(c) }
      @colors  = colors.map  { |c| Color.new(c) }
    end
    
    def pick(randomizer = Random.new)
      pick = palette.sample(random: randomizer)
      
      try = 0
      while colors.any? { |c| c.similar?(pick) } && try <= MAX_RETRIES
        try += 1
        pick = palette.sample(random: randomizer)
      end
      
      pick.to_s
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cheers-0.0.4 lib/cheers/contrasting_color_picker.rb
cheers-0.0.3 lib/cheers/contrasting_color_picker.rb