Class: ColorSchemeRevisor

Inherits:
Object
  • Object
show all
Defined in:
app/services/color_scheme_revisor.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(color_scheme, params = {}) ⇒ ColorSchemeRevisor

Returns a new instance of ColorSchemeRevisor.



4
5
6
7
# File 'app/services/color_scheme_revisor.rb', line 4

def initialize(color_scheme, params = {})
  @color_scheme = color_scheme
  @params = params
end

Class Method Details

.revise(color_scheme, params) ⇒ Object



9
10
11
# File 'app/services/color_scheme_revisor.rb', line 9

def self.revise(color_scheme, params)
  self.new(color_scheme, params).revise
end

Instance Method Details

#reviseObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/services/color_scheme_revisor.rb', line 13

def revise
  ColorScheme.transaction do
    @color_scheme.name = @params[:name] if @params.has_key?(:name)
    @color_scheme.user_selectable = @params[:user_selectable] if @params.has_key?(
      :user_selectable,
    )
    @color_scheme.base_scheme_id = @params[:base_scheme_id] if @params.has_key?(:base_scheme_id)
    has_colors = @params[:colors]

    if has_colors
      @params[:colors].each do |c|
        if existing = @color_scheme.colors_by_name[c[:name]]
          existing.update(c)
        else
          @color_scheme.color_scheme_colors << ColorSchemeColor.new(name: c[:name], hex: c[:hex])
        end
      end
      @color_scheme.clear_colors_cache
    end

    if has_colors || @color_scheme.saved_change_to_name? ||
         @color_scheme.will_save_change_to_user_selectable? ||
         @color_scheme.saved_change_to_base_scheme_id?
      @color_scheme.save
    end
  end
  @color_scheme
end