Sha256: 30bbcf1a7031aeae2f9c0b2132147c23cc4f2701a52108317a530bdfc32859d3

Contents?: true

Size: 672 Bytes

Versions: 1

Compression:

Stored size: 672 Bytes

Contents

module DataModel
	class Registry
		def self.instance
			@instance ||= new(defaults)
		end

		def self.register(name, type)
			instance.register(name, type)
		end

		def self.defaults
			{
				string: Type.string,
				hash: Type.hash
			}
		end

		def initialize(*defaults)
			@types = {}

			defaults.each do |d|
				d.each do |k, s|
					register(k, s)
				end
			end
		end

		def register(name, type)
			@types[name] = Model.defaults.merge(type)
		end

		def type?(name)
			@types.key?(name)
		end

		def type(name, property = nil)
			unless @types.key?(name)
				raise "#{name} is not registered as a type"
			end

			@types.fetch(name).merge(property:)
		end
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
data_model-0.0.1 lib/data_model/registry.rb