code: func (rf *RulerRule) compare(comp int, value interface{}) *RulerRule {
  	var comparator string
  	switch comp {
  	case eq:
  		comparator = "eq"
  	case neq:
  		comparator = "neq"
  	case lt:
  		comparator = "lt"
  	case lte:
  		comparator = "lte"
  	case gt:
  		comparator = "gt"
  	case gte:
  		comparator = "gte"
  	case contains:
  		comparator = "contains"
  	case matches:
  		comparator = "matches"
  	case ncontains:
  		comparator = "ncontains"
  	}
  
  	// if this thing has a comparator already, we need to make a new ruler filter
  	if rf.Comparator != "" {
  		rf = &RulerRule{
  			rf.Ruler,
  			&Rule{
  				comparator,
  				rf.Path,
  				value,
  			},
  		}
  		// attach the new filter to the ruler
  		rf.Ruler.rules = append(rf.Ruler.rules, rf.Rule)
  	} else {
  		//if there is no comparator, we can just set things on the current filter
  		rf.Comparator = comparator
  		rf.Value = value
  	}
  
  	return rf
  }
docs: // comparator will either create a new ruler filter and add its filter