@@ -22,7 +22,7 @@ private[scala] trait BaseScalaDsl {
2222/**
2323 * Base trait for a scala step definition implementation.
2424 */
25- trait ScalaDsl extends BaseScalaDsl with StepDsl with HookDsl with DataTableTypeDsl with DocStringTypeDsl {
25+ trait ScalaDsl extends BaseScalaDsl with StepDsl with HookDsl with DataTableTypeDsl with DocStringTypeDsl with ParameterTypeDsl {
2626
2727}
2828
@@ -134,6 +134,176 @@ private[scala] trait DataTableTypeDsl extends BaseScalaDsl {
134134
135135}
136136
137+ private [scala] trait ParameterTypeDsl extends BaseScalaDsl {
138+
139+ def ParameterType (name : String , regex : String ) = new ParameterTypeBody (name, regex)
140+
141+ final class ParameterTypeBody (name : String , regex : String ) {
142+
143+ // Important: use the piece of code in the file gen.scala to generate these methods easily
144+
145+ def apply [R ](f : (String ) => R )(implicit tag : ClassTag [R ]): Unit = {
146+ register {
147+ case List (p1) =>
148+ f(p1)
149+ }
150+ }
151+
152+ def apply [R ](f : (String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
153+ register {
154+ case List (p1, p2) =>
155+ f(p1, p2)
156+ }
157+ }
158+
159+ def apply [R ](f : (String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
160+ register {
161+ case List (p1, p2, p3) =>
162+ f(p1, p2, p3)
163+ }
164+ }
165+
166+ def apply [R ](f : (String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
167+ register {
168+ case List (p1, p2, p3, p4) =>
169+ f(p1, p2, p3, p4)
170+ }
171+ }
172+
173+ def apply [R ](f : (String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
174+ register {
175+ case List (p1, p2, p3, p4, p5) =>
176+ f(p1, p2, p3, p4, p5)
177+ }
178+ }
179+
180+ def apply [R ](f : (String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
181+ register {
182+ case List (p1, p2, p3, p4, p5, p6) =>
183+ f(p1, p2, p3, p4, p5, p6)
184+ }
185+ }
186+
187+ def apply [R ](f : (String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
188+ register {
189+ case List (p1, p2, p3, p4, p5, p6, p7) =>
190+ f(p1, p2, p3, p4, p5, p6, p7)
191+ }
192+ }
193+
194+ def apply [R ](f : (String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
195+ register {
196+ case List (p1, p2, p3, p4, p5, p6, p7, p8) =>
197+ f(p1, p2, p3, p4, p5, p6, p7, p8)
198+ }
199+ }
200+
201+ def apply [R ](f : (String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
202+ register {
203+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9) =>
204+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9)
205+ }
206+ }
207+
208+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
209+ register {
210+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) =>
211+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10)
212+ }
213+ }
214+
215+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
216+ register {
217+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) =>
218+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11)
219+ }
220+ }
221+
222+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
223+ register {
224+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12) =>
225+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12)
226+ }
227+ }
228+
229+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
230+ register {
231+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13) =>
232+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13)
233+ }
234+ }
235+
236+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
237+ register {
238+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) =>
239+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14)
240+ }
241+ }
242+
243+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
244+ register {
245+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15) =>
246+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15)
247+ }
248+ }
249+
250+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
251+ register {
252+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16) =>
253+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16)
254+ }
255+ }
256+
257+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
258+ register {
259+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17) =>
260+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17)
261+ }
262+ }
263+
264+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
265+ register {
266+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18) =>
267+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18)
268+ }
269+ }
270+
271+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
272+ register {
273+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19) =>
274+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19)
275+ }
276+ }
277+
278+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
279+ register {
280+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20) =>
281+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20)
282+ }
283+ }
284+
285+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
286+ register {
287+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21) =>
288+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21)
289+ }
290+ }
291+
292+ def apply [R ](f : (String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String , String ) => R )(implicit tag : ClassTag [R ]): Unit = {
293+ register {
294+ case List (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22) =>
295+ f(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22)
296+ }
297+ }
298+
299+ private def register [R ](pf : PartialFunction [List [String ], R ])(implicit tag : ClassTag [R ]): Unit = {
300+ registry.parameterTypes += ScalaParameterTypeDetails [R ](name, regex, pf, tag)
301+ }
302+
303+ }
304+
305+ }
306+
137307private [scala] trait StepDsl extends BaseScalaDsl {
138308 self =>
139309
0 commit comments