def self.transform(from, desc=nil, &block)
to = (desc && desc.is_a?(Hash) && desc[:to])
condition = (desc && desc.is_a?(Hash) && desc[:if])
raise StandardError.new("No transformation target specified.") unless to
block_desc = TransformationDescription.new(block, to)
if condition
_transformer_blocks[from] ||= {}
raise StandardError.new("Multiple (non-conditional) transformations for class #{from.name}.") unless _transformer_blocks[from].is_a?(Hash)
_transformer_blocks[from][condition] = block_desc
else
raise StandardError.new("Multiple (non-conditional) transformations for class #{from.name}.") unless _transformer_blocks[from].nil?
_transformer_blocks[from] = block_desc
end
end