|
2 | 2 |
|
3 | 3 | use 5.014; # strict, //, s//r
|
4 | 4 | use warnings;
|
| 5 | +use autodie; |
| 6 | + |
5 | 7 | $| = 1;
|
6 | 8 | my @list = (
|
7 |
| - { name => "DEFAULT" , styleID => "0", fgColor => "FF0000", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
8 |
| - { name => "INSTRUCTION WORD" , styleID => "5", fgColor => "0000FF", bgColor => "FFFFFF", fontName => "", fontStyle => "1", fontSize => "", keywordClass => 'instre1', colorStyle => '0', }, |
9 |
| - { name => "NUMBER" , styleID => "4", fgColor => "FF0000", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
10 |
| - { name => "OPERATOR" , styleID => "10", fgColor => "000080", bgColor => "FFFFFF", fontName => "", fontStyle => "1", fontSize => "", colorStyle => '0', }, |
11 |
| - { name => "IDENTIFIER" , styleID => "11", fgColor => "004080", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
12 |
| - { name => "SCALAR" , styleID => "12", fgColor => "FF8000", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
13 |
| - { name => "ARRAY" , styleID => "13", fgColor => "CF34CF", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
14 |
| - { name => "HASH" , styleID => "14", fgColor => "8080C0", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
15 |
| - { name => "SYMBOL TABLE" , styleID => "15", fgColor => "FF0000", bgColor => "FFFFFF", fontName => "", fontStyle => "1", fontSize => "", colorStyle => '0', }, |
16 |
| - { name => "PROTOTYPE" , styleID => "40", fgColor => "000080", bgColor => "FFFFFF", fontName => "", fontStyle => "1", fontSize => "", colorStyle => '0', }, |
17 |
| - { name => "COMMENT LINE" , styleID => "2", fgColor => "008000", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
18 |
| - { name => "STRING SINGLEQUOTE" , styleID => "7", fgColor => "808080", bgColor => "FFFFFF", fontName => "", fontStyle => "2", fontSize => "", colorStyle => '0', }, |
19 |
| - { name => "STRING DOUBLEQUOTE" , styleID => "6", fgColor => "808080", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
20 |
| - { name => "STRING BACKTICKS" , styleID => "20", fgColor => "FFFF00", bgColor => "808080", fontName => "", fontStyle => "1", fontSize => "", colorStyle => '0', }, |
21 |
| - { name => "STRING Q" , styleID => "26", fgColor => "804080", bgColor => "FFFFFF", fontName => "", fontStyle => "2", fontSize => "", colorStyle => '0', }, |
22 |
| - { name => "STRING QQ" , styleID => "27", fgColor => "804080", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
23 |
| - { name => "STRING QX" , styleID => "28", fgColor => "8000FF", bgColor => "FFEEEC", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
24 |
| - { name => "STRING QR" , styleID => "29", fgColor => "8080FF", bgColor => "F8FEDE", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
25 |
| - { name => "STRING QW" , styleID => "30", fgColor => "CF34CF", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
26 |
| - { name => "REGEX MATCH" , styleID => "17", fgColor => "8080FF", bgColor => "F8FEDE", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
27 |
| - { name => "REGEX SUBSTITUTION" , styleID => "18", fgColor => "8080C0", bgColor => "FFEEEC", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
28 |
| - { name => "TRANSLATION" , styleID => "44", fgColor => "8080C0", bgColor => "FFEEEC", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
29 |
| - { name => "HEREDOC DELIMITER" , styleID => "22", fgColor => "550055", bgColor => "EEEEFF", fontName => "", fontStyle => "1", fontSize => "", colorStyle => '0', }, |
30 |
| - { name => "HEREDOC SINGLEQUOTE" , styleID => "23", fgColor => "7F007F", bgColor => "EEEEFF", fontName => "", fontStyle => "2", fontSize => "", colorStyle => '0', }, |
31 |
| - { name => "HEREDOC DOUBLEQUOTE" , styleID => "24", fgColor => "7F007F", bgColor => "EEEEFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
32 |
| - { name => "HEREDOC BACKTICK" , styleID => "25", fgColor => "8000FF", bgColor => "FFEEEC", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
33 |
| - { name => "VAR IN STRING" , styleID => "43", fgColor => "808080", bgColor => "FFFFFF", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
34 |
| - { name => "VAR IN REGEX" , styleID => "54", fgColor => "8080FF", bgColor => "F8FEDE", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
35 |
| - { name => "VAR IN REGEX SUBSTITUTION" , styleID => "55", fgColor => "8080C0", bgColor => "FFEEEC", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
36 |
| - { name => "VAR IN BACKTICKS" , styleID => "57", fgColor => "FFFF00", bgColor => "808080", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
37 |
| - { name => "VAR IN HEREDOC DOUBLEQUOTE" , styleID => "61", fgColor => "7F007F", bgColor => "EEEEFF", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
38 |
| - { name => "VAR IN HEREDOC BACKTICK" , styleID => "62", fgColor => "8000FF", bgColor => "FFEEEC", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
39 |
| - { name => "VAR IN STRING QQ" , styleID => "64", fgColor => "804080", bgColor => "FFFFFF", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
40 |
| - { name => "VAR IN STRING QX" , styleID => "65", fgColor => "8000FF", bgColor => "FFEEEC", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
41 |
| - { name => "VAR IN STRING QR" , styleID => "66", fgColor => "8080FF", bgColor => "F8FEDE", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
42 |
| - { name => "FORMAT IDENTIFIER" , styleID => "41", fgColor => "C000C0", bgColor => "FFFFFF", fontName => "", fontStyle => "2", fontSize => "", colorStyle => '0', }, |
43 |
| - { name => "FORMAT BODY" , styleID => "42", fgColor => "C000C0", bgColor => "FFF0FF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
44 |
| - { name => "DATA SECTION" , styleID => "21", fgColor => "808080", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
45 |
| - { name => "POD" , styleID => "3", fgColor => "000000", bgColor => "FFFFFF", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
46 |
| - { name => "POD VERBATIM" , styleID => "31", fgColor => "004000", bgColor => "EEFFEE", fontName => "", fontStyle => "0", fontSize => "", colorStyle => '0', }, |
47 |
| - { name => "SYNTAX ERROR" , styleID => "1", fgColor => "FF80C0", bgColor => "FFFFFF", fontName => "", fontStyle => "3", fontSize => "", colorStyle => '0', }, |
| 9 | + { name => "DEFAULT" , styleID => "0" }, |
| 10 | + { name => "INSTRUCTION WORD" , styleID => "5" }, |
| 11 | + { name => "NUMBER" , styleID => "4" }, |
| 12 | + { name => "OPERATOR" , styleID => "10" }, |
| 13 | + { name => "IDENTIFIER" , styleID => "11", fontName => "", fontStyle => "1", fontSize => "" }, |
| 14 | + { name => "SCALAR" , styleID => "12" }, |
| 15 | + { name => "ARRAY" , styleID => "13" }, |
| 16 | + { name => "HASH" , styleID => "14" }, |
| 17 | + { name => "SYMBOL TABLE" , styleID => "15" }, |
| 18 | + { name => "PROTOTYPE" , styleID => "40", fontName => "", fontStyle => "1", fontSize => "" }, |
| 19 | + { name => "COMMENT LINE" , styleID => "2" }, |
| 20 | + { name => "STRING SINGLEQUOTE" , styleID => "7" }, |
| 21 | + { name => "STRING DOUBLEQUOTE" , styleID => "6" }, |
| 22 | + { name => "STRING BACKTICKS" , styleID => "20" }, |
| 23 | + { name => "STRING Q" , styleID => "26", fontName => "", fontStyle => "2", fontSize => "" }, |
| 24 | + { name => "STRING QQ" , styleID => "27", fontName => "", fontStyle => "0", fontSize => "" }, |
| 25 | + { name => "STRING QX" , styleID => "28", fontName => "", fontStyle => "0", fontSize => "" }, |
| 26 | + { name => "STRING QR" , styleID => "29", fontName => "", fontStyle => "0", fontSize => "" }, |
| 27 | + { name => "STRING QW" , styleID => "30", fontName => "", fontStyle => "0", fontSize => "" }, |
| 28 | + { name => "REGEX MATCH" , styleID => "17" }, |
| 29 | + { name => "REGEX SUBSTITUTION" , styleID => "18" }, |
| 30 | + { name => "TRANSLATION" , styleID => "44", fontName => "", fontStyle => "0", fontSize => "" }, |
| 31 | + { name => "HEREDOC DELIMITER" , styleID => "22", fontName => "", fontStyle => "1", fontSize => "" }, |
| 32 | + { name => "HEREDOC SINGLEQUOTE" , styleID => "23", fontName => "", fontStyle => "2", fontSize => "" }, |
| 33 | + { name => "HEREDOC DOUBLEQUOTE" , styleID => "24", fontName => "", fontStyle => "0", fontSize => "" }, |
| 34 | + { name => "HEREDOC BACKTICK" , styleID => "25", fontName => "", fontStyle => "0", fontSize => "" }, |
| 35 | + { name => "VAR IN STRING" , styleID => "43", fontName => "", fontStyle => "3", fontSize => "" }, |
| 36 | + { name => "VAR IN REGEX" , styleID => "54", fontName => "", fontStyle => "3", fontSize => "" }, |
| 37 | + { name => "VAR IN REGEX SUBSTITUTION" , styleID => "55", fontName => "", fontStyle => "3", fontSize => "" }, |
| 38 | + { name => "VAR IN BACKTICKS" , styleID => "57", fontName => "", fontStyle => "3", fontSize => "" }, |
| 39 | + { name => "VAR IN HEREDOC DOUBLEQUOTE" , styleID => "61", fontName => "", fontStyle => "3", fontSize => "" }, |
| 40 | + { name => "VAR IN HEREDOC BACKTICK" , styleID => "62", fontName => "", fontStyle => "3", fontSize => "" }, |
| 41 | + { name => "VAR IN STRING QQ" , styleID => "64", fontName => "", fontStyle => "3", fontSize => "" }, |
| 42 | + { name => "VAR IN STRING QX" , styleID => "65", fontName => "", fontStyle => "3", fontSize => "" }, |
| 43 | + { name => "VAR IN STRING QR" , styleID => "66", fontName => "", fontStyle => "3", fontSize => "" }, |
| 44 | + { name => "FORMAT IDENTIFIER" , styleID => "41", fontName => "", fontStyle => "2", fontSize => "" }, |
| 45 | + { name => "FORMAT BODY" , styleID => "42", fontName => "", fontStyle => "0", fontSize => "" }, |
| 46 | + { name => "DATA SECTION" , styleID => "21" }, |
| 47 | + { name => "POD" , styleID => "3" }, |
| 48 | + { name => "POD VERBATIM" , styleID => "31", fontName => "", fontStyle => "0", fontSize => "" }, |
| 49 | + { name => "ERROR" , styleID => "1" }, |
48 | 50 | );
|
49 | 51 | my %row;
|
50 | 52 | for my $r ( 0 .. $#list ) {
|
|
57 | 59 | # print join(", ", map { sprintf '%02d', $row{$_} } sort { $row{$a} <=> $row{$b} } keys(%row)), "\n";
|
58 | 60 | # exit;
|
59 | 61 |
|
| 62 | +my %defaults = (); |
| 63 | + |
| 64 | +sub set_defaults { |
| 65 | + my ($fname) = @_; |
| 66 | + my $rethref = {}; |
| 67 | + open my $fh, '<', $fname; |
| 68 | + while(<$fh>) { |
| 69 | + next unless m{(?-s)<WidgetStyle.*?styleID="32".*?/>}; |
| 70 | + print STDERR "For $fname, found $_"; |
| 71 | + if( m{fgColor\h*=\h*"(\w+)"} ) { $rethref->{fgColor} = $1; }; |
| 72 | + if( m{bgColor\h*=\h*"(\w+)"} ) { $rethref->{bgColor} = $1; }; |
| 73 | + } |
| 74 | + return $rethref; |
| 75 | +} |
| 76 | + |
| 77 | +if(@ARGV) { |
| 78 | + for my $fn (@ARGV) { |
| 79 | + $defaults{$fn} = set_defaults($fn); |
| 80 | + } |
| 81 | +} |
| 82 | + |
60 | 83 | while(<>) {
|
61 | 84 | state $within;
|
62 | 85 | state $group;
|
|
67 | 90 | }
|
68 | 91 | if( $within && m{</LexerType>} ) {
|
69 | 92 | for my $r (0 .. $#list ) {
|
| 93 | + if(exists $defaults{$ARGV}) { |
| 94 | + for my $key (qw/fgColor bgColor/) { |
| 95 | + next if $list[$r]{styleID}<=21 and defined($list[$r]{$key}); |
| 96 | + if(exists $defaults{$ARGV}{$key}) { $list[$r]{$key} = $defaults{$ARGV}{$key}; } |
| 97 | + } |
| 98 | + } |
| 99 | + |
70 | 100 | printf qq( %s ), '<WordsStyle';
|
71 | 101 | for my $key ( qw/name styleID fgColor bgColor fontName fontStyle fontSize colorStyle keywordClass/ ) {
|
72 | 102 | printf qq(%s="%s" ), $key, $list[$r]{$key} if exists $list[$r]{$key};
|
|
97 | 127 | $_ = ''; # don't print (yet) when $within...
|
98 | 128 | next if $r < 0; # remove 8=PUNCTUATION 9=PREPROCESSOR 19=LONGQUOTE
|
99 | 129 |
|
100 |
| - $list[$r]{name} = $name // $list[$r]{name}; |
| 130 | + #$list[$r]{name} = $name // $list[$r]{name}; # use the new name no matter what |
101 | 131 | $list[$r]{fgColor} = $fg // $list[$r]{fgColor};
|
102 | 132 | $list[$r]{bgColor} = $bg // $list[$r]{bgColor};
|
103 | 133 | $list[$r]{fontName} = $fn // $list[$r]{fontName};
|
|
0 commit comments