BBS-Universal
view release on metacpan or search on metacpan
lib/BBS/Universal/SysOp.pm view on Meta::CPAN
$new = '[% FAINT %][% ITALIC %] count [% RESET %]';
$text =~ s/ count /$new/gs;
$new = ' [% RED %][% ITALIC %]red[% RESET %],[% GREEN %][% ITALIC %]green[% RESET %],[% BLUE %][% ITALIC %]blue[% RESET %]';
$text =~ s/ red,green,blue/$new/gs;
$new = ' [% FAINT %][% ITALIC %]column[% RESET %],[% FAINT %][% ITALIC %]row[% RESET %] ';
$text =~ s/ column,row /$new/gs;
$new = ' [% FAINT %][% ITALIC %]color[% RESET %],[% FAINT %][% ITALIC %]column[% RESET %],[% FAINT %][% ITALIC %]row[% RESET %],[% FAINT %][% ITALIC %]width[% RESET %],[% FAINT %][% ITALIC %]height[% RESET %],[% FAINT %][% ITALIC %]type[% RES...
$text =~ s/ color,column,row,width,height,type /$new/gs;
}
return $text;
} ## end sub _render_ansi_catalog
sub sysop_list_commands {
my $self = shift;
my $mode = shift;
$self->{'debug'}->DEBUG(['Start SysOp List Commands']);
my ($wsize, $hsize, $wpixels, $hpixels) = GetTerminalSize();
my $size = ($hsize - ($self->{'CACHE'}->get('START_ROW') + $self->{'CACHE'}->get('ROW_ADJUST')));
my $srow = $size - 5;
my $text = '';
if ($mode && $mode eq 'ASCII') {
my @asctkn = (sort(keys %{ $self->{'ascii_meta'} }), 'HORIZONTAL RULE');
my $asc = 12;
foreach my $cell (@asctkn) { $asc = max(length($cell), $asc); }
my $table = Text::SimpleTable->new($asc, 25);
$table->row('ASCII TOKENS', 'DESCRIPTION');
$table->hr();
while (scalar(@asctkn)) {
my $ascii_tokens = shift(@asctkn);
$table->row($ascii_tokens, $self->{'ascii_meta'}->{$ascii_tokens}->{'desc'});
}
$text = $self->center($table->twin('ORANGE')->draw(), $wsize);
} elsif ($mode && $mode eq 'ANSI') {
# Use refactored dedicated ANSI builder while preserving original output
$text = _render_ansi_catalog($self, $wsize);
} elsif ($mode && $mode eq 'ATASCII') {
my @atatkn = (sort(keys %{ $self->{'atascii_meta'} }));
$text = '[% ORANGE %]â' . 'â' x 86 . 'â[% RESET %]' . "\n";
$text .= "[% ORANGE %]â[% YELLOW %] ## ## ## [% BRIGHT BLUE %]âââââ âââ¦ââ âââââ âââââ âââââ âââ¦ââ âââ¦ââ [% YELLOW %] ## ## ## [% ORANGE %]â[% ...
$text .= "[% ORANGE %]â[% GREEN %] ## ## ## [% BRIGHT BLUE %]â â â â â â â â â â [% GREEN %] ## ## ## [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% CYAN %] ## ## ## [% BRIGHT BLUE %]â âââ⣠â â âââ⣠âââââ â â â [% CYAN %] ## ## ## [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% BLUE %] ### ## ### [% BRIGHT BLUE %]â â â â â â â â â â [% BLUE %] ### ## ### [% ORANGE %]â[% RESET %]\n";
$text .= "[% ORANGE %]â[% MAGENTA %] ### ## ### [% BRIGHT BLUE %]â â â â â âââââ âââââ âââ©ââ âââ©ââ [% MAGENTA %] ### ## ### [% ORANGE %]â[% RESET %]\n";
$text .= '[% ORANGE %]â âââââââ¦' . 'â' x 39 . 'â¦' . 'â' x 39 . 'â£[% RESET %]' . "\n";
$text .= "[% ORANGE %]â[% BRIGHT YELLOW %] CHAR [% ORANGE %]â[% BRIGHT YELLOW %] ATASCII TOKENS [% ORANGE %]â[% BRIGHT YELLOW %] DESCRIPTION [% ORANGE %]â[% RESET %]\n";
$text .= '[% ORANGE %]â âââââââ¬' . 'â' x 39 . 'â¬' . 'â' x 39 . 'â£[% RESET %]' . "\n";
foreach my $name (@atatkn) {
$text .= '[% ORANGE %]â[% RESET %] ' . $self->{'atascii_meta'}->{$name}->{'unicode'} . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-37s %s %-37s %s', $name, '[% ORANGE %]â[% RESET %]', $self->{'atascii_meta'}->{$name}->{'desc'}, '[%...
}
$text .= '[% ORANGE %]â[% RESET %] ' . '[% HORIZONTAL BAR %]' x 4 . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-37s %s %-37s %s', 'HORIZONTAL RULE', '[% ORANGE %]â[% RESET %]', 'Horizontal rule', '[% ORANGE %]â[% RESET %]') . "\n";
$text .= "[% ORANGE %]ââââââââ©ââââââââââââââââââââââââââââââââââââââââ©ââââââââââââââââââââââââââ...
} elsif ($mode && $mode eq 'PETSCII') {
# â â â â â â
â â â â â â â â â â â â â â â â â â â â â â â â â â â ⡠⢠⣠⤠⥠⦠⧠⨠⩠⪠⫠⬠â ⮠⯠ⰠⱠⲠⳠⴠⵠⶠⷠ⸠⹠⺠⻠...
# ð¬ ð¬ ð¬ ð¬ ð¬ ð¬
ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ ð¬ 𬡠𬢠𬣠𬤠𬥠𬦠𬧠𬨠𬩠𬪠𬫠𬬠ð¬ 𬮠𬯠𬰠ð...
# ð° ð± ð² ð³ ð´ ðµ ð¶ ð· ð¸ ð¹ ðº ð» ð¼ ð½ ð¾ ð¿ ð® ð® ð® ð® ð® ð®
ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® ð® 𮡠...
my @pettkn = sort(keys %{ $self->{'petscii_meta'} });
$text = '[% ORANGE %]â' . 'â' x 108 . 'â[% RESET %]' . "\n";
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %] .o88b. [% RESET %][% BRIGHT WHITE %] 8""""8 8"""" ""8"" 8""""8 8""""8 8 8 [% BLUE %] .o88b. [% RESET %]...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]d8P Y8 [% RESET %][% BRIGHT WHITE %] 8 8 8 8 8 8 " 8 8 [% BLUE %]d8P Y8 [% RESET %]...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]8P ð®
ð®
ð®
ð[% RESET %][% BRIGHT WHITE %] 8eeee8 8eeee 8e 8eeeee 8e 8e 8e [% BLUE %]8P ...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]8b [% RED %][% REVERSE %]ð®ð®ð®[% RESET %][% RED %]ð¬¿[% RESET %][% BRIGHT WHITE %] 88 88 88 88 88 88 88 [% BLUE %]8b ...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]Y8b d8 [% RESET %][% BRIGHT WHITE %] 88 88 88 e 88 88 e 88 88 [% BLUE %]Y8b d8 [% RESET %]...
$text .= '[% ORANGE %]â[% RESET %] [% BLUE %]' . " `Y88P'" . '[% RESET %][% BRIGHT WHITE %] 88 88eee 88 8eee88 88eee8 88 88 ' . "[% BLUE %] `Y88P'" . '[%...
$text .= '[% ORANGE %]â âââââââ¦' . 'â' x 50 . 'â¦' . 'â' x 50 . 'â£[% RESET %]' . "\n";
$text .= '[% ORANGE %]â[% BRIGHT YELLOW %] CHAR [% ORANGE %]â[% BRIGHT YELLOW %] PETSCII TOKENS [% ORANGE %]â[% BRIGHT YELLOW %] DESCRIPTION [% ORANGE %]â[% RESET ...
$text .= '[% ORANGE %]â âââââââ¬' . 'â' x 50 . 'â¬' . 'â' x 50 . 'â£[% RESET %]' . "\n";
foreach my $name (@pettkn) {
$text .= '[% ORANGE %]â[% RESET %] ' . $self->{'petscii_meta'}->{$name}->{'unicode'} . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-48s %s %-48s %s', $name, '[% ORANGE %]â[% RESET %]', $self->{'petscii_meta'}->{$name}->{'desc'}, '[%...
}
$text .= '[% ORANGE %]â[% RESET %] ' . '[% HORIZONTAL BAR %]' x 4 . ' [% ORANGE %]â[% RESET %] ' . sprintf('%-48s %s %-48s %s', 'HORIZONTAL RULE color', '[% ORANGE %]â[% RESET %]', 'Horizontal rule in specified color', '[% ORANGE %]â[...
$text .= '[% ORANGE %]ââââââââ©' . 'â' x 50 . 'â©' . 'â' x 50 . 'â[% RESET %]' . "\n";
$text =~ s/â (WHITE)/â \[\% BRIGHT WHITE \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (YELLOW)/â \[\% YELLOW \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (CYAN)/â \[\% CYAN \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (GREEN)/â \[\% GREEN \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (PINK)/â \[\% PINK \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (BLUE)/â \[\% BLUE \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (RED)/â \[\% RED \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (PURPLE)/â \[\% COLOR 127 \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (DARK PURPLE)/â \[\% COLOR 53 \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (GRAY)/â \[\% GRAY 9 \%\]$1\[\% RESET \%\]/g;
$text =~ s/â (BROWN)/â \[\% COLOR 94 \%\]$1\[\% RESET \%\]/g;
} elsif ($mode && $mode eq 'USER') {
my @usr = (sort(keys %{ $self->{'COMMANDS'} }));
my @tkn = (sort(keys %{ $self->{'TOKENS'} }, 'JUSTIFIED text ENDJUSTIFIED', 'WRAP text ENDWRAP'));
my $y = 1;
my $z = 1;
foreach my $cell (@usr) { $y = max(length($cell), $y); }
foreach my $cell (@tkn) { $z = max(length($cell), $z); }
my $table = Text::SimpleTable->new($y, $z);
$table->row('USER MENU COMMANDS', 'USER TOKENS');
$table->hr();
my ($user_names, $token_names);
my $count = 0;
while (scalar(@usr) || scalar(@tkn)) {
$user_names = scalar(@usr) ? shift(@usr) : ' ';
$token_names = scalar(@tkn) ? shift(@tkn) : ' ';
$table->row($user_names, $token_names);
$count++;
if ($count > $srow) {
$count = 0;
$table->hr();
$table->row('USER MENU COMMANDS', 'USER TOKENS');
$table->hr();
} ## end if ($count > $srow)
} ## end while (scalar(@usr) || scalar...)
$text = $self->center($table->twin('ORANGE')->draw(), $wsize);
foreach my $name (qw(color text)) {
my $ch = '[% ITALIC %][% FAINT %]' . $name . '[% RESET %]';
$text =~ s/$name/$ch/gs;
}
} elsif ($mode && $mode eq 'SYSOP') {
my @sys = (sort(keys %{$main::SYSOP_COMMANDS}));
my @stkn = (sort(keys %{ $self->{'sysop_tokens'} }, 'JUSTIFIED text ENDJUSTIFIED', 'WRAP text ENDWRAP'));
my $x = 1;
my $xt = 1;
foreach my $cell (@sys) { $x = max(length($cell), $x); }
foreach my $cell (@stkn) { $xt = max(length($cell), $xt); }
my $table = Text::SimpleTable->new($x, $xt);
$table->row('SYSOP MENU COMMANDS', 'SYSOP TOKENS');
$table->hr();
my ($sysop_names, $sysop_tokens);
my $count = 0;
( run in 0.548 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )