Sha256: af9aa807c61716f1235414d166bea5d301d4d833b0fe282a108def1f3b8e8db1
Contents?: true
Size: 1.2 KB
Versions: 4
Compression:
Stored size: 1.2 KB
Contents
module Paraduct class VariableConverter # @param variables [Hash{String => Array<String>}] Key: variable name, Value: values_pattern which you want to product # @return [Array<Hash{String => String}>] def self.product(variables) return [] if variables.empty? values_patterns = product_array(variables.values) product_variables = [] values_patterns.each do |values_pattern| entry = {} keys = variables.keys.to_enum values = values_pattern.to_enum loop do key = keys.next value = values.next entry[key] = value end product_variables << entry end product_variables end def self.reject(product_variables, exclude_variables) product_variables.inject([]) do |rejected_product_variables, variables| rejected_product_variables << variables unless exclude_variables.include?(variables) rejected_product_variables end end def self.product_array(array) first_values = array.shift if array.empty? first_values.product else first_values.product(*array) end end private_class_method :product_array end end
Version data entries
4 entries across 4 versions & 1 rubygems