Sha256: 1cd52d35bee469f052255c3177157c5a256b1d73b0746858452291c21d9866f4

Contents?: true

Size: 1 KB

Versions: 26

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true

module MiniDefender
  class RulesFactory
    def self.blueprints
      @@blueprints ||= []
    end

    def self.register(klass)
      blueprints << klass
    end

    def init_set(rule_set)
      rule_set = rule_set.split('|') if rule_set.is_a?(String)
      raise ArgumentError, 'Rule set must be a string or an array' unless rule_set.is_a?(Array)

      rule_set.map do |rule|
        unless rule.is_a?(String) || rule.is_a?(Rule)
          raise ArgumentError, 'Rule must be a string or an instance of MiniDefender::Rule'
        end

        rule.is_a?(String) ? init_rule(rule) : rule
      end
    end

    def init_rule(signature)
      @blueprints ||= RulesFactory.blueprints

      signature = signature.split(':')
      blueprint = @blueprints.find { |b| b.available? && b.signature == signature[0] }
      raise ArgumentError, "The rule name #{signature[0]} is invalid or not available" if blueprint.nil?

      blueprint.make(signature[1..].join(':').split(','))
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
mini_defender-0.5.1 lib/mini_defender/rules_factory.rb
mini_defender-0.5.0 lib/mini_defender/rules_factory.rb
mini_defender-0.4.1 lib/mini_defender/rules_factory.rb
mini_defender-0.4.0 lib/mini_defender/rules_factory.rb
mini_defender-0.3.14 lib/mini_defender/rules_factory.rb
mini_defender-0.3.13 lib/mini_defender/rules_factory.rb
mini_defender-0.3.12 lib/mini_defender/rules_factory.rb
mini_defender-0.3.11 lib/mini_defender/rules_factory.rb
mini_defender-0.3.10 lib/mini_defender/rules_factory.rb
mini_defender-0.3.9 lib/mini_defender/rules_factory.rb
mini_defender-0.3.8 lib/mini_defender/rules_factory.rb
mini_defender-0.3.7 lib/mini_defender/rules_factory.rb
mini_defender-0.3.6 lib/mini_defender/rules_factory.rb
mini_defender-0.3.5 lib/mini_defender/rules_factory.rb
mini_defender-0.3.2 lib/mini_defender/rules_factory.rb
mini_defender-0.3.0 lib/mini_defender/rules_factory.rb
mini_defender-0.2.0 lib/mini_defender/rules_factory.rb
mini_defender-0.1.10 lib/mini_defender/rules_factory.rb
mini_defender-0.1.9 lib/mini_defender/rules_factory.rb
mini_defender-0.1.8 lib/mini_defender/rules_factory.rb