Module: Implementation::ImplMethods
- Defined in:
- lib/definition.rb
Constant Summary collapse
- NEW =
Class.instance_method(:new)
Instance Method Summary collapse
- #assert_args(name, args) ⇒ Object
- #assert_implemented(once = false) ⇒ Object
- #assert_ret(name, ret) ⇒ Object
- #define(ret = Definition::Const::Any) ⇒ Object
- #impl_initialize(table = {}) ⇒ Object
- #implement(interface) ⇒ Object
- #new ⇒ Object
Instance Method Details
#assert_args(name, args) ⇒ Object
166 167 168 169 |
# File 'lib/definition.rb', line 166 def assert_args(name, args) defns = @define_table[name] defns.each {|defn| defn.assert_args(args)} end |
#assert_implemented(once = false) ⇒ Object
159 160 161 162 163 164 165 |
# File 'lib/definition.rb', line 159 def assert_implemented(once = false) nodefs = @define_table.keys - instance_methods(true).map{|m|m.to_sym} unless nodefs.empty? raise NotImplementedError, "not implemented #{nodefs.join(', ')}" end @skip_assertion ||= once end |
#assert_ret(name, ret) ⇒ Object
170 171 172 173 174 |
# File 'lib/definition.rb', line 170 def assert_ret(name, ret) defns = @define_table[name] defns.each {|defn| defn.assert_ret(ret)} return ret end |
#define(ret = Definition::Const::Any) ⇒ Object
149 150 151 152 |
# File 'lib/definition.rb', line 149 def define(ret=Definition::Const::Any) defn = Definition.new(ret, self) return defn.to_enroll(@define_table) end |
#impl_initialize(table = {}) ⇒ Object
175 176 177 |
# File 'lib/definition.rb', line 175 def impl_initialize(table = {}) @define_table = table end |
#implement(interface) ⇒ Object
153 154 155 156 157 158 |
# File 'lib/definition.rb', line 153 def implement(interface) interface.each do |name, defs| @define_table[name] ||= [] @define_table[name] += defs end end |
#new ⇒ Object
145 146 147 148 |
# File 'lib/definition.rb', line 145 def new assert_implemented unless @skip_assertion NEW.bind(self).call end |