Sha256: aae8c3f579893f3856a6b6b971e5607a3d12c8b544e205d82d5d806fd543a125
Contents?: true
Size: 1.66 KB
Versions: 3
Compression:
Stored size: 1.66 KB
Contents
require_dependency 'solidus_seo/jsonld/base' require_dependency 'solidus_seo/jsonld/breadcrumbs' require_dependency 'solidus_seo/jsonld/list' module SolidusSeo module Jsonld module TagHelper # @param item [Object] A jsonld hash or any object that implements `to_jsonld` method # @param opts[:exclude] [Array] Blacklist of attributes from jsonld # @param opts[:only] [Array] Whitelist of attributes from jsonld # @param opts[:force] [Boolean] Force cache miss # # @return [String] Retrieves jsonld tag markup. def jsonld(item, opts = {}) jsonld_fetch(:base, item, opts.symbolize_keys) end def jsonld_list(collection) capture_jsonld(:list, jsonld_fetch(:list, collection)) end def jsonld_breadcrumbs(breadcrumbs) jsonld_fetch(:breadcrumbs, breadcrumbs) end def captured_jsonld @captured_jsonld ||= {} @captured_jsonld.values.join("\n").html_safe end def dump_jsonld captured_jsonld + jsonld(current_store) end private def capture_jsonld(key, value) @captured_jsonld ||= {} return unless value @captured_jsonld[key.to_sym] = value nil # Ensure no output is returned end def jsonld_fetch(type = :base, items = nil, opts = {}) force = opts.extract!(:force) || false jsonld_cache_key = [:jsonld, items, *opts.values].compact Rails.cache.fetch(jsonld_cache_key, force: force) do jsonld_builder_class = "::SolidusSeo::Jsonld::#{type.to_s.titleize}".constantize jsonld_builder_class.new(items).print(opts) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
solidus_seo-1.0.10 | lib/solidus_seo/jsonld/tag_helper.rb |
solidus_seo-1.0.8 | lib/solidus_seo/jsonld/tag_helper.rb |
solidus_seo-1.0.7 | lib/solidus_seo/jsonld/tag_helper.rb |