class Disposable::Expose
Expose
allows renaming properties in order to expose a different API. It can be configured from any Representable schema.
class AlbumTwin < Disposable::Twin property :name, from: :title end class AlbumExpose < Disposable::Expose from AlbumTwin end AlbumExpose.new(OpenStruct.new(title: "AFI")).name #=> "AFI"
Public Class Methods
from(schema)
click to toggle source
# File lib/disposable/expose.rb, line 16 def from(schema) schema.each do |definition| process_definition!(definition) end self end
new(model)
click to toggle source
# File lib/disposable/expose.rb, line 38 def initialize(model) @model = model end
Private Class Methods
accessors!(public_name, private_name, definition)
click to toggle source
# File lib/disposable/expose.rb, line 31 def accessors!(public_name, private_name, definition) define_method("#{public_name}") { @model.send("#{private_name}") } define_method("#{public_name}=") { |*args| @model.send("#{private_name}=", *args) } end
process_definition!(definition)
click to toggle source
# File lib/disposable/expose.rb, line 24 def process_definition!(definition) public_name = definition[:name] private_name = definition[:private_name] || public_name accessors!(public_name, private_name, definition) end