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