Sha256: 9baccbf2de854cabe04ad0a7b24bdcf676708b238ff14a4f01f3beaf72b82804

Contents?: true

Size: 845 Bytes

Versions: 1

Compression:

Stored size: 845 Bytes

Contents

# frozen_string_literal: true

require "enumish/version"
require "active_support"

module Enumish
  extend ActiveSupport::Concern

  module ClassMethods
    def method_missing(method_id, *args, &block)
      if !method_id.to_s.match(/\?$/)
        obj = self.where(enum_id => method_id.to_s).first
        return obj if obj.present?
      end

      super method_id, *args, &block
    end

    def enum_id
      :short
    end
  end

  # Allow calls such as object.friendly? or model.attitude.friendly?
  def method_missing(method_id, *args, &block)
    if method_id.to_s.match(/\?$/) && args.empty? && block.nil?
      self.send(self.class.enum_id.to_s) == method_id.to_s.sub(/\?$/, "")
    else
      super
    end
  end

  def to_s
    self.send(self.class.enum_id).to_s
  end

  def to_sym
    self.send(self.class.enum_id).to_sym
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
enumish-0.9.0 lib/enumish.rb