Sha256: 0f7cd7bd84010651157e22448321674a86ca1172944e312ab08d95f2ae9644c7

Contents?: true

Size: 564 Bytes

Versions: 2

Compression:

Stored size: 564 Bytes

Contents

module Finitio
  module DataType

    def dress(value, handler = DressHelper.new)
      ad_type.dress(value, handler)
    end

    def contract(name, infotype)
      dresser   = method(name)
      undresser = instance_method(:"to_#{name}")
      ad_contracts[name] = [
        Finitio.type(infotype),
        dresser,
        ->(d){ undresser.bind(d).call }
      ]
    end

  private

    def ad_type
      @ad_type ||= Finitio.adt(self, ad_contracts)
    end

    def ad_contracts
      @ad_contracts ||= {}
    end

  end # module DataType
end # module Finitio

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
finitio-0.4.1 lib/finitio/data_type.rb
finitio-0.4.0 lib/finitio/data_type.rb