Sha256: ed0e426555ddec1f7b2c4820de8145ec36db2d2e00a33d351095890db9e9b748
Contents?: true
Size: 1.95 KB
Versions: 20
Compression:
Stored size: 1.95 KB
Contents
module Scrivito class ObjDataFromService < ObjData def initialize(data) @data = data end def raw_value_and_type_of(attribute_name) if attribute_name == '_widget_pool' [value_of_widget_pool, nil] else type_and_value = @data.fetch(attribute_name, [nil, nil]) if type_and_value.present? type = if type_and_value.length == 1 type_of_internal(attribute_name) else type_and_value.last end [convert_value(type_and_value.first, type), type] end end end def has_custom_attribute?(attribute_name) is_custom_attribute?(attribute_name) && !!@data[attribute_name] end def all_attributes @all_attributes ||= (@data.keys | INTERNAL_KEYS.to_a) end def to_h @data.dup.tap do |h| h.each_pair { |k, v| h[k] = v.first } end end private def convert_value(value, type) case type when "html" text_links_conversion.convert(value) when "widget" if !value [] else (value['list'] || []).map do |list_item| list_item['widget'] end end else value end end def text_links_conversion @text_links_conversion = TextLinkConversion.new(text_links_map) end def text_links_map text_links = @data["_text_links"] return nil unless text_links text_links.first.each_with_object({}) do |link, map| map[link["link_id"]] = TextLink.new(link) end end def value_of_widget_pool raw_value_of_widget_pool.dup.tap do |hash| hash.each_pair do |widget_id, raw_widget_data| hash[widget_id] = self.class.new(raw_widget_data) end end end def raw_value_of_widget_pool @data['_widget_pool'].first end def is_custom_attribute?(attribute_name) !internal_attribute?(attribute_name) end end end
Version data entries
20 entries across 20 versions & 1 rubygems