Sha256: b10e8b24db6debe7f13a39b70acd47f5cb0cda0f193211facf70413a6254bba5

Contents?: true

Size: 955 Bytes

Versions: 7

Compression:

Stored size: 955 Bytes

Contents

class ProconBypassMan::Procon::ModeRegistry
  class Mode
    attr_accessor :name, :binaries, :source_binaries

    def initialize(name: , binaries: )
      self.name = name
      self.binaries = binaries
      self.source_binaries = binaries.dup
    end

    def next_binary
      binary = binaries.shift
      unless binary
        self.binaries = source_binaries.dup
        return binaries.shift
      end
      return binary
    end
  end

  PRESETS = {
    manual: [],
  }

  def self.install_plugin(klass)
    if plugins[klass.name]
      raise "すでに登録済みです"
    end
    plugins[klass.name] = klass.binaries
  end

  def self.load(name)
    b = PRESETS[name] || plugins[name] || raise("unknown mode")
    Mode.new(name: name, binaries: b.dup)
  end

  def self.reset!
    ProconBypassMan::Configuration.instance.mode_plugins = {}
  end

  def self.plugins
    ProconBypassMan::Configuration.instance.mode_plugins
  end

  reset!
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
procon_bypass_man-0.1.8 lib/procon_bypass_man/procon/mode_registry.rb
procon_bypass_man-0.1.7 lib/procon_bypass_man/procon/mode_registry.rb
procon_bypass_man-0.1.6 lib/procon_bypass_man/procon/mode_registry.rb
procon_bypass_man-0.1.5 lib/procon_bypass_man/procon/mode_registry.rb
procon_bypass_man-0.1.4 lib/procon_bypass_man/procon/mode_registry.rb
procon_bypass_man-0.1.3 lib/procon_bypass_man/procon/mode_registry.rb
procon_bypass_man-0.1.2 lib/procon_bypass_man/procon/mode_registry.rb