module CombinationExtractor

Constants

VERSION

Public Class Methods

extract(key_to_pattern) click to toggle source

Exctract keyed patterns hash to combination keyed hash. @param key_to_pattern key: title for values, value: [Array] various value to use making combination. @retun [Array] Combination keyed hash. @example

CombinationExtractor.extract({fruit: ['apple', 'orange'], city: ['NewYork', 'London', 'Tokyo']})
=> [{:fruit=>"apple", :city=>"NewYork"}, {:fruit=>"apple", :city=>"London"}, {:fruit=>"apple", :city=>"Tokyo"},
    {:fruit=>"orange", :city=>"NewYork"}, {:fruit=>"orange", :city=>"London"}, {:fruit=>"orange", :city=>"Tokyo"}]
# File lib/combination_extractor.rb, line 12
def self.extract(key_to_pattern)
  return nil unless key_to_pattern
  extracted = [nil].product(*key_to_pattern.values)
  extracted.map do |pattern|
    pattern.shift
    Hash[key_to_pattern.keys.zip(pattern)]
  end
end
name_for(combination) click to toggle source

Generate a name from combination @param combination based combination @return [String] the name of combination

# File lib/combination_extractor.rb, line 24
def self.name_for(combination)
  return nil unless combination
  combination.map { |k, v| "#{k}=#{v.inspect}" }.join(', ')
end