$PLP::ERROR = sub {
my ($text, $html) = @_;
warn $text;
- unless ($PLP::sentheaders and $PLP::sentheaders->[0] !~ m{/PLP\.pm\z}) {
+ unless ($PLP::sentheaders and $PLP::sentheaders->[0] !~ m{/PLP\.pm$}) {
Html({nocache => 1});
say '<h1>Page unavailable</h1>';
}
my $cookie = CGI::Cookie->new(
-name => 'style',
-value => $setstyle || '',
- -path => '/', # site-wide; current page is confusing to most users
+ -path => '/', # site-wide
-expires => $setstyle ? '+5y' : '-1d',
) or die "empty object returned\n";
AddCookie($cookie->as_string);
push @{ $meta->{raw} }, (
'<!--[if lte IE 6]><style> .help dl.legend dt {margin:0 0 1px} </style><![endif]-->',
'<!--[if lte IE 7]><style> .help dl.legend dd {float:none} </style><![endif]-->',
- !$showkeys ? '<style type="text/css"> .no {visibility:hidden} </style>'
- : $showkeys eq 'ghost' ? '<style type="text/css"> .no, .alias {opacity:.5} </style>'
- : (),
+ !$showkeys ? '<style> .no {visibility:hidden} </style>' :
+ $showkeys eq 'ghost' ? '<style> .no, .alias {opacity:.5} </style>' : (),
'<script type="text/javascript" src="/keys.js?1.6"></script>',
) if $meta->{keys};
say '<html lang="en">';
say '';
say '<head>';
- say sprintf '<meta http-equiv="content-type" content="%s">', $header{content_type};
+ say sprintf '<meta http-equiv="content-type" content="%s">', $_
+ for $header{content_type};
say sprintf '<title>%s</title>', $meta->{title};
say sprintf '<meta name="description" content="%s">', EscapeHTML($_)
for join(' ', @{ $meta->{description} }) || ();
version <a href="http://git.shiar.nl/sheet.git/history/HEAD:/$file.plp"
rel="vcs-git" title="Git repository">$meta->{version}</a>
created by <a href="http://shiar.nl/" rel="author">Shiar</a> •
- <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html" rel="license copyright"
- title="Licensed under the GNU Affero General Public License, version 3">AGPLv3</a>
+ <a href="http://www.fsf.org/licensing/licenses/agpl-3.0.html"
+ title="Licensed under the GNU Affero General Public License, version 3"
+ rel="license copyright">AGPLv3</a>
EOT
say sprintf '• %.3fs', Time::HiRes::tv_interval($Time) if $Dev and $Time;
say '</p>';
my $U = 0; # optional unicode alternatives
my @wrapstyle = (
- 'td { white-space: normal; word-spacing: 10em }', # force line break between words
+ 'td { white-space: normal; word-spacing: 10em }',
+ # force line break between words
'.sample { word-spacing: 0 }',
- '.sample span { margin-right: 1ex; white-space: nowrap; display: inline-block }', # larger space between letters
+ '.sample span { margin-right: 1ex; white-space: nowrap; display: inline-block }',
+ # larger space between letters
);
-my $spacestyle = '.sample span { margin-right: 0.5ex }'; # separate multiple letters
+my $spacestyle = '.sample span { margin-right: 0.5ex }'; # separate letters
my @tapstyle = (
@wrapstyle,
'{ line-height: 1ex }',
],
list => [
map {
- !m/^(-?)(\w.+)/ ? $_ :
- $1.'<svg width="20" height="20" viewBox="0 0 12 20"><path d="'.$2.'"/></svg>'
+ s{\A-?\K(\w.+)}
+ {<svg width="20" height="20" viewBox="0 0 12 20"><path d="$1"/></svg>}r
}
"m2,4 c1,2 8,9 8,9 M2,15 6,9",
"m2,4 c0,0 3,-2 4,1 1,2 0,9 3,9 1,-0 2,-1 2,-1 m-6,-2 c-5,4 -0,6 1,3",
map {
my @route = split //;
my @coords = map { $_ % 2 << 3, $_ >> 1 << 3 } @route; # x,y,
- sprintf('<circle cx="%s" cy="%s" r="1"/>', @coords[0, 1]) . # start point
- sprintf('<path d="M%s"/>', join ' ', map {
- my $pos = join(',', @coords[$_*2, $_*2 + 1]);
- $_ > 1 && $route[$_] == $route[$_ - 2] ? 'Q4,4 '.$pos.'L' : # curve back
- $pos
- } 0 .. $#route)
+ sprintf('<circle cx="%s" cy="%s" r="1"/><path d="M%s"/>',
+ @coords[0, 1], # start point
+ join(' ', map {
+ my $pos = join(',', @coords[$_*2, $_*2 + 1]);
+ $_ > 1 && $route[$_] == $route[$_ - 2] # curve back
+ ? 'Q4,4 '.$pos.'L' : $pos
+ } 0 .. $#route),
+ )
}
# corners (0..3) clockwise from top-left in order
qw(
<path fill="$C{yellow}" d="M0,0 h15 v15 h-15 M15,15 h15 v15 h-15"/>
<path fill="white" d="M0,0 h30v30 h-30z"/>
- <path fill="$C{blue}" d="M4,0h22l-11,11 M4,30h22l-11,-11 M0,4v22l11,-11 M30,4v22l-11,-11"/>
+ <path fill="$C{blue}" d="M4,0h22l-11,11 M4,30h22l-11,-11
+ M0,4v22l11,-11 M30,4v22l-11,-11"/>
<path fill="white" d="M0,0 h30v30 h-30z"/>
<path fill="$C{blue}" d="
<path fill="$C{red}" d="M0,0 h15 v15 h-15 M15,15 h15 v15 h-15"/>
<path fill="$C{red}" d="M0,0 h30v30 h-30z"/>
- <path fill="white" d="M4,0h22l-11,11 M4,30h22l-11,-11 M0,4v22l11,-11 M30,4v22l-11,-11"/>
+ <path fill="white" d="M4,0h22l-11,11 M4,30h22l-11,-11
+ M0,4v22l11,-11 M30,4v22l-11,-11"/>
<path fill="$C{blue}" d="M0,0 h30v30 h-30z"/>
<path fill="white" d="M5,5 h20 v20 h-20"/>
<path fill="$C{blue}" d="M0,12.5 h30 v5 h-30"/>
<path fill="$C{red}" d="M0,0 h30v30 h-30z"/>
- <path fill="$C{yellow}" d="M0,0h6l-6,6 M12,0h6l-18,18v-6 M24,0h6l-30,30v-6
- M30,6v6l-18,18h-6 M30,18v6l-6,6h-6"/>
+ <path fill="$C{yellow}" d="M0,0h6l-6,6 M12,0h6l-18,18v-6
+ M24,0h6l-30,30v-6 M30,6v6l-18,18h-6 M30,18v6l-6,6h-6"/>
<path fill="$C{black}" d="M0,0 h30v30 h-30z"/>
<path fill="$C{blue}" d="M30,0 v31 l-15,-15"/>
list => [map { dispbar($_) } qw(
111323 131123 131321 112313 132113 132311 211313 231113 231311 112133
112331 132131 113123 113321 133121 313121 211331 231131 213113 213311
- 213131 311123 311321 331121 312113 312311 212222 0 211412 23311120
+ 213131 311123 311321 331121 312113 312311 212222 0 211412 23311120
)],
},
rm4scc => {
'M4,-.5 0,4 4,8.5',
'M4,8 4,2 8,2',
];
- sprintf '<svg width="16" height="16" viewBox="0 0 8 8"><path d="%s"/></svg>',
- $h->[$_ % 5] . $v->[$_ / 5] || $v->[6];
+ sprintf(
+ '<svg width="16" height="16" viewBox="0 0 8 8"><path d="%s"/></svg>',
+ $h->[$_ % 5] . $v->[$_ / 5] || $v->[6],
+ );
} 0 .. 5*5
],
},
# draw style (0=empty, 1=dot, 2=line connect) to right, down, left, up
qw(
0010 0112 2022 2220 2000 2012 0122 0202 0020 0220 0012 0022 2202
- 0222 2222 0102 0200 2201 2002 2200 0100 0110 0120 2001 2010 2020 0000
+ 0222 2222 0102 0200 2201 2002 2200 0100 0110 0120 2001 2010 2020
+ 0000
),
],
},
);
}
qw{
- F0A3FF:Amethyst 0075DC:Blue 993F00:Caramel 4C005C:Damson 191919:Ebony
- 005C31:Forest 2BCE48:Green FFCC99:Honeydew 808080:Iron 94FFB5:Jade
- 8F7C00:Khaki 9DCC00:Lime C20088:Mallow
- 003380:Navy FFA405:Orpiment FFA8BB:Pink 426600:Quagmire FF0010:Red
- 5EF1F2:Sky 00998F:Turquoise E0FF66:Uranium 740AFF:Violet 990000:Wine
- FFFF80:Xanthin FFFF00:Yellow FF5005:Zinnia 0
+ F0A3FF:Amethyst 0075DC:Blue 993F00:Caramel 4C005C:Damson
+ 191919:Ebony 005C31:Forest 2BCE48:Green FFCC99:Honeydew
+ 808080:Iron 94FFB5:Jade 8F7C00:Khaki 9DCC00:Lime
+ C20088:Mallow 003380:Navy FFA405:Orpiment FFA8BB:Pink
+ 426600:Quagmire FF0010:Red 5EF1F2:Sky 00998F:Turquoise
+ E0FF66:Uranium 740AFF:Violet 990000:Wine FFFF80:Xanthin
+ FFFF00:Yellow FF5005:Zinnia 0
}
],
},