@@ -7,14 +7,14 @@ my module sprintf {
7
7
:my $ * ARGS_USED := 0;
8
8
^ <statement >* $
9
9
}
10
-
11
- method panic ($ message , $ payload ) {
10
+
11
+ method panic ($ message , $ payload ) {
12
12
my $ ex := nqp ::newexception();
13
13
nqp ::setmessage($ ex , $ message );
14
14
nqp ::setpayload($ ex , $ payload );
15
15
nqp :: throw ($ ex );
16
16
}
17
-
17
+
18
18
token statement {
19
19
[
20
20
| <?[ % ] > [ [ <directive > | <escape > ]
@@ -37,21 +37,21 @@ my module sprintf {
37
37
38
38
proto token escape { <...> }
39
39
token escape :sym <% > { '%' <flags >* <size >? <sym > }
40
-
40
+
41
41
token literal { <- [ % ] >+ }
42
-
42
+
43
43
token idx {
44
44
$ < param_index > =[\d + ] '$'
45
45
}
46
-
46
+
47
47
token flags {
48
48
| $ < space > = ' '
49
49
| $ < plus > = '+'
50
50
| $ < minus > = '-'
51
51
| $ < zero > = '0'
52
52
| $ < hash > = '#'
53
53
}
54
-
54
+
55
55
token size {
56
56
\d * | $ < star > ='*'
57
57
}
@@ -71,7 +71,7 @@ my module sprintf {
71
71
~ (+ @ * ARGS_HAVE < 1 ?? " no argument was"
72
72
!! + @ * ARGS_HAVE == 1 ?? " 1 argument was"
73
73
!! + @ * ARGS_HAVE ~ " arguments were" )
74
- ~ " supplied" , nqp ::hash(' DIRECTIVES_COUNT' ,
74
+ ~ " supplied" , nqp ::hash(' DIRECTIVES_COUNT' ,
75
75
nqp ::hash(' ARGS_HAVE' , + @ * ARGS_HAVE , ' ARGS_USED' , $ * ARGS_USED )))
76
76
}
77
77
make nqp :: join (' ' , @ statements );
@@ -86,11 +86,11 @@ my module sprintf {
86
86
87
87
sub bad-type-for-directive ($ type , $ directive ) {
88
88
my $ message := " Directive $ directive not applicable for type " ~ $ type . HOW . name ($ type );
89
- my $ payload := nqp ::hash(' BAD_TYPE_FOR_DIRECTIVE' ,
89
+ my $ payload := nqp ::hash(' BAD_TYPE_FOR_DIRECTIVE' ,
90
90
nqp ::hash(' TYPE' , $ type . HOW . name ($ type ), ' DIRECTIVE' , $ directive ));
91
91
panic($ message , $ payload );
92
92
}
93
-
93
+
94
94
sub infix_x ($ s , $ n ) {
95
95
my @ strings ;
96
96
my int $ i := 0 ;
@@ -198,8 +198,8 @@ my module sprintf {
198
198
my $ int := intify($ next );
199
199
my $ pad := padding_char($/ );
200
200
my $ sign := nqp ::islt_I($ int , $ zero ) ?? ' -'
201
- !! has_flag($/ , ' plus' ) ?? ' +'
202
- !! has_flag($/ , ' space' ) ?? ' '
201
+ !! has_flag($/ , ' plus' ) ?? ' +'
202
+ !! has_flag($/ , ' space' ) ?? ' '
203
203
!! ' ' ;
204
204
$ int := nqp ::tostr_I(nqp ::abs_I($ int , $ knowhow ));
205
205
$ int := nqp :: substr ($ int , 0 , $ < precision > . made ) if nqp :: chars ($ < precision > );
@@ -264,12 +264,12 @@ my module sprintf {
264
264
265
265
my $ e := nqp ::fromnum_I($ d > $ precision ?? $ d - $ precision !! 0 , $ knowhow );
266
266
my $ pot := nqp ::pow_I(nqp ::fromnum_I(10 , $ knowhow ), $ e , $ knowhow , $ knowhow ); # power of ten
267
- my $ rounder := nqp ::mul_I(nqp ::fromnum_I(5 , $ knowhow ), $ pot , $ knowhow );
267
+ my $ rounder := nqp ::mul_I(nqp ::fromnum_I(5 , $ knowhow ), $ pot , $ knowhow );
268
268
269
269
$ rhs_I := nqp ::add_I($ rhs_I , $ rounder , $ knowhow );
270
270
$ rhs_s := nqp ::tostr_I($ rhs_I );
271
271
272
- $ lhs_I := nqp ::add_I($ lhs_I , nqp ::fromnum_I(1 ,$ knowhow ), $ knowhow )
272
+ $ lhs_I := nqp ::add_I($ lhs_I , nqp ::fromnum_I(1 ,$ knowhow ), $ knowhow )
273
273
if nqp :: substr ($ rhs_s ,0 ,1 ) ne ' 1' ; # we had a carry
274
274
275
275
$ lhs_s := nqp ::tostr_I($ lhs_I );
@@ -347,7 +347,7 @@ my module sprintf {
347
347
} else {
348
348
$ sci := $ float ~ $ e ~ ' +' ~ ($ exp < 10 ?? ' 0' !! ' ' ) ~ $ exp ;
349
349
}
350
-
350
+
351
351
pad-with-sign($ sign , $ sci , $ size , $ pad );
352
352
}
353
353
}
@@ -424,7 +424,7 @@ my module sprintf {
424
424
my $ int := intify($ next );
425
425
if nqp ::islt_I($ int , $ zero ) {
426
426
my $ err := nqp ::getstderr();
427
- nqp ::printfh($ err , " negative value '"
427
+ nqp ::printfh($ err , " negative value '"
428
428
~ $ int
429
429
~ " ' for % u in sprintf" );
430
430
$ int := 0 ;
@@ -491,9 +491,9 @@ my module sprintf {
491
491
make $ < directive > && ! $ < directive >< idx > ?? 1 !! 0
492
492
}
493
493
}
494
-
494
+
495
495
my $ directives := Directives. new ();
496
-
496
+
497
497
sub sprintfdirectives ($ format ) {
498
498
return Syntax. parse( $ format , : actions($ directives ) ). made ;
499
499
}
0 commit comments