Sha256: eef946e9d2d4331d1ddc06a318f52470d976c780c446bf1342e0cf63f37b4f01

Contents?: true

Size: 714 Bytes

Versions: 20

Compression:

Stored size: 714 Bytes

Contents

module Elastic::Support
  module Command
    def self.new(*_attributes)
      attr_names = []
      attr_defaults = {}

      _attributes.each do |att|
        if att.is_a? Hash
          attr_defaults.merge! att
          attr_names += att.keys
        else
          attr_names << att
        end
      end

      Struct.new(*attr_names) do
        def self.for(kwargs = {})
          new(kwargs).perform
        end

        def perform
        end

        define_method(:initialize) do |kwargs = {}|
          kwargs = attr_defaults.merge kwargs
          attr_values = attr_names.map { |a| kwargs[a] }
          super(*attr_values)
        end

        define_method(:perform) {}
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
elastic-rails-1.0.4 lib/elastic/support/command.rb
elastic-rails-1.0.3 lib/elastic/support/command.rb
elastic-rails-1.0.2 lib/elastic/support/command.rb
elastic-rails-1.0.1 lib/elastic/support/command.rb
elastic-rails-1.0.0 lib/elastic/support/command.rb
elastic-rails-0.8.7 lib/elastic/support/command.rb
elastic-rails-0.8.6 lib/elastic/support/command.rb
elastic-rails-0.8.5 lib/elastic/support/command.rb
elastic-rails-0.8.4 lib/elastic/support/command.rb
elastic-rails-0.8.3 lib/elastic/support/command.rb
elastic-rails-0.8.2 lib/elastic/support/command.rb
elastic-rails-0.8.1 lib/elastic/support/command.rb
elastic-rails-0.8.0 lib/elastic/support/command.rb
elastic-rails-0.7.0 lib/elastic/support/command.rb
elastic-rails-0.6.4 lib/elastic/support/command.rb
elastic-rails-0.6.3 lib/elastic/support/command.rb
elastic-rails-0.6.2 lib/elastic/support/command.rb
elastic-rails-0.6.1 lib/elastic/support/command.rb
elastic-rails-0.6.0 lib/elastic/support/command.rb
elastic-rails-0.5.0 lib/elastic/support/command.rb