Class: Fiona7::AttributeWriters::Helpers::LinkSerializer
- Inherits:
-
Object
- Object
- Fiona7::AttributeWriters::Helpers::LinkSerializer
- Defined in:
- lib/fiona7/attribute_writers/helpers/link_serializer.rb
Instance Method Summary collapse
- #call(link) ⇒ Object
-
#initialize(obj, klass) ⇒ LinkSerializer
constructor
A new instance of LinkSerializer.
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 |