#!/usr/bin/perl use strict; use warnings; use locale; use utf8; binmode(STDOUT, ":utf8"); my $ltype = "(HEAVY|LIGHT|SINGLE|DOUBLE)"; my $ldir = "(UP|DOWN|LEFT|RIGHT)"; my $lfull = "(HORIZONTAL|VERTICAL)"; while (<>) { /^([0-9A-F]{4});([A-Z ]*);/ or die "strange line: $_"; my $code = "0x$1"; $_ = $2; s/^BOX DRAWINGS // or die "stranger line: $_"; my $v = "0"; if (/^$ltype $ldir$/) { $v = "$2($1)"; } elsif (/^$ltype $lfull$/) { $v = "$2($1)"; } elsif (/^$ltype $ldir AND $ldir$/) { $v = "$2($1)|$3($1)"; } elsif (/^$ldir $ltype AND $ldir $ltype$/) { $v = "$1($2)|$3($4)"; } elsif (/^$ltype $lfull AND $ldir$/) { $v = "$2($1)|$3($1)"; } elsif (/^$lfull $ltype AND $ldir $ltype$/) { $v = "$1($2)|$3($4)"; } elsif (/^$ltype $ldir AND $ltype $ldir$/) { $v = "$2($1)|$4($3)"; } elsif (/^$ldir $ltype AND $lfull $ltype$/) { $v = "$3($4)|$1($2)"; } elsif (/^$ldir $ltype AND $ldir $ldir $ltype$/) { $v = "$1($2)|$3($5)|$4($5)"; } elsif (/^$ltype $ldir AND $lfull$/) { $v = "$3($1)|$2($1)"; } elsif (/^$ldir $ltype AND $ldir $lfull $ltype$/) { $v = "$1($2)|$3($5)|$4($5)"; } elsif (/^$ltype $lfull AND $lfull$/) { $v = "$2($1)|$3($1)"; } elsif (/^$lfull $ltype AND $lfull $ltype$/) { $v = "$1($2)|$3($4)"; } elsif (/^$ldir $ldir $ltype AND $ldir $ldir $ltype$/) { $v = "$1($3)|$2($3)|$4($6)|$5($6)"; } print " $v," . ' 'x(40 - length($v)) . " // $code " . chr(hex($code)) . " $_\n"; }