class Rake::Funnel::Support::ArgumentMapper::Styles::MSDeploy

Attributes

prefix[R]
separator[R]
value_list_separator[R]
value_separator[R]

Public Class Methods

new() click to toggle source
# File lib/rake/funnel/support/argument_mapper/styles/msdeploy.rb, line 11
def initialize
  @prefix = '-'
  @separator = ':'
  @value_separator = '='
  @value_list_separator = ','
end

Public Instance Methods

generate_from(model) click to toggle source
# File lib/rake/funnel/support/argument_mapper/styles/msdeploy.rb, line 18
def generate_from(model)
  model.flat_map do |switch|
    switch.values.map do |item|
      values = if item.is_a?(Enumerable)
                 item.map.with_index { |nested, index| nested(nested, index) }
               else
                 nested(item)
               end

      (top_level(switch) + values).flatten
    end
  end
end

Private Instance Methods

nested(value, index = 0) click to toggle source
# File lib/rake/funnel/support/argument_mapper/styles/msdeploy.rb, line 38
def nested(value, index = 0) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
  res = []
  res << value_list_separator unless index.zero?
  res << separator unless value.key.nil? && value.value.nil? || index != 0
  res << quote(value.key)
  res << value_separator unless value.key.nil? || value.value.nil?
  res << quote(value.value)
  res.compact
end
quote(value) click to toggle source
# File lib/rake/funnel/support/argument_mapper/styles/msdeploy.rb, line 48
def quote(value)
  value = value.gsub(/"/, '""') if value.is_a?(String)
  return %("#{value}") if value.to_s =~ /\s/

  value
end
top_level(switch) click to toggle source
# File lib/rake/funnel/support/argument_mapper/styles/msdeploy.rb, line 34
def top_level(switch)
  [prefix, quote(switch.switch)]
end