class Verifly::Applicator::InstanceEvaluator
InstanceEvaluator
is used for strings. It works like instance_eval or Binding#eval depending on binding_ class @example
Applicator.call('foo if context[:foo]', binding_, *context) # => foo if context[:foo]
Public Class Methods
build_class(applicable)
click to toggle source
@param applicable [String] @return InstanceEvaluator
if applicable is a String @return [nil] otherwise
# File lib/verifly/applicator.rb, line 118 def self.build_class(applicable) self if applicable.is_a?(String) end
Public Instance Methods
call(binding_, *context)
click to toggle source
@param binding_ [#instance_exec] target to apply applicable to @param context additional info to send to applicable @return application result
# 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
source(*)
click to toggle source
@return [String] exactly it's defenition
# File lib/verifly/applicator.rb, line 140 def source(*) applicable end
source_location(*)
click to toggle source
Source location is not available @return [nil]
# File lib/verifly/applicator.rb, line 137 def source_location(*); end
Private Instance Methods
caller_line()
click to toggle source
@return [String, Integer]
file and line where `Applicator.call` was called
# File lib/verifly/applicator.rb, line 148 def caller_line offset = 2 backtace_line = caller(offset..offset)[0] _, file, line = backtace_line.match(/\A(.+):(\d+):[^:]+\z/).to_a [file, Integer(line)] end