Sha256: 3f3305f5cc68d9abd9c012139fc9d898095dba85a538c3490a7e3049509d92eb
Contents?: true
Size: 1.41 KB
Versions: 12
Compression:
Stored size: 1.41 KB
Contents
# frozen_string_literal: true # rubocop:disable Style/ClassAndModuleChildren module Maglev::SectionsConcern def prepare_sections # NOTE: pages defined in the theme definition # don't include the ids for sections/blocks self.sections ||= [] # NOTE: the self is mandatory here sections.each do |section| prepare_section(section) end end private def prepare_section(section) section['id'] ||= SecureRandom.urlsafe_base64(8) section['settings'] = prepare_settings(section['settings']) section['blocks'] = (section['blocks'] || []).map do |block| prepare_block(block) end.flatten section end def prepare_block(block) block['id'] ||= SecureRandom.urlsafe_base64(8) block['settings'] = prepare_settings(block['settings']) # the children key is accepted when the sections come from a theme preset children = (block.delete('children') || []).map do |nested_block| nested_block['parent_id'] = block['id'] prepare_block(nested_block) end [block, children].flatten end def prepare_settings(settings) # NOTE: in the theme definition file, we allow developers to declare # default content like this: { <setting_id_1>: <setting_value_1>, ..., <setting_id_n>: <setting_value_n> } return settings if settings.is_a?(Array) settings.map { |key, value| { id: key, value: value } } end end # rubocop:enable Style/ClassAndModuleChildren
Version data entries
12 entries across 12 versions & 1 rubygems