@@ -11,7 +11,7 @@ use crate::error::ParserError::{IPParsing, InvalidYAML};
11
11
use crate :: event:: { Event , EventValue } ;
12
12
use crate :: field:: transformation:: { encode_base64, encode_base64_offset, windash_variations} ;
13
13
use crate :: field:: ValueTransformer :: { Base64 , Base64offset , Windash } ;
14
- use crate :: wildcard:: tokenize;
14
+ use crate :: wildcard:: { tokenize, WildcardToken } ;
15
15
use cidr:: IpCidr ;
16
16
use regex:: Regex ;
17
17
use serde_yml:: Value ;
@@ -117,40 +117,12 @@ impl Field {
117
117
let mut order_modifier_provided = false ;
118
118
for v in self . values . iter_mut ( ) {
119
119
match self . modifier . match_modifier {
120
- Some ( MatchModifier :: Contains ) => {
121
- if self . modifier . fieldref {
122
- continue ;
123
- }
124
- if let FieldValue :: Base ( BaseValue :: String ( s) ) = v {
125
- s. insert ( 0 , '*' ) ;
126
- s. push ( '*' ) ;
127
- } else {
128
- return Err ( ParserError :: InvalidValueForStringModifier (
129
- self . name . clone ( ) ,
130
- ) ) ;
131
- }
132
- }
133
- Some ( MatchModifier :: StartsWith ) => {
134
- if self . modifier . fieldref {
135
- continue ;
136
- }
137
- if let FieldValue :: Base ( BaseValue :: String ( s) ) = v {
138
- s. push ( '*' ) ;
139
- } else {
140
- return Err ( ParserError :: InvalidValueForStringModifier (
141
- self . name . clone ( ) ,
142
- ) ) ;
143
- }
144
- }
145
- Some ( MatchModifier :: EndsWith ) => {
146
- if self . modifier . fieldref {
147
- continue ;
148
- }
149
- if let FieldValue :: Base ( BaseValue :: String ( s) ) = v {
150
- s. insert ( 0 , '*' ) ;
151
- } else {
120
+ Some (
121
+ MatchModifier :: StartsWith | MatchModifier :: EndsWith | MatchModifier :: Contains ,
122
+ ) => {
123
+ if !matches ! ( v, FieldValue :: Base ( BaseValue :: String ( _) ) ) {
152
124
return Err ( ParserError :: InvalidValueForStringModifier (
153
- self . name . clone ( ) ,
125
+ self . name . to_string ( ) ,
154
126
) ) ;
155
127
}
156
128
}
@@ -172,7 +144,22 @@ impl Field {
172
144
if !self . modifier . fieldref && !order_modifier_provided {
173
145
for v in self . values . iter_mut ( ) {
174
146
if let FieldValue :: Base ( BaseValue :: String ( s) ) = v {
175
- * v = FieldValue :: WildcardPattern ( tokenize ( s, !self . modifier . cased ) ) ;
147
+ let mut tokens = tokenize ( s, !self . modifier . cased ) ;
148
+ match self . modifier . match_modifier {
149
+ Some ( MatchModifier :: StartsWith ) => {
150
+ tokens. push ( WildcardToken :: Star ) ;
151
+ }
152
+ Some ( MatchModifier :: EndsWith ) => {
153
+ tokens. insert ( 0 , WildcardToken :: Star ) ;
154
+ }
155
+ Some ( MatchModifier :: Contains ) => {
156
+ tokens. insert ( 0 , WildcardToken :: Star ) ;
157
+ tokens. push ( WildcardToken :: Star ) ;
158
+ }
159
+ _ => { }
160
+ }
161
+
162
+ * v = FieldValue :: WildcardPattern ( tokens) ;
176
163
}
177
164
}
178
165
}
0 commit comments