sitemap: prefer https protocol for absolute site references
[sheet.git] / Shiar_Sheet / Keyboard.pm
index 0108cf1d10f43c70ed846339c549ea0604ee4612..c7e455b353616b10d7780c963c02c618cfba8e20 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 no  warnings 'uninitialized';  # save some useless checks for more legible code
 use Carp;
 
 no  warnings 'uninitialized';  # save some useless checks for more legible code
 use Carp;
 
-our $VERSION = '2.07';
+our $VERSION = '2.10';
 
 my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
 my @rowdesc = qw(numeric top home bottom);
 
 my @casedesc = (undef, qw/shift ctrl meta/, 'shift meta');
 my @rowdesc = qw(numeric top home bottom);
@@ -56,6 +56,7 @@ sub escapeclass {
        s/\+/_m/g;
        s/\[/_sbo/g;
        s/\]/_sbc/g;
        s/\+/_m/g;
        s/\[/_sbo/g;
        s/\]/_sbc/g;
+       s/\\/_b/g;
        s/^$/_/;
        return $_;
 }
        s/^$/_/;
        return $_;
 }
@@ -110,10 +111,10 @@ sub print_key {
        if (not defined $flags) {
                $flags = $key eq '^0' ? 'ni' : 'no';
        }
        if (not defined $flags) {
                $flags = $key eq '^0' ? 'ni' : 'no';
        }
-       elsif ($flags =~ s/^=//) { # alias
-               $desc = $self->{sign}->{alias};
-               $desc .= $flags eq "\e" ? 'esc' : $flags;
-               $flags = $self->keyunalias($flags) . ' alias';
+       elsif ($flags =~ s/^=(\S+)\s?//) { # alias
+               my $ref = $1;
+               $desc = $self->{sign}->{alias} . ($ref eq "\e" ? 'esc' : $ref);
+               $flags = join ' ', $self->keyunalias($ref), 'alias', $flags;
        }
        if (my $txt = $self->{key}->{$mode.$key}) {
                ($desc, $mnem) = split /\n/, $self->escapedesc($txt);
        }
        if (my $txt = $self->{key}->{$mode.$key}) {
                ($desc, $mnem) = split /\n/, $self->escapedesc($txt);
@@ -149,7 +150,7 @@ sub print_rows {
        );
        my @modes = sort keys %{ $self->{def} };
 
        );
        my @modes = sort keys %{ $self->{def} };
 
-       print '<table id="rows" class="keys">'."\n\n";
+       printf '<table id="rows" class="%s">'."\n\n", $self->{tableclass} // 'keys';
 
 print_row:
        for (my $row = -1; $row <= $#{ $keyrows{$self->{map}} }; $row++) {
 
 print_row:
        for (my $row = -1; $row <= $#{ $keyrows{$self->{map}} }; $row++) {
@@ -167,8 +168,8 @@ print_row:
 
                for my $submode (@moderows ? @moderows : '') {
                        my $mode = $basemode . $submode;
 
                for my $submode (@moderows ? @moderows : '') {
                        my $mode = $basemode . $submode;
-                       my @caserows = $mode =~ s/(\d+)(?:-(\d+))?$//
-                               ? (map {$_ - 1} split //, $row == 0 && $2 || $1)  # user override
+                       my @caserows = $mode =~ s/(\d+)(?:-(\d*))?$//
+                               ? (map {$_ - 1} split //, $row == 0 ? $2 // $1 : $1)  # user override
                                : @$defrows;  # default
                        my $modekeys = $self->{def}{$mode};
 
                                : @$defrows;  # default
                        my $modekeys = $self->{def}{$mode};
 
@@ -206,44 +207,12 @@ sub print_legend {
        my ($class, $flags) = @_;
 
        say qq{\t\t<dl class="legend $class">};
        my ($class, $flags) = @_;
 
        say qq{\t\t<dl class="legend $class">};
-       printf("\t\t".'<dt class="%s">%s'."\n\t\t\t".'<dd>%s'."\n",
+       printf("\t\t".'<dt class="%s">%s'."\n\t\t\t".'<dd>%s</dd>'."\n",
                $_, map { $self->escapedesc($_) } @{ $self->{flag}->{$_} || ["($_)", '...'] }
        ) for @$flags;
        say "\t\t</dl>";
 }
 
                $_, map { $self->escapedesc($_) } @{ $self->{flag}->{$_} || ["($_)", '...'] }
        ) for @$flags;
        say "\t\t</dl>";
 }
 
-sub print_legends {
-       my $self = shift;
-       my ($input) = @_;
-
-       say "<hr/>\n";
-       say '<div class="help">';
-
-       say "\t", '<div class="left">';
-       my @groups = sort grep {/^g\d/} keys %{ $self->{flag} };
-       $self->print_legend('legend-types', \@groups);
-       say "\t</div>\n";
-
-       say "\t", '<div class="right">';
-       my @attr = sort grep {!/^g\d/} keys %{ $self->{flag} };
-       $self->print_legend('legend-options', \@attr);
-       say '';
-
-       say "\t\t", '<ul class="legend legend-set">';
-
-       say "\t\t<li>keyboard <strong>map</strong> is ",
-               ($input->{map} ? 'set to ' : ''), "<em>$self->{map}</em>";
-       say "\t\t<li><strong>keys</strong> are ",
-               "<em>", ($self->{showkeys} ? 'always shown' : 'hidden if unassigned'), "</em>",
-               (!defined $self->{showkeys} && ' by default');
-       say "\t\t<li>default <strong>style</strong> is ",
-               (defined $input->{style} && 'set to '), "<em>$self->{style}</em>";
-
-       say "\t\t</ul>";
-       say "\t</div>\n";
-       say "</div>\n";
-}
-
 1;
 
 =head1 NAME
 1;
 
 =head1 NAME
@@ -274,7 +243,7 @@ Shiar_Sheet::Keyboard - Output HTML for key sheets
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
-Used by http://sheet.shiar.nl to display keyboard sheets.
+Used by https://sheet.shiar.nl to display keyboard sheets.
 Assumes specific stylesheets and javascript from this site,
 so probably not of much use elsewhere.
 
 Assumes specific stylesheets and javascript from this site,
 so probably not of much use elsewhere.