1 |
#! perl |
2 |
|
3 |
=head1 NAME |
4 |
|
5 |
block-graphics-to-ascii - map block graphics to ascii characters |
6 |
|
7 |
=head1 DESCRIPTION |
8 |
|
9 |
A not very useful example of filtering all text output to the terminal |
10 |
by replacing all line-drawing characters (U+2500 .. U+259F) by a |
11 |
similar-looking ascii character. |
12 |
|
13 |
=cut |
14 |
|
15 |
# simple example that uses the add_lines hook to filter unicode and vt100 line/box graphics |
16 |
|
17 |
# ─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋╌╍╎╏ |
18 |
my $rep_unicode = "--||--||--||++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--||" |
19 |
# ═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲ ╳╴╵╶╷╸╹╺╻╼╽╾╿▀▁▂▃▄▅▆▇█▉▊▋▌▍▎▏▐░▒▓▔▕▖▗▘▙▚▛▜▝▞▟ |
20 |
. "=|+++++++++++++++++++++++++++++++/\\X-|-|-|-|-|-|#____#######|||||###~###########"; |
21 |
|
22 |
# ↑↓→←█▚ ☃HIJKLMNOPQRSTUVWXYZ[\ ]^ ◆▒␉␌␍␊°±␋┘┐┌└┼⎺⎻─⎼⎽├┤┴┬│≤≥π≠£· |
23 |
my $rep_acs = "↑↓<>#\\☃HIJKLMNOPQRSTUVWXYZ[\\]^ ◆#␉␌␍␊°±␋+++++⎺⎻-⎼⎽++++!<>π≠£·"; |
24 |
|
25 |
sub on_add_lines { |
26 |
my ($self, $str) = @_; |
27 |
|
28 |
$str =~ s/([\x{2500}-\x{259f}])/substr $rep_unicode, (ord $1) - 0x2500, 1/ge; |
29 |
|
30 |
$str =~ s/([\x41-\x7e])/substr $rep_acs, (ord $1) - 0x41, 1/ge |
31 |
if $self->cur_charset eq "0"; |
32 |
|
33 |
$self->scr_add_lines ($str); |
34 |
|
35 |
1 |
36 |
} |
37 |
|