Module: StylePalette

Defined in:
lib/style_palette.rb,
lib/style_palette/version.rb

Defined Under Namespace

Modules: Helper

Constant Summary collapse

VERSION =
"0.0.5"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#palettes_configObject (readonly)

Returns the value of attribute palettes_config.



8
9
10
# File 'lib/style_palette.rb', line 8

def palettes_config
  @palettes_config
end

Class Method Details

.brush(word, palette_name) ⇒ Object

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
# File 'lib/style_palette.rb', line 10

def self.brush(word, palette_name)
  word = word.to_s
  palette_name = palette_name.to_sym

  raise ArgumentError, "Palette not found '#{palette_name}'" unless palettes[palette_name]
  brush_by_regex(word, palette_name) || brush_by_range(word, palette_name) || brush_by_index(word, palette_name)
end

.brush_by_index(word, palette_name) ⇒ Object



36
37
38
39
# File 'lib/style_palette.rb', line 36

def self.brush_by_index(word, palette_name)
  index = word.each_byte.inject( &:+ )
  palettes[palette_name][ index % palettes[palette_name].length ]
end

.brush_by_range(word, palette_name) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/style_palette.rb', line 22

def self.brush_by_range(word, palette_name)
  palettes[palette_name].select do |e|
    result = false

    if e.range
      from = e.range.split("..")[0].length > 0 ? e.range.split("..")[0].to_i : -Float::INFINITY
      to = e.range.split("..")[1] ? e.range.split("..")[1].to_i : Float::INFINITY
      result = (from..to).include?(word.to_i)
    end

    result
  end.to_a.first
end

.brush_by_regex(word, palette_name) ⇒ Object



18
19
20
# File 'lib/style_palette.rb', line 18

def self.brush_by_regex(word, palette_name)
  palettes[palette_name].select{ |e| e.regex && word =~ /#{e.regex}/  }.first
end

.palettesObject



67
68
69
# File 'lib/style_palette.rb', line 67

def self.palettes
  @palettes || raise(Exception, "Palettes not initialized, try `StylePalette.palettes_config = <file_path>`")
end

.palettes_configObject



46
47
48
# File 'lib/style_palette.rb', line 46

def self.palettes_config
  @palettes_config
end

.palettes_config=(style_palettes_file_path) ⇒ Object



41
42
43
44
# File 'lib/style_palette.rb', line 41

def self.palettes_config=(style_palettes_file_path)
  style_palettes_json = File.read(style_palettes_file_path)
  palettes_config_json style_palettes_json
end

.palettes_config_json(style_palettes_json) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/style_palette.rb', line 50

def self.palettes_config_json(style_palettes_json)
  @palettes_config = style_palettes_json

  palettes = {}

  JSON.parse(style_palettes_json).each do |palette_name, palette|
    palettes[palette_name.to_sym] = palette.map { |e| OpenStruct.new(e) }
  end

  @palettes = palettes
end

.resetObject



62
63
64
65
# File 'lib/style_palette.rb', line 62

def self.reset
  @palettes = nil
  @palettes_config = nil
end