Sha256: ba3728d7d4b7902d2d385f1c4594bc5ee09aea5a2525922fd25131d615636b4d

Contents?: true

Size: 1016 Bytes

Versions: 3

Compression:

Stored size: 1016 Bytes

Contents

# frozen_string_literal: true

module Magicka
  class Aggregator
    # @api private
    #
    # Class responsible for building an {Aggregator} method
    class MethodBuilder < Sinclair
      def initialize(klass, element_class, method_name = nil, template: nil)
        super(klass)

        @element_class = element_class
        @method_name = method_name
        @template = template
      end

      def prepare
        element_klass = element_class
        template_file = template

        add_method(method_name) do |field, model: self.model, **args|
          element_klass.render(
            renderer: renderer, field: field,
            model: model, template: template_file,
            **args
          )
        end

        self
      end

      private

      attr_reader :element_class, :template

      def method_name
        @method_name ||= element_class
                         .name
                         .underscore
                         .gsub(%r{.*/}, '')
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
magicka-0.5.6 lib/magicka/aggregator/method_builder.rb
magicka-0.5.5 lib/magicka/aggregator/method_builder.rb
magicka-0.5.4 lib/magicka/aggregator/method_builder.rb