code: func condition(name string, input interface{}, template interface{}, options *ProcessorOptions) interface{} {
  	if v, ok := input.(string); ok {
  
  		if v, ok := retrieveCondition(input, template); ok {
  			return v
  		}
  
  		if c := getCondition(v, template); c != nil {
  			res := search(c, template, options)
  			// replace the value in the template so the value can be reused
  			setCondition(v, res, template)
  
  			return res
  		}
  	}
  
  	return nil
  }
docs: // condition evaluates a condition