Skip to content

Commit 01b5cc4

Browse files
committed
Vestaboard: add "show"
1 parent 03855e2 commit 01b5cc4

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

lib/Synergy/Reactor/Vestaboard.pm

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,18 @@ sub listener_specs {
134134
}
135135
],
136136
},
137+
{
138+
name => 'vesta_show',
139+
method => 'handle_vesta_show',
140+
exclusive => 1,
141+
predicate => sub ($, $e) { $e->was_targeted && $e->text =~ /\Avesta show\z/i },
142+
help_entries => [
143+
{
144+
title => 'vesta',
145+
text => "*vesta show*: see what's on the board",
146+
}
147+
],
148+
},
137149
{
138150
name => 'vesta_lock',
139151
method => 'handle_vesta_lock',
@@ -383,6 +395,64 @@ sub _setup_content_server ($self) {
383395
return;
384396
}
385397

398+
my %CHAR_FOR = (
399+
0 => "\N{IDEOGRAPHIC SPACE}",
400+
(map { $_ => chr(0xFF20 + $_) } ( 1 .. 26)), # A .. Z
401+
(map { $_ => chr(0xFF10 + $_ - 26) } (27 .. 35)), # 1 .. 9
402+
36 => "\x{FF10}", # Zero
403+
404+
40 => "\N{FULLWIDTH DOLLAR SIGN}",
405+
41 => "\N{FULLWIDTH LEFT PARENTHESIS}", # '(',
406+
42 => "\N{FULLWIDTH RIGHT PARENTHESIS}", # ')',
407+
408+
44 => "\N{FULLWIDTH HYPHEN-MINUS}", # '-',
409+
410+
46 => "\N{FULLWIDTH PLUS SIGN}", # '+',
411+
47 => "\N{FULLWIDTH AMPERSAND}", # '&',
412+
48 => "\N{FULLWIDTH EQUALS SIGN}", # '=',
413+
49 => "\N{FULLWIDTH SEMICOLON}", # ';',
414+
37 => "\N{FULLWIDTH EXCLAMATION MARK}", # '!',
415+
38 => "\N{FULLWIDTH COMMERCIAL AT}", # '@',
416+
39 => "\N{FULLWIDTH NUMBER SIGN}", # '#',
417+
50 => "\N{FULLWIDTH COLON}", # ':',
418+
419+
52 => "\N{FULLWIDTH APOSTROPHE}", # "'",
420+
53 => "\N{FULLWIDTH QUOTATION MARK}",
421+
54 => "\N{FULLWIDTH PERCENT SIGN}",
422+
55 => "\N{FULLWIDTH COMMA}",
423+
56 => "\N{FULLWIDTH FULL STOP}",
424+
425+
59 => "\N{FULLWIDTH SOLIDUS}",
426+
60 => "\N{FULLWIDTH QUOTATION MARK}",
427+
62 => "° ", # no full-width variant available
428+
63 => '🟥', # here and below: the colors
429+
64 => '🟧',
430+
65 => '🟨',
431+
66 => '🟩',
432+
67 => '🟦',
433+
68 => '🟪',
434+
69 => '⬜️',
435+
);
436+
437+
sub handle_vesta_show ($self, $event) {
438+
$event->mark_handled;
439+
440+
my $curr = $self->_current_characters;
441+
442+
unless ($curr) {
443+
$event->reply("Sorry, I don't know what's on the board!");
444+
return;
445+
}
446+
447+
my @lines;
448+
for my $line (@$curr) {
449+
push @lines,
450+
join q{}, map {; $CHAR_FOR{$_} // "\N{IDEOGRAPHIC SPACE}" } @$line;
451+
}
452+
453+
$event->reply("Currently on the board:\n" . join qq{\n}, @lines);
454+
}
455+
386456
sub handle_vesta_lock ($self, $event) {
387457
$event->mark_handled;
388458

0 commit comments

Comments
 (0)