1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
#!/usr/bin/perl
if (scalar(@ARGV) < 1){
usage();
}
my $infile = $ARGV[0];
sub usage{
print STDERR "USAGE: $0 [infile]\n";
exit(1);
}
my $line = do {
local $/ = undef;
open my $fh, "<", $infile
or die "could not open $file: $!";
<$fh>;
};
my $meat = ($line =~ /"(.*)"/g)[0];
my $mirc =
{
'0' => 'white',
'1' => 'black',
'2' => 'blue',
'3' => 'green',
'4' => 'red',
'5' => 'brown',
'6' => 'purple',
'7' => 'orange',
'8' => 'yellow',
'9' => 'light green',
'10' => 'teal',
'11' => 'light cyan',
'12' => 'light blue',
'13' => 'pink',
'14' => 'gray',
'15' => 'light gray',
};
my $term_background =
{
'white' => '107',
'black' => '40',
'blue' => '44',
'green' => '42',
'red' => '41',
'brown' => '101', #light yellow
'purple' => '45',
'orange' => '101',
'yellow' => '43',
'light green' => '102',
'teal' => '46',
'light cyan' => '106',
'light blue' => '104',
'pink' => '105',
'gray' => '100',
'light gray' => '47',
};
my $term_foreground =
{
'white' => '97',
'black' => '30',
'blue' => '34',
'green' => '32',
'red' => '31',
'brown' => '93', #light yellow
'purple' => '35',
'orange' => '91',
'yellow' => '33',
'light green' => '92',
'teal' => '36',
'light cyan' => '96',
'light blue' => '94',
'pink' => '95',
'gray' => '90',
'light gray' => '37',
};
sub process_string {
my $fg_code = process_foreground($_[0]);
my $bg_code = process_background($_[1]);
my $content = $_[2];
return sprintf("\033[1;%s;%sm%s\033[0m", $fg_code, $bg_code, $content)
}
sub process_foreground{
my $num = shift;
return $term_foreground->{$mirc->{$num}};
}
sub process_background{
my $num = shift;
return $term_background->{$mirc->{$num}};
}
my @parts = map { $_ =~ s/\\n/\n/g; $_ } map { $_ =~ s/^(\d+),(\d+)(.*)/process_string($1, $2, $3)/e; $_; } split(/\\x03/, $meat);
print join('', @parts);
|