Sha256: 961d5c962224d595864567a596a906ac731b7d6e8a6aa5c401b8139acd805ed6

Contents?: true

Size: 364 Bytes

Versions: 3

Compression:

Stored size: 364 Bytes

Contents

module Terrestrial
  class StructFactory
    def initialize(struct_class)
      @constructor = struct_class.method(:new)
      @members = struct_class.members
    end

    attr_reader :constructor, :members
    private     :constructor, :members

    def call(data)
      constructor.call(
        *members.map { |m| data.fetch(m, nil) }
      )
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
terrestrial-0.5.0 lib/terrestrial/struct_factory.rb
terrestrial-0.3.0 lib/terrestrial/struct_factory.rb
terrestrial-0.1.1 lib/terrestrial/struct_factory.rb