class Maglev::FetchStyle

Fetch the style of a site. Use default values from the theme if needed.

def build_style_value(definition)

def build_style_value(definition)
  Maglev::Site::StyleValue.new(
    definition.id,
    definition.type,
    custom_value(definition)
  )
end

def build_style_value_list

def build_style_value_list
  theme.style_settings.map do |definition|
    build_style_value(definition)
  end
end

def call

def call
  Maglev::Site::StyleValue::AssociationProxy.new(
    build_style_value_list
  )
end

def custom_value(definition)

def custom_value(definition)
  value = (site.style || []).find do |local_value|
    local_value['id'] == definition.id && local_value['type'] == definition.type
  end
  value ? value['value'] : definition.default
end

def site

def site
  @site ||= fetch_site.call
end

def theme

def theme
  @theme ||= fetch_theme.call
end