@@ -47,20 +47,17 @@ func NewCronTriggerWithLoc(expression string, location *time.Location) (*CronTri
4747 if location == nil {
4848 return nil , illegalArgumentError ("location is nil" )
4949 }
50-
5150 expression = trimCronExpression (expression )
5251 fields , err := parseCronExpression (expression )
5352 if err != nil {
5453 return nil , err
5554 }
56-
5755 lastDefined := - 1
5856 for i , field := range fields {
5957 if len (field .values ) > 0 {
6058 lastDefined = i
6159 }
6260 }
63-
6461 // full wildcard expression
6562 if lastDefined == - 1 {
6663 fields [0 ].values , _ = fillRangeValues (0 , 59 )
@@ -165,37 +162,38 @@ func trimCronExpression(expression string) string {
165162func buildCronField (tokens []string ) ([]* cronField , error ) {
166163 var err error
167164 fields := make ([]* cronField , 7 )
165+ // second field
168166 fields [0 ], err = parseField (tokens [0 ], 0 , 59 )
169167 if err != nil {
170168 return nil , err
171169 }
172-
170+ // minute field
173171 fields [1 ], err = parseField (tokens [1 ], 0 , 59 )
174172 if err != nil {
175173 return nil , err
176174 }
177-
175+ // hour field
178176 fields [2 ], err = parseField (tokens [2 ], 0 , 23 )
179177 if err != nil {
180178 return nil , err
181179 }
182-
180+ // day-of-month field
183181 fields [3 ], err = parseField (tokens [3 ], 1 , 31 )
184182 if err != nil {
185183 return nil , err
186184 }
187-
185+ // month field
188186 fields [4 ], err = parseField (tokens [4 ], 1 , 12 , months )
189187 if err != nil {
190188 return nil , err
191189 }
192-
190+ // day-of-week field
193191 fields [5 ], err = parseField (tokens [5 ], 1 , 7 , days )
194192 if err != nil {
195193 return nil , err
196194 }
197195 fields [5 ].add (- 1 )
198-
196+ // year field
199197 fields [6 ], err = parseField (tokens [6 ], 1970 , 1970 * 2 )
200198 if err != nil {
201199 return nil , err
@@ -209,12 +207,10 @@ func parseField(field string, min, max int, translate ...[]string) (*cronField,
209207 if len (translate ) > 0 {
210208 glossary = translate [0 ]
211209 }
212-
213210 // any value
214211 if field == "*" || field == "?" {
215212 return & cronField {[]int {}}, nil
216213 }
217-
218214 // simple value
219215 i , err := strconv .Atoi (field )
220216 if err == nil {
@@ -223,22 +219,18 @@ func parseField(field string, min, max int, translate ...[]string) (*cronField,
223219 }
224220 return nil , invalidCronFieldError ("simple" , field )
225221 }
226-
227222 // list values
228- if strings .Contains (field , "," ) {
223+ if strings .ContainsRune (field , listRune ) {
229224 return parseListField (field , min , max , glossary )
230225 }
231-
232226 // step values
233- if strings .Contains (field , "/" ) {
227+ if strings .ContainsRune (field , stepRune ) {
234228 return parseStepField (field , min , max , glossary )
235229 }
236-
237230 // range values
238- if strings .Contains (field , "-" ) {
231+ if strings .ContainsRune (field , rangeRune ) {
239232 return parseRangeField (field , min , max , glossary )
240233 }
241-
242234 // simple literal value
243235 if glossary != nil {
244236 intVal , err := translateLiteral (glossary , field )
@@ -251,11 +243,11 @@ func parseField(field string, min, max int, translate ...[]string) (*cronField,
251243 return nil , invalidCronFieldError ("literal" , field )
252244 }
253245
254- return nil , cronParseError ("parse error" )
246+ return nil , cronParseError (fmt . Sprintf ( "invalid field %s" , field ) )
255247}
256248
257249func parseListField (field string , min , max int , glossary []string ) (* cronField , error ) {
258- t := strings .Split (field , "," )
250+ t := strings .Split (field , string ( listRune ) )
259251 values , stepValues := extractStepValues (t )
260252 values , rangeValues := extractRangeValues (values )
261253 listValues , err := translateLiterals (glossary , values )
@@ -282,7 +274,7 @@ func parseListField(field string, min, max int, glossary []string) (*cronField,
282274}
283275
284276func parseRangeField (field string , min , max int , glossary []string ) (* cronField , error ) {
285- t := strings .Split (field , "-" )
277+ t := strings .Split (field , string ( rangeRune ) )
286278 if len (t ) != 2 {
287279 return nil , invalidCronFieldError ("range" , field )
288280 }
@@ -306,7 +298,7 @@ func parseRangeField(field string, min, max int, glossary []string) (*cronField,
306298}
307299
308300func parseStepField (field string , min , max int , glossary []string ) (* cronField , error ) {
309- t := strings .Split (field , "/" )
301+ t := strings .Split (field , string ( stepRune ) )
310302 if len (t ) != 2 {
311303 return nil , invalidCronFieldError ("step" , field )
312304 }
@@ -318,8 +310,8 @@ func parseStepField(field string, min, max int, glossary []string) (*cronField,
318310 switch {
319311 case t [0 ] == "*" :
320312 from = min
321- case strings .Contains (t [0 ], "-" ):
322- trange := strings .Split (t [0 ], "-" )
313+ case strings .ContainsRune (t [0 ], rangeRune ):
314+ trange := strings .Split (t [0 ], string ( rangeRune ) )
323315 if len (trange ) != 2 {
324316 return nil , invalidCronFieldError ("step" , field )
325317 }
0 commit comments