class Api::Presenter::Resource
Public Class Methods
host()
click to toggle source
# File lib/api/presenter/resource.rb, line 27 def host @@host ||= '' end
host=(v)
click to toggle source
# File lib/api/presenter/resource.rb, line 31 def host=(v) @@host = v end
inherited(subclass)
click to toggle source
# File lib/api/presenter/resource.rb, line 43 def inherited(subclass) (subclass.properties << properties).flatten! end
link(name, value, &condition)
click to toggle source
# File lib/api/presenter/resource.rb, line 17 def link(name, value, &condition) condition = Proc.new { true } unless block_given? links[name] = { value: value, condition: condition } end
links()
click to toggle source
# File lib/api/presenter/resource.rb, line 23 def links @links ||= {} end
new(resource)
click to toggle source
# File lib/api/presenter/resource.rb, line 4 def initialize(resource) @resource = resource end
prefix()
click to toggle source
# File lib/api/presenter/resource.rb, line 35 def prefix @@prefix ||= '' end
prefix=(v)
click to toggle source
# File lib/api/presenter/resource.rb, line 39 def prefix=(v) @@prefix = v end
properties()
click to toggle source
# File lib/api/presenter/resource.rb, line 13 def properties @properties ||= [] end
property(value)
click to toggle source
# File lib/api/presenter/resource.rb, line 9 def property(value) properties << value unless properties.include? value end
Public Instance Methods
build_links(options = {})
click to toggle source
# File lib/api/presenter/resource.rb, line 56 def build_links(options = {}) links = {} self.class.links.each do |link_name, link_value| link_actual_value = link_value[:value].dup # retrieve stubs to replace looking for {{method_to_call}} stubs = link_actual_value.scan(/\{\{(\w+)\}\}/).flatten # now we replace them stubs.each{ |stub| link_actual_value.gsub!(/\{\{#{stub}\}\}/, self.send(stub.to_sym).to_s) } # and finish the url links[link_name.to_s] = { "href" => "#{self.class.host}#{self.class.prefix}#{link_actual_value}" } if link_value[:condition].call(options) end links end
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/api/presenter/resource.rb, line 48 def method_missing(method, *args, &block) if self.class.properties.include? method @resource.send(method, *args, &block) else super end end
present()
click to toggle source
# File lib/api/presenter/resource.rb, line 79 def present Api::Presenter::Hypermedia.present self end
self_link?(options = {})
click to toggle source
# File lib/api/presenter/resource.rb, line 75 def self_link?(options = {}) true end