class Maglev::Section::Setting
rubocop:disable Style/ClassAndModuleChildren
def self.build(hash)
def self.build(hash) attributes = hash.slice('id', 'label', 'type', 'default') options = hash.except('id', 'label', 'type', 'default') new(attributes.merge(options: options)) end
def self.build_many(list)
def self.build_many(list) list.map { |hash| build(hash) } end
def self.registered_types
def self.registered_types @registered_types ||= REGISTERED_TYPES.index_with do |type| "Maglev::SettingTypes::#{type.camelize}".constantize.new end end
def advanced?
def advanced? !!options[:advanced] end
def build_default_content(custom_default = nil)
def build_default_content(custom_default = nil) default = custom_default.nil? ? self.default : custom_default # special case: text type default ||= label if text_type? cast_value(default) end
def cast_value(value)
def cast_value(value) self.class.registered_types[type.to_s].cast_value(value) end
def content_image(value)
def content_image(value) self.class.registered_types[type.to_s].content_image(value) end
def content_label(value)
def content_label(value) self.class.registered_types[type.to_s].content_label(value) end