@@ -12,7 +12,7 @@ import (
1212type classicalStrategy struct {
1313 rules []C.Rule
1414 count int
15- parse func ( tp , payload , target string , params [] string ) ( parsed C. Rule , parseErr error )
15+ parse common. ParseRuleFunc
1616}
1717
1818func (c * classicalStrategy ) Behavior () P.RuleBehavior {
@@ -39,25 +39,26 @@ func (c *classicalStrategy) Reset() {
3939}
4040
4141func (c * classicalStrategy ) Insert (rule string ) {
42- ruleType , rule , params := common .ParseRulePayload (rule )
43- r , err := c .parse (ruleType , rule , "" , params )
42+ r , err := c .payloadToRule (rule )
4443 if err != nil {
45- log .Warnln ("parse classical rule error: %s" , err .Error ())
44+ log .Warnln ("parse classical rule [%s] error: %s" , rule , err .Error ())
4645 } else {
4746 c .rules = append (c .rules , r )
4847 c .count ++
4948 }
5049}
5150
51+ func (c * classicalStrategy ) payloadToRule (rule string ) (C.Rule , error ) {
52+ tp , payload , target , params := common .ParseRulePayload (rule , false )
53+ switch tp {
54+ case "MATCH" , "RULE-SET" , "SUB-RULE" :
55+ return nil , fmt .Errorf ("unsupported rule type on classical rule-set: %s" , tp )
56+ }
57+ return c .parse (tp , payload , target , params , nil )
58+ }
59+
5260func (c * classicalStrategy ) FinishInsert () {}
5361
54- func NewClassicalStrategy (parse func (tp , payload , target string , params []string , subRules map [string ][]C.Rule ) (parsed C.Rule , parseErr error )) * classicalStrategy {
55- return & classicalStrategy {rules : []C.Rule {}, parse : func (tp , payload , target string , params []string ) (parsed C.Rule , parseErr error ) {
56- switch tp {
57- case "MATCH" , "RULE-SET" , "SUB-RULE" :
58- return nil , fmt .Errorf ("unsupported rule type on classical rule-set: %s" , tp )
59- default :
60- return parse (tp , payload , target , params , nil )
61- }
62- }}
62+ func NewClassicalStrategy (parse common.ParseRuleFunc ) * classicalStrategy {
63+ return & classicalStrategy {rules : []C.Rule {}, parse : parse }
6364}
0 commit comments