Sha256: 9ea325b76cd9cadd9ca7a2be410ecf64544d0b5f4ecb9b97b8df9287713cc474
Contents?: true
Size: 1.24 KB
Versions: 3
Compression:
Stored size: 1.24 KB
Contents
require 'active_support/core_ext/string/access' module Avromatic # The ModelRegistry class is used to store and fetch nested models by # their fullname. An optional namespace prefix can be removed from the full # name that is used to store and fetch models. class ModelRegistry def initialize(remove_namespace_prefix: nil) @prefix = remove_namespace_prefix @hash = Hash.new end def clear @hash.clear end def [](fullname) @hash.fetch(fullname) end def register(model) raise 'models with a key schema are not supported' if model.key_avro_schema name = model.avro_schema.fullname name = remove_prefix(name) raise "'#{name}' has already been registered" if registered?(name) @hash[name] = model end def registered?(fullname) @hash.key?(fullname) end def remove_prefix(name) return name if @prefix.nil? value = case @prefix when String name.start_with?(@prefix) ? name.from(@prefix.length) : name when Regexp name.sub(@prefix, '') else raise "unsupported `remove_namespace_prefix` value: #{@prefix}" end value.start_with?('.') ? value.from(1) : value end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
avromatic-0.10.0 | lib/avromatic/model_registry.rb |
avromatic-0.10.0.rc1 | lib/avromatic/model_registry.rb |
avromatic-0.10.0.rc0 | lib/avromatic/model_registry.rb |