@main[][d;n;sEmpty;sSpace]
$d(65321.3)
$n(-$d)
$sEmpty[]
$sSpace[ ]
# not specified format strings
^TR[w/o param;^try_code{^d.format[]}]
# format strings contains whitespaces only
^format[$d;$sEmpty]
^format[$d;$sSpace]
# invalid format string
^format[$d;%K]
^format[$d;%]
^format[$d;%%]
# banned format string
^format[$d;%n]
^format[$d;%s]
^format[$d;%z]
# int/uint
^format[$d;%d]
^format[$d;%u]
^format[$d;%o]
^format[$d;%x]
^format[$d;%X]
# float
^format[$d;%f]
^format[$d;%e]
^format[$d;%E]
^format[$d;%g]
^format[$d;%G]
# flags, width, precision
^format[$d;%d]
^format[$d;%0d]
^format[$d;%10d]
^format[$d;%010d]
^format[$d;%f]
^format[$d;%.f]
^format[$d;%.0f]
^format[$d;%.02f]
^format[$d;%9.03f]
^format[$d;%+9.03f]
^format[$n;%+9.03f]
^format[$d;% 9.03f]
^format[$n;% 9.03f]
^format[$d;%0#10x]
^format[$d;%+#10X]
^format[$d;%-10d]
^format[$d;%0#o]
^format[$d;%0#d]
^format[$d;%#g]
^format[$d;%#e]
# flags in wrong place
^format[$d;%1+9.03f]
^format[$d;%99d]
# more then 1 dot as precision flag
^format[$d;%9..03f]
^format[$d;%9.1.03f]
# invalid because contains something at the ends
^format[$d;%d=]
^format[$d;=%d]
@TR[sTD1;sTD2]
| $sTD1 |
$sTD2 |
@format[d;sFormat][s]
^TR[^if(def $sFormat && def ^sFormat.trim[]){$sFormat}{'$sFormat'};^try_code{$s[^d.format[$sFormat]]'^taint[html][^s.match[\+00][]{+0}]'}]
@try_code[jCode]
^try-catch-comment{
$jCode
}