Class: FluentConditions::CustomAccessorDefiner

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent_conditions/accessor_definers.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ CustomAccessorDefiner

Returns a new instance of CustomAccessorDefiner.



67
68
69
# File 'lib/fluent_conditions/accessor_definers.rb', line 67

def initialize(options)
  @options = options
end

Instance Method Details

#define(builder, field) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/fluent_conditions/accessor_definers.rb', line 71

def define(builder, field)
  field_name = @options[:as]
  condition_check = @options[:if]
  accessor_method = FluentAccessorMethod.new(field_name)

  builder.class_eval do
    define_method(accessor_method.positive_check) do
      update_and_continue(condition_check.call(instance_variable_get(:@object).send(field)))
    end

    define_method(accessor_method.positive_check_with_result) do
      update_and_finish(condition_check.call(instance_variable_get(:@object).send(field)))
    end

    define_method(accessor_method.negative_check) do
      update_and_continue(!condition_check.call(instance_variable_get(:@object).send(field)))
    end

    define_method(accessor_method.negative_check_with_result) do
      update_and_finish(!condition_check.call(instance_variable_get(:@object).send(field)))
    end
  end
end