def process_eval_string(object, raw_eval_string)
      eval_string = raw_eval_string.slice(5..-1)
      eval_string, unmatched_tokens = substitute_tokens(eval_string, object)
      if unmatched_tokens.empty?
        eval_string
      else
        @logger.error("attribute value eval unmatched tokens", {
          :object => object,
          :raw_eval_string => raw_eval_string,
          :unmatched_tokens => unmatched_tokens
        })
        nil
      end
    end
def process_eval_string(object, raw_eval_string)
      eval_string = raw_eval_string.slice(5..-1)
      eval_string, unmatched_tokens = substitute_tokens(eval_string, object)
      if unmatched_tokens.empty?
        eval_string
      else
        @logger.error("attribute value eval unmatched tokens", {
          :object => object,
          :raw_eval_string => raw_eval_string,
          :unmatched_tokens => unmatched_tokens
        })
        nil
      end
    end
Process an eval attribute value, a Ruby `eval()` string
 containing an expression to be evaluated within the
 scope/context of a sandbox. This methods strips away the
 expression prefix, `eval:`, and substitues any dot notation
 tokens with the corresponding event data values. If there are
 unmatched tokens, this method will return `nil`.

 @object [Hash]
 @raw_eval_string [String]
 @return [String] processed eval string.