def coercion(source, target = main_target_domain, converter = nil, &convproc)
      @rules.send(@appender, [source, target, converter || convproc])
      self
    end
def coercion(source, target = main_target_domain, converter = nil, &convproc)
      @rules.send(@appender, [source, target, converter || convproc])
      self
    end
Adds a coercion rule from a source to a target domain.

 The conversion can be provided through `converter` or via a block
 directly. See main documentation about recognized converters.

 Example:

   Myrrha.coercions do |r|

     # With an explicit proc
     r.coercion String, Integer, lambda{|v,t|
       Integer(v)
     }

     # With an implicit proc
     r.coercion(String, Float) do |v,t|
       Float(v)
     end

   end

 @param source [Domain] a source domain (mimicing Domain)
 @param target [Domain] a target domain (mimicing Domain)
 @param converter [Converter] an optional converter (mimic Converter)
 @param convproc [Proc] used when converter is not specified
 @return self