summaryrefslogtreecommitdiff
path: root/translate_irssi_to_ascii.pl
blob: 1957e6cb320c86cd84ab963b01ba00334cf1a7be (plain)
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);