Sha256: e9598879bb0e64867696b96aa1afcb1d894f428e3d6d8adeeae559c5a3f475b0

Contents?: true

Size: 546 Bytes

Versions: 24

Compression:

Stored size: 546 Bytes

Contents

# frozen_string_literal

module MiniDefender
  class RulesExpander
    # @param [Hash] rules
    # @param [Hash] flat_data
    # @return [Hash]
    def expand(rules, flat_data)
      rules
        .map { |k, v| [Regexp.compile('\A' + k.gsub(/\*/, '\d+') + '\Z'), v] }.to_h
        .map { |p, set|
          data_rules = flat_data.filter { |k, _| p.match? k }.map { |k, _| [k, set] }
          data_rules.length > 0 ? data_rules : [[p.source.gsub(/\\[AZ]/, '').gsub('\d+', '0'), set]]
        }
        .flatten(1)
        .to_h
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

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