Class: Verifly::Applicator::InstanceEvaluator

Inherits:
Verifly::Applicator show all
Defined in:
lib/verifly/applicator.rb

Overview

InstanceEvaluator is used for strings. It works like instance_eval or Binding#eval depending on binding_ class

Examples:

Applicator.call('foo if context[:foo]', binding_, *context)
# => foo if context[:foo]

Instance Attribute Summary

Attributes inherited from Verifly::Applicator

#applicable

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Verifly::Applicator

#==, call, #initialize

Methods included from ClassBuilder::Mixin

#build, #build_class, #buildable_classes=

Constructor Details

This class inherits a constructor from Verifly::Applicator

Class Method Details

.build_class(applicable) ⇒ Object

Parameters:

  • applicable (String)

Returns:

  • InstanceEvaluator if applicable is a String

  • (nil)

    otherwise



118
119
120
# File 'lib/verifly/applicator.rb', line 118

def self.build_class(applicable)
  self if applicable.is_a?(String)
end

Instance Method Details

#call(binding_, *context) ⇒ Object

Returns application result.

Parameters:

  • binding_ (#instance_exec)

    target to apply applicable to

  • context

    additional info to send to applicable

Returns:

  • application result



125
126
127
128
129
130
131
132
133
# File 'lib/verifly/applicator.rb', line 125

def call(binding_, *context)
  if binding_.is_a?(Binding)
    binding_ = binding_.dup
    binding_.local_variable_set(:context, context)
    binding_.eval(applicable, *caller_line)
  else
    binding_.instance_eval(applicable, *caller_line)
  end
end

#sourceString

Returns exactly it’s defenition.

Returns:

  • (String)

    exactly it’s defenition



140
141
142
# File 'lib/verifly/applicator.rb', line 140

def source(*)
  applicable
end

#source_locationnil

Source location is not available

Returns:

  • (nil)


137
# File 'lib/verifly/applicator.rb', line 137

def source_location(*); end