Module: HalApi::Representer::LinkSerialize::ClassMethods

Defined in:
lib/hal_api/representer/link_serialize.rb

Instance Method Summary collapse

Instance Method Details



9
10
11
12
# File 'lib/hal_api/representer/link_serialize.rb', line 9

def link(options, &block)
  set_link_property(options)
  super(options, &block)
end


14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/hal_api/representer/link_serialize.rb', line 14

def set_link_property(options)
  if options.is_a?(Hash) && (options.delete(:writeable) || options[:reader])
    name = options[:rel].to_s.split(':').last.split('/').last
    pname = "set_#{name}_uri"
    reader = options.delete(:reader) || ->(obj) do
      doc = obj[:doc]
      try("#{name}_id=", id_from_url(doc[pname])) if doc[pname]
      Representable::Pipeline::Stop
    end

    property(pname, readable: false, reader: reader)
  end
end