-
Notifications
You must be signed in to change notification settings - Fork 6
/
runquasi.pl
executable file
·95 lines (90 loc) · 2 KB
/
runquasi.pl
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
#!/usr/bin/perl
use File::Find;
use File::Copy;
my $tmp = "";
my $orig = "";
my $qq = "";
find(\&wanted, '.');
sub wanted {
if ( /^\.Z[0-9][0-9]*.*thesis\.tex/ ) {
$orig = $_;
$tmp = ".old" . $_;
$qq = ".qq" . $_;
print "Will's quasiquote magic\n";
print "Processing ";
print $_;
print "\n";
move($_, $tmp) or die "move failed: $!";
quasi();
copy($qq, $orig) or die "copy failed: $!";
}
if ( /^\.Z1[0-9].*thesis\.tex/ ) {
$orig = $_;
$tmp = ".old" . $_;
$qq = ".qq" . $_;
print "Will's quasiquote magic\n";
print "Processing ";
print $_;
print "\n";
move($_, $tmp) or die "move failed: $!";
quasi();
copy($qq, $orig) or die "copy failed: $!";
}
}
sub quasi {
open(TMP, $tmp);
open(QQ, ">" . $qq);
my @stack;
my $magic_turned_on = 1;
while ($line = <TMP>) {
if ($magic_turned_on) {
$line =~ s{(\\qqmagicoff)}{
$magic_turned_on = 0;
print "*** magic off ***\n";
$1;
}eg;
$line =~ s/`,//g;
$line =~ s/'\\dt/\\dt/g;
$line =~ s/'\\cn/\\cn/g;
$line =~ s/`\\cn/\\cn/g;
$line =~ s/,\\va/\\va/g;
$line =~ s/,\\em/\\em/g;
$line =~ s/,\$/\$/g;
$line =~ s/,\{\\it /\{\\it /g;
$line =~ s/`\\=\(/\\=\(/g;
$line =~ s/'\\=\(/\\=\(/g;
$line =~ s/'\{\\sf/\{\\sf/g;
$line =~ s/'\{\\textsf/\{\\textsf/g;
$line =~ s/,\{\\/\{\\/g;
$line =~ s{(ZZZZschemeresponse)}{
my $result = $&;
if ($1 or @stack) {
@stack ? pop @stack : push @stack, $1;
$result = $1;
}
$result;
}eg;
$line =~ s{(['`])?(\()|(\))|( \. )}{
my $result = $&;
if ($1 or @stack) {
push @stack, $1 if $2;
$result = $2 ? '$\textbf{(}\!\!\hspace*{-1pt}\textbf{(}$'
: ($3 ? '$\textbf{)}\!\!\hspace*{-1pt}\textbf{)}$'
: ' $\centerdot$ ');
pop @stack if $3;
}
$result;
}eg;
print QQ $line;
} else {
$line =~ s{(\\qqmagicon)}{
$magic_turned_on = 1;
print "*** magic on ***\n";
$1;
}eg;
print QQ $line;
}
}
close(TMP);
close(QQ);
}