class SolidusSeo::Jsonld::List
Attributes
data[RW]
list_items[RW]
Public Class Methods
new(data)
click to toggle source
# File lib/solidus_seo/jsonld/list.rb, line 8 def initialize(data) @list_items = [] @data = data.to_a parse end
Private Instance Methods
already_a_list?()
click to toggle source
# File lib/solidus_seo/jsonld/list.rb, line 40 def already_a_list? data.is_a?(Hash) && data["@type"] == list_type end
as_list_item(item)
click to toggle source
# File lib/solidus_seo/jsonld/list.rb, line 44 def as_list_item(item) { '@type': 'ListItem', position: list_items.size + 1, url: get_list_item_url(item) } end
build_list()
click to toggle source
# File lib/solidus_seo/jsonld/list.rb, line 32 def build_list @data = { "@context": "http://schema.org", "@type": list_type, "itemListElement": list_items }.with_indifferent_access end
get_list_item_url(item)
click to toggle source
# File lib/solidus_seo/jsonld/list.rb, line 52 def get_list_item_url(item) item = item.try(:to_jsonld) || item item.try(:url) || item.try('[]', :url) || raise("ListItem must define an URL") end
list_type()
click to toggle source
# File lib/solidus_seo/jsonld/list.rb, line 17 def list_type 'ItemList' end
parse()
click to toggle source
# File lib/solidus_seo/jsonld/list.rb, line 21 def parse return {} if @data.blank? return @data if already_a_list? @data.each do |it| list_items << as_list_item(it) end build_list end