Sha256: 7d9d42c49a5121a839ac1d58cda3daee04c62c47dc5a0bc2a14bac72439200d5
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
# frozen_string_literal: true require 'forwardable' module Taksi class Registry include ::Singleton class << self extend ::Forwardable def_delegators :instance, :find, :add, :clear! end class ScreenNotFoundError < ::StandardError; end class ScreenAltenativeNotFoundError < ::StandardError; end def initialize clear! end def add(klass, name) sym_name = name.to_sym @screens[sym_name] ||= [] @screens[sym_name] << klass end def clear! @screens = {} end def find(name, version, alternative = nil) screens_from_name = @screens[name.to_sym] raise ScreenNotFoundError if screens_from_name.blank? parsed_version = ::Gem::Version.new(version) screen = screens_from_name.find do |screen| next false unless screen.version_pattern.satisfied_by?(parsed_version) next true if alternative.blank? next true if screen.alternatives.blank? next true if screen.alternatives.include?(alternative) false end raise ScreenNotFoundError if screen.blank? screen end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
taksi-0.1.0 | lib/taksi/registry.rb |