class Naught::NullClassBuilder::Commands::PredicatesReturn
Public Class Methods
new(builder, return_value)
click to toggle source
Calls superclass method
Naught::NullClassBuilder::Command.new
# File lib/naught/null_class_builder/commands/predicates_return.rb, line 7 def initialize(builder, return_value) super(builder) @predicate_return_value = return_value end
Public Instance Methods
call()
click to toggle source
# File lib/naught/null_class_builder/commands/predicates_return.rb, line 12 def call defer do |subject| define_method_missing(subject) define_predicate_methods(subject) end end
Private Instance Methods
define_method_missing(subject)
click to toggle source
# File lib/naught/null_class_builder/commands/predicates_return.rb, line 21 def define_method_missing(subject) subject.module_exec(@predicate_return_value) do |return_value| next unless subject.method_defined?(:method_missing) original_method_missing = instance_method(:method_missing) define_method(:method_missing) do |method_name, *args, &block| if method_name.to_s.end_with?('?') return_value else original_method_missing.bind(self).call(method_name, *args, &block) end end end end
define_predicate_methods(subject)
click to toggle source
# File lib/naught/null_class_builder/commands/predicates_return.rb, line 35 def define_predicate_methods(subject) subject.module_exec(@predicate_return_value) do |return_value| instance_methods.each do |method_name| next unless method_name.to_s.end_with?('?') define_method(method_name) do |*| return_value end end end end