class Apps::Common::Schema::Base
Constants
- DEFAULT_CONTEXT
Attributes
context[R]
force_context[R]
Public Class Methods
new(**attrs)
click to toggle source
# File lib/apps/common/schema/base.rb, line 12 def initialize(**attrs) prune(attrs).each { |name, value| instance_variable_set(:"@#{name}", value) } end
Public Instance Methods
as_json(force_context: false)
click to toggle source
# File lib/apps/common/schema/base.rb, line 44 def as_json(force_context: false) serialized = serialize if force_context == true serialized['@context'] ||= DEFAULT_CONTEXT elsif force_context.is_a?(String) serialized['@context'] = force_context end prune serialized end
serialize()
click to toggle source
# File lib/apps/common/schema/base.rb, line 20 def serialize { "@context" => serialized_context, "@type" => type } end
serialize_hash(hash, key: 'name', value: 'value')
click to toggle source
# File lib/apps/common/schema/base.rb, line 27 def serialize_hash(hash, key: 'name', value: 'value') hash.map do |k, v| { key => k, value => v } end end
serialized_context()
click to toggle source
# File lib/apps/common/schema/base.rb, line 36 def serialized_context if force_context context || DEFAULT_CONTEXT else context end end
to_json(force_context: false, pretty: false)
click to toggle source
# File lib/apps/common/schema/base.rb, line 56 def to_json(force_context: false, pretty: false) hash = as_json(force_context: force_context) pretty ? JSON.pretty_generate(hash) : JSON.dump(hash) end
to_script(force_context: false, pretty: true)
click to toggle source
# File lib/apps/common/schema/base.rb, line 62 def to_script(force_context: false, pretty: true) json = to_json(pretty: pretty, force_context: force_context) %`<script type="application/ld+json">\n#{json}\n</script>` end
type()
click to toggle source
# File lib/apps/common/schema/base.rb, line 16 def type @type ||= self.class.name.split('::')[-1] end
Protected Instance Methods
prune(hash)
click to toggle source
# File lib/apps/common/schema/base.rb, line 70 def prune(hash) hash.each_with_object({}) do |(key, value), result| # recursive prune result[key] = case value when nil next when Array next if value.empty? value.map{ |v| v.is_a?(Hash) ? prune(v) : v } when Hash value = prune value next if value.empty? value else value end end end