class Deterministic::ProtocolBuilder
Constants
- Signature
Public Class Methods
new(typevar, block)
click to toggle source
# File lib/deterministic/protocol.rb, line 4 def initialize(typevar, block) @typevar, @block = typevar, block @protocol = Class.new end
Public Instance Methods
build()
click to toggle source
# File lib/deterministic/protocol.rb, line 9 def build instance_exec(&@block) @protocol end
fn(signature, &block)
click to toggle source
# File lib/deterministic/protocol.rb, line 20 def fn(signature, &block) m = signature.to_a.flatten name = m[0] return_type = m[-1] params = Hash[(m[1..-2][0] || {}).map { |k, v| [k[0], v] }] @protocol.instance_eval { define_singleton_method(name) { Signature.new(name, params, return_type, block) } } @protocol.instance_eval { if block define_method(name) { |*args| block.call(args) } end } end
method_missing(m, *args)
click to toggle source
# File lib/deterministic/protocol.rb, line 14 def method_missing(m, *args) [m, args] end