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