module Obvious::Obj::ClassMethods
Public Instance Methods
define(method, input = {})
click to toggle source
# File lib/obvious/obj.rb, line 11 def define method, input = {}, &block define_method(method) do |method_input = {}| block_input = {} method_input.each do |k,v| if input[k].nil? raise ArgumentError.new "invalid input field #{k}" end unless v.is_a? input[k] raise ArgumentError.new "invalid type for #{k} expected #{input[k]}" end end input.each do |k,v| if method_input[k].nil? raise ArgumentError.new "missing input field #{k}" end end self.instance_exec method_input, &block end end