class Rake::Funnel::Support::Mapper
Public Class Methods
new(style = :default)
click to toggle source
# File lib/rake/funnel/support/mapper.rb, line 15 def initialize(style = :default) raise "You cannot use the 'nil' mapper style. Available mappers are: #{available.inspect}" if style.nil? @style = create(style) end
Public Instance Methods
map(args = {})
click to toggle source
# File lib/rake/funnel/support/mapper.rb, line 21 def map(args = {}) # rubocop:disable Metrics/MethodLength model = (args || {}).map do |switch, value| value = [value] unless value.is_a?(Array) values = value.map do |val| get_values(val) end Switch.new(switch, values) end.flatten @style .generate_from(model) .map { |arguments| arguments.map { |arg| camel_case_symbols(arg) } } .map(&:join) end
Private Instance Methods
camel_case_symbols(value)
click to toggle source
# File lib/rake/funnel/support/mapper.rb, line 54 def camel_case_symbols(value) return value unless value.is_a?(Symbol) value.camelize end
get_values(value)
click to toggle source
# File lib/rake/funnel/support/mapper.rb, line 40 def get_values(value) if value.is_a?(Enumerable) pairs = value.map do |k, v| KeyValuePair.new(k, v) end return Array.new(pairs) if value.is_a?(Array) pairs else Value.new(value) end end