Sha256: 101798d4f8cc764fe90d704aef4ca2c722d10a7bf6d7e85697b36acb8ea35c44
Contents?: true
Size: 840 Bytes
Versions: 4
Compression:
Stored size: 840 Bytes
Contents
module XDR::DSL::Union def switch_on(type, name) raise ArgumentError if self.switch_type.present? self.switch_type = type self.switch_name = name alias_method name, :switch end def switch(switch, arm=nil) raise ArgumentError, "`switch_on` not defined yet" if self.switch_type.nil? switch = normalize_switch(switch) self.switches = self.switches.merge(switch => arm) end def attribute(name, type) raise ArgumentError, "#{type} does not convert to xdr" unless type.is_a?(XDR::Concerns::ConvertsToXDR) self.arms = self.arms.merge(name => type) define_attribute_methods name end private def normalize_switch(switch) case switch when self.switch_type ; switch when :default ; switch else ; self.switch_type.from_name(switch) end end end
Version data entries
4 entries across 4 versions & 2 rubygems
Version | Path |
---|---|
payshares-xdr-0.0.2 | lib/xdr/dsl/union.rb |
xdr-0.0.3 | lib/xdr/dsl/union.rb |
xdr-0.0.2 | lib/xdr/dsl/union.rb |
xdr-0.0.1 | lib/xdr/dsl/union.rb |