module Leftovers::ProcessorBuilders::Action

Public Class Methods

build(patterns, action) click to toggle source
# File lib/leftovers/processor_builders/action.rb, line 6
def self.build(patterns, action)
  ::Leftovers::ProcessorBuilders::EachAction.each_or_self(patterns) do |pattern|
    case pattern
    when ::String, ::Integer
      ::Leftovers::ProcessorBuilders::Argument.build(pattern, final_transformer(action))
    when ::Hash
      build_from_hash_value(action, **pattern)
    # :nocov:
    else raise
      # :nocov:
    end
  end
end
build_from_hash_value( action, arguments: nil, keywords: nil, itself: nil, value: nil, nested: nil, recursive: nil, **transform_args ) click to toggle source
# File lib/leftovers/processor_builders/action.rb, line 24
def self.build_from_hash_value( # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
  action,
  arguments: nil,
  keywords: nil,
  itself: nil,
  value: nil,
  nested: nil,
  recursive: nil,
  **transform_args
)
  transformer = ::Leftovers::ProcessorBuilders::TransformSet.build(transform_args, action)
  if nested
    transformer = ::Leftovers::ProcessorBuilders::Each.build([
      ::Leftovers::ProcessorBuilders::Action.build(nested, action),
      transformer
    ])
  end

  if recursive
    placeholder = ::Leftovers::ValueProcessors::Placeholder.new
    transformer = ::Leftovers::ProcessorBuilders::Each.build(
      [placeholder, transformer]
    )
  end

  processor = ::Leftovers::ProcessorBuilders::EachAction.build([
    ::Leftovers::ProcessorBuilders::Argument.build(arguments, transformer),
    ::Leftovers::ProcessorBuilders::Keyword.build(keywords, transformer),
    ::Leftovers::ProcessorBuilders::Itself.build(itself, transformer),
    ::Leftovers::ProcessorBuilders::Value.build(value, transformer)
  ])

  return processor unless recursive

  placeholder.processor = processor
  placeholder
end
final_transformer(action) click to toggle source
# File lib/leftovers/processor_builders/action.rb, line 20
def self.final_transformer(action)
  ::Leftovers::ProcessorBuilders::TransformSet.build_final(action)
end