Module: Sumac::ExposedObject::IncludedInstanceMethods

Defined in:
lib/sumac/exposed_object.rb

Instance Method Summary collapse

Instance Method Details

#__child__(key) ⇒ Object



48
49
50
51
# File 'lib/sumac/exposed_object.rb', line 48

def __child__(key)
  raise 'child_accessor not defined' unless __child_accessor__
  __send__(__child_accessor__, key)
end

#__child_accessor__Object



53
54
55
# File 'lib/sumac/exposed_object.rb', line 53

def __child_accessor__
  @__child_accessor__ || self.class.__child_accessor__
end

#__exposed_methods__Object



57
58
59
60
# File 'lib/sumac/exposed_object.rb', line 57

def __exposed_methods__
  @__exposed_methods__ ||= []
  @__exposed_methods__ + self.class.__exposed_methods__
end

#__native_id__Object



62
63
64
# File 'lib/sumac/exposed_object.rb', line 62

def __native_id__
  __id__
end

#__sumac_exposed_object__Object



66
67
# File 'lib/sumac/exposed_object.rb', line 66

def __sumac_exposed_object__
end

#child_accessor(method_name = nil) ⇒ Object



69
70
71
72
73
74
# File 'lib/sumac/exposed_object.rb', line 69

def child_accessor(method_name = nil)
  unless method_name.is_a?(Symbol) || method_name.is_a?(String)
    raise ArgumentError, "'child_accessor' expects a method name as a string for symbol"
  end
  @__child_accessor__ = method_name.to_s
end

#expose(*method_names) ⇒ Object

Raises:



76
77
78
79
80
81
82
83
# File 'lib/sumac/exposed_object.rb', line 76

def expose(*method_names)
  raise ArgumentError, 'at least one argument expected' if method_names.empty?
  unless method_names.each { |method_name| method_name.is_a?(Symbol) || method_name.is_a?(String) }
    raise 'only symbols or strings expected'  
  end
  @__exposed_methods__ ||= []
  @__exposed_methods__.concat(method_names.map(&:to_s))
end