module SolidusSeo::Jsonld::Builder

Private Instance Methods

build_jsonld_with(base = {}, *props) click to toggle source
# File lib/solidus_seo/jsonld/builder.rb, line 12
def build_jsonld_with(base = {}, *props)
  props.inject(base) do |acc, it|
    builder_method = "build_#{it}_prop"
    prop_result = respond_to?(builder_method, true) && send(builder_method) || {}
    acc.merge prop_result
  end
end
build_prop(prop_name, prop_data, prop_base = {}) click to toggle source
# File lib/solidus_seo/jsonld/builder.rb, line 20
def build_prop(prop_name, prop_data, prop_base = {})
  # ignore empty props or not yet overridden methods
  return {} if prop_data.blank?

  prop_data = merge_prop_data(prop_base, prop_data)

  { prop_name.to_sym => prop_data }
end
merge_prop_data(base_data, new_data) click to toggle source
# File lib/solidus_seo/jsonld/builder.rb, line 29
def merge_prop_data(base_data, new_data)
  if new_data.respond_to? :reverse_merge # Hash
    new_data.reverse_merge base_data
  elsif new_data.respond_to? :map # Array
    new_data.map { |it| merge_prop_data(base_data, it) }
  else # Scalar, pass it through
    new_data
  end
end