Skip to content

simcha/mappum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

== mappum

Mappum is the tree to tree (object, bean etc.) mapping DSL. The example of usage
is provided below. More documentation will follow.

Mappum.catalogue_add "CRM-ERP" do

  map ERP::Person, CRM::Client do |p, c|

    #simple mapping
    map p.title <=> c.title

    #map with simple function call
    map p.person_id << c.key.downcase
    map p.person_id.upcase >> c.key

    #dictionary use
    map p.sex <=> c.sex_id, :dict => {"F" => "1", "M" => "2"}

    #submaps
    map p.address(ERP::Address) <=> c.address(CRM::Address) do |a, b|
      map a.street <=> b.street
      #etc.
    end

    #subobject to fields
    map p.main_phone(ERP::Phone) <=> c.self do |a, b|
      map a.number <=> b.main_phone
      map a.type <=> b.main_phone_type
    end

    #compilcated function call
    map p.name >> c.surname do |name|
      name + "ski"
    end
    map p.name << c.surname do |name|
      if name =~ /ski/
        name[0..-4]
      else
        name
      end
    end
    #field to array and array to field
    map p.email1 <=> c.emails[0]
    map p.email2 <=> c.emails[1]
    map p.email3 <=> c.emails[2]

    map p.phones(ERP::Phone)[] <=> c.phones[] do |a, b|
      map a.number <=> b.self
    end

  end
end

About

Object to object (tree, bean etc.) mapping DSL.

Resources

License

Stars

Watchers

Forks

Packages

No packages published