Class: Enumerize::Predicates::Builder
- Inherits:
-
Object
- Object
- Enumerize::Predicates::Builder
- Defined in:
- lib/enumerize/predicates.rb
Instance Method Summary collapse
- #build(klass) ⇒ Object
-
#initialize(attr, options) ⇒ Builder
constructor
A new instance of Builder.
- #names ⇒ Object
- #values ⇒ Object
- #warn_on_already_defined_methods ⇒ Object
Constructor Details
#initialize(attr, options) ⇒ Builder
Returns a new instance of Builder.
48 49 50 51 |
# File 'lib/enumerize/predicates.rb', line 48 def initialize(attr, ) @attr = attr @options = .is_a?(Hash) ? : {} end |
Instance Method Details
#build(klass) ⇒ Object
71 72 73 74 75 |
# File 'lib/enumerize/predicates.rb', line 71 def build(klass) warn_on_already_defined_methods klass.delegate(*names, to: @attr.name, prefix: @options[:prefix], allow_nil: true) end |
#names ⇒ Object
67 68 69 |
# File 'lib/enumerize/predicates.rb', line 67 def names values.map { |v| "#{v.tr('-', '_')}?" } end |
#values ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/enumerize/predicates.rb', line 53 def values values = @attr.values if @options[:only] values &= Array(@options[:only]).map(&:to_s) end if @options[:except] values -= Array(@options[:except]).map(&:to_s) end values end |
#warn_on_already_defined_methods ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/enumerize/predicates.rb', line 77 def warn_on_already_defined_methods names.each do |name| method_name = [@options[:prefix], name].compact.join('_') if @attr.klass.respond_to?(method_name) warn( "Predicate method `#{name}` is already defined as #{@attr.klass.name}##{name}. Use enumerize's :prefix option to avoid it" ) end end end |