Module: Sumac::ExposedObjectChild::ExtendedClassMethods

Defined in:
lib/sumac/exposed_object_child.rb

Instance Method Summary collapse

Instance Method Details

#__exposed_methods__Object



115
116
117
# File 'lib/sumac/exposed_object_child.rb', line 115

def __exposed_methods__
  @__exposed_methods__ ||= []
end

#__key__Object



124
125
126
127
# File 'lib/sumac/exposed_object_child.rb', line 124

def __key__
  raise 'key_accessor not defined' unless @__key_accessor__
  __send__(@__key_accessor__)
end

#__parent__Object



119
120
121
122
# File 'lib/sumac/exposed_object_child.rb', line 119

def __parent__
  raise 'parent_accessor not defined' unless @__parent_accessor__
  __send__(@__parent_accessor__)
end

#__sumac_exposed_object__Object



129
130
# File 'lib/sumac/exposed_object_child.rb', line 129

def __sumac_exposed_object__
end

#expose(*method_names) ⇒ Object

Raises:



132
133
134
135
136
137
138
139
# File 'lib/sumac/exposed_object_child.rb', line 132

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

#inherited(base) ⇒ Object



109
110
111
112
113
# File 'lib/sumac/exposed_object_child.rb', line 109

def inherited(base)
  base.instance_variable_set(:@__exposed_methods__, @__exposed_methods__.dup)
  base.instance_variable_set(:@__parent_accessor__, @__parent_accessor__)
  base.instance_variable_set(:@__key_accessor__, @__key_accessor__)
end

#key_accessor(method_name = nil) ⇒ Object



148
149
150
151
152
153
# File 'lib/sumac/exposed_object_child.rb', line 148

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

#parent_accessor(method_name = nil) ⇒ Object



141
142
143
144
145
146
# File 'lib/sumac/exposed_object_child.rb', line 141

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