Sha256: 34a060fa5be20151715329a5c97fd5988e9aeaec513a087e5da31da7993e1b73

Contents?: true

Size: 972 Bytes

Versions: 4

Compression:

Stored size: 972 Bytes

Contents

module UseCaseValidations

  module Target

    def self.included(base)
      base.extend(ClassMethods)
    end

    def parent_target_name
      self.class.options.key?(:in) ? self.class.options[:in] : nil
    end

    def target
      send(self.class.target_name)
    end

    def parent_target
      parent_target_name ? send(parent_target_name) : nil
    end

    module ClassMethods

      def target_name
        Helpers._get_instance_variable(self, :target_name, nil)
      end

      def options
        Helpers._get_instance_variable(self, :options, {})
      end

      def target(target_name, options = {})
        @target_name, @options = target_name, options

        if options.key?(:in)
          define_method(options[:in]) { context.send(options[:in]) }
          define_method(target_name) { send(options[:in]).send(target_name) }
        else
          define_method(target_name) { context.send(target_name) }
        end
      end

    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
usecasing_validations-0.7.0 lib/usecasing_validations/target.rb
usecasing_validations-0.6.0 lib/usecasing_validations/target.rb
usecasing_validations-0.5.5 lib/usecasing_validations/target.rb
usecasing_validations-0.5.4 lib/usecasing_validations/target.rb