Class: Fiona7::AttributeWriters::Helpers::LinkSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/fiona7/attribute_writers/helpers/link_serializer.rb

Instance Method Summary collapse

Constructor Details

#initialize(obj, klass) ⇒ LinkSerializer

Returns a new instance of LinkSerializer.



5
6
7
8
# File 'lib/fiona7/attribute_writers/helpers/link_serializer.rb', line 5

def initialize(obj, klass)
  self.obj   = obj
  self.klass = klass
end

Instance Method Details

#call(link) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/fiona7/attribute_writers/helpers/link_serializer.rb', line 10

def call(link)
  link = link.symbolize_keys
  new_link = {}

  if link[:url]
    # handle www.example.com
    new_link[:url] = "external:#{link[:url]}" unless link[:url] =~ /\A[a-zA-Z][a-zA-Z0-9+.-]:/
  elsif obj_id = link[:obj_id] 
    # FIXME: use a repository here to speed up the lookup
    new_link[:url] = self.klass.find(obj_id).path
  end


  new_link[:url] ||= link[:url] 
  new_link[:title] = link[:title] if link[:title]
  new_link[:target] = link[:target] if link[:target]
  new_link[:url] = "#{new_link[:url]}?#{link[:query]}" if link[:query]
    new_link[:url] = "#{new_link[:url]}##{link[:fragment]}" if link[:fragment]

  new_link
end