- if (length $params) {
- # manual option to double table width
- $row{cols} *= 2 if $params =~ s/[+]\z//;
- }
-
- if (length $params) {
- $params =~ m{
- \A (?<offset> \d+)
- (?: (?: [-] (?<stop> \d+) )? (?: [+] (?<restart> \d+) ) )?
- (?: [-] (?<endpoint> \d+) )? \z
- }x or Alert([
- "Unknown range parameters for $input",
- "<q>$params</q> is not in format start(-stop)(+restart(-end))",
- ]);
-
- $row{offset} = $+{offset};
- $endpoint = $+{endpoint} if $+{endpoint};
- if (my $restart = $+{restart}) {
- my $skip = int(($+{stop} || $row{offset}) / $row{cols});
- for ($skip + 1 .. ($restart / $row{cols}) - 1) {
- $row{skip}->{ $_ * $row{cols} - $row{offset} }++;
+ for my $param (split /[+]+/, $params // '') {
+ if ($param eq 'realsize') {
+ $row{realsize}++;
+ }
+ elsif ($param =~ m{ \A cols = (\d+) \z }x) {
+ $row{cols} = $1;
+ }
+ elsif ($param =~ m{ \A (?<offset> \d+) (?: [-] (?<endpoint> \d+) )? \z }x) {
+ if (defined $row{endpoint}) {
+ # extend earlier range
+ my $skip = int(($row{endpoint} || $row{offset}) / $row{cols});
+ for ($skip + 1 .. ($+{offset} / $row{cols}) - 1) {
+ $row{skip}->{ $_ * $row{cols} - $row{offset} }++;
+ }