Sha256: ef42bc36edde12f3214c946a10086467d9413d5417b4156d21e794455b7bd16a

Contents?: true

Size: 789 Bytes

Versions: 408

Compression:

Stored size: 789 Bytes

Contents

# frozen_string_literal: true

module EacRubyUtils
  module Listable
    module InstanceMethods
      LISTABLE_INSTANCE_VALUE_METHODS = %w[label description].freeze

      def method_missing(name, *args, &block)
        list, method = parse_method(name)
        list && method ? list.instance_value(self).send(method) : super
      end

      def respond_to_missing?(name, include_all = false)
        list, method = parse_method(name)
        list && method ? true : super
      end

      private

      def parse_method(method)
        self.class.lists.acts_as_listable_items.each do |item, list|
          LISTABLE_INSTANCE_VALUE_METHODS.each do |m|
            return [list, m] if method.to_s == "#{item}_#{m}"
          end
        end
        [nil, nil]
      end
    end
  end
end

Version data entries

408 entries across 408 versions & 4 rubygems

Version Path
eac_ruby_utils-0.124.0 lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.97.2 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_ruby_utils-0.123.0 lib/eac_ruby_utils/listable/instance_methods.rb
eac_ruby_utils-0.121.0 lib/eac_ruby_utils/listable/instance_methods.rb
eac_ruby_utils-0.120.0 lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.76.1 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.76.0 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.75.2 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_ruby_utils-0.119.2 lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.75.1 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.75.0 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_ruby_utils-0.119.1 lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.74.1 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.74.0 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.73.0 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_ruby_utils-0.119.0 lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.72.0 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb
eac_ruby_utils-0.118.1 lib/eac_ruby_utils/listable/instance_methods.rb
eac_ruby_utils-0.118.0 lib/eac_ruby_utils/listable/instance_methods.rb
eac_tools-0.70.1 sub/eac_ruby_utils/lib/eac_ruby_utils/listable/instance_methods.rb