module LinkedRails::Serializer::ClassMethods
Public Instance Methods
anonymous_object?(object)
click to toggle source
# File lib/linked_rails/serializer.rb, line 24 def anonymous_object?(object) object.iri.anonymous? end
default_enum_opts(attr)
click to toggle source
# File lib/linked_rails/serializer.rb, line 52 def default_enum_opts(attr) enum_opts = serializable_class.try(:defined_enums).try(:[], attr.to_s) return [] if enum_opts.blank? HashWithIndifferentAccess[ enum_opts&.map { |k, _v| [k.to_sym, {}] } ] end
enum(attr, opts = nil) { |object, params| ... }
click to toggle source
# File lib/linked_rails/serializer.rb, line 28 def enum(attr, opts = nil) self._enums ||= HashWithIndifferentAccess.new opts[:type] ||= Vocab.ontola[:FormOption] opts[:options] ||= default_enum_opts(attr) self._enums[attr] = enum_values(attr, opts) attribute(attr, if: opts[:if], predicate: opts[:predicate]) do |object, params| block_given? ? yield(object, params) : enum_value(attr, object) end end
enum_options(key)
click to toggle source
# File lib/linked_rails/serializer.rb, line 39 def enum_options(key) _enums && _enums[key] end
enum_value(key, object)
click to toggle source
# File lib/linked_rails/serializer.rb, line 43 def enum_value(key, object) options = enum_options(key) return if options.blank? raw_value = object.send(key) options[raw_value].try(:iri) if raw_value.present? end
has_many(key, opts = {})
click to toggle source
Calls superclass method
# File lib/linked_rails/serializer.rb, line 72 def has_many(key, opts = {}) opts[:id_method_name] = :iri return super if block_given? super do |object| object.send(key) end end
has_one(key, opts = {})
click to toggle source
rubocop:disable Naming/PredicateName
Calls superclass method
# File lib/linked_rails/serializer.rb, line 62 def has_one(key, opts = {}) opts[:id_method_name] = :iri return super if block_given? super do |object| object.send(key) end end
named_object?(object)
click to toggle source
rubocop:enable Naming/PredicateName
# File lib/linked_rails/serializer.rb, line 83 def named_object?(object) !object.iri.anonymous? end
never(_object, _params)
click to toggle source
# File lib/linked_rails/serializer.rb, line 87 def never(_object, _params) false end
serializable_class()
click to toggle source
# File lib/linked_rails/serializer.rb, line 91 def serializable_class @serializable_class ||= name.gsub('Serializer', '').safe_constantize end
serialize_image(obj)
click to toggle source
# File lib/linked_rails/serializer.rb, line 95 def serialize_image(obj) if obj.is_a?(String) || obj.is_a?(Symbol) RDF::URI(obj.to_s.gsub(/^fa-/, 'http://fontawesome.io/icon/')) else obj.presence end end
with_collection(name, opts = {})
click to toggle source
# File lib/linked_rails/serializer.rb, line 103 def with_collection(name, opts = {}) collection_name = "#{name.to_s.singularize}_collection" page_size = opts.delete(:page_size) display = opts.delete(:display) opts[:association] ||= name opts[:polymorphic] ||= true opts[:if] ||= method(:named_object?) has_one collection_name, opts do |object, params| object.send(collection_name, user_context: params[:scope], display: display, page_size: page_size) end end
Private Instance Methods
enum_values(attr, opts)
click to toggle source
# File lib/linked_rails/serializer.rb, line 118 def enum_values(attr, opts) # rubocop:disable Metrics/MethodLength Hash[ opts[:options].map do |option_key, option_values| [ option_key, LinkedRails::EnumValue.new( { key: option_key, attr: attr, klass: serializable_class, type: opts[:type] }.merge(option_values) ) ] end ] end