class DataContract::Scatter
Public Class Methods
!(contract_list, receiver, contract_module)
click to toggle source
# File lib/data_contract/scatter.rb, line 7 def self.!(contract_list, receiver, contract_module) assignable_contracts = contract_list.assignable(receiver) instance = new contract_list, contract_list.obj, receiver, assignable_contracts, contract_module instance.! end
Public Instance Methods
!()
click to toggle source
# File lib/data_contract/scatter.rb, line 13 def ! if assignable_contracts.empty? raise ContractError, "#{receiver.class.name} cannot be assigned from #{source.class.name} without a shared or compatible contract" end if contract_module @assignable_contracts = specific_contract end assignable_contracts.each do |contract| contract.scatter receiver end receiver end
specific_contract()
click to toggle source
# File lib/data_contract/scatter.rb, line 29 def specific_contract contract = contract_list[contract_module] unless assignable_contracts.include? contract raise ContractError, "#{receiver.class.name} cannot be assigned from #{contract_module.name} without a shared or compatible contract" end [contract] end