class Locomotive::Steam::Adapters::Filesystem::Sanitizers::Section
Public Instance Methods
apply_to_entity(entity)
click to toggle source
Calls superclass method
Locomotive::Steam::Adapters::Filesystem::Sanitizer#apply_to_entity
# File lib/locomotive/steam/adapters/filesystem/sanitizers/section.rb, line 9 def apply_to_entity(entity) super.tap do # allow multiple ways of defining global and preset content handle_aliases(entity.definition) # Utilize global defaults for dropzone preset # when `use_default` is defined fill_presets(entity.definition) # use the default setting values if some settings # are not set in the default object set_default_values(entity.definition) end end
Private Instance Methods
fill_presets(definition)
click to toggle source
# File lib/locomotive/steam/adapters/filesystem/sanitizers/section.rb, line 38 def fill_presets(definition) if definition.key?('default') && definition.key?('presets') definition['presets'].each_with_index do |preset_definition, preset_index| next unless preset_definition.delete('use_default') == true settings = preset_definition['settings'] ||= {} # Fallback to use setting `default` key for Standalone/Global section settings and block settings definition['default']['settings'].each do |name, value| settings[name] ||= value end preset_definition['blocks'] = (preset_definition['blocks'] || []) + definition['default']['blocks'] end end end
handle_aliases(definition)
click to toggle source
# File lib/locomotive/steam/adapters/filesystem/sanitizers/section.rb, line 26 def handle_aliases(definition) # Dropzone presets -> presets if presets = definition.delete('dropzone_presets') definition['presets'] = presets end # Global content -> default if default = definition.delete('global_content') definition['default'] = default end end
set_default_values(definition)
click to toggle source
# File lib/locomotive/steam/adapters/filesystem/sanitizers/section.rb, line 55 def set_default_values(definition) content = definition['default'] return if content.nil? settings = content['settings'] ||= {} definition['settings'].each do |setting| settings[setting['id']] ||= setting['default'] end # no definition of blocks, no need to continue return if definition['blocks'].blank? # now, take care of the different type of blocks blocks = content['blocks'] ||= [] blocks.each do |block| _definition = definition['blocks'].find { |d| d['type'] == block['type'] } next if _definition.nil? _definition['settings'].each do |setting| block['settings'] ||= {} block['settings'][setting['id']] ||= setting['default'] end end end