]> Pileus Git - ~andy/rhawk/blob - test.awk
Fix broken playto scores
[~andy/rhawk] / test.awk
1 # Functions
2 function say(who, msg)
3 {
4         print ":" who"!u@h PRIVMSG #rhtest :" msg
5 }
6
7 function error(msg)
8 {
9         print "error: " msg > "/dev/stderr"
10 }
11
12 function debug(msg)
13 {
14         print msg > "/dev/stderr"
15 }
16
17 function command(who, cmd)
18 {
19         arg=cmd
20         gsub(/\<[nbp]|[+-]/, "", arg)
21         if      (cmd ~ /^\./)     0 # nop
22         else if (cmd ~ /^n/)      say(who, ".newgame " arg)
23         else if (cmd ~ /^e/)      say(who, ".endgame ")
24         else if (cmd ~ /^j/)      say(who, ".join")
25         else if (cmd ~ /^d/)      say("andy753421", ".deal " who " " hand[who])
26         else if (cmd ~ /^l/)      say(who, ".look")
27         else if (cmd ~ /^b/)      say(who, ".bid "  arg)
28         else if (cmd ~ /^s/)      say(who, ".score")
29         else if (cmd ~ /^B/)      say(who, ".bids")
30         else if (cmd ~ /^t/)      say(who, ".tricks")
31         else if (cmd ~ /^T/)      say(who, ".turn")
32         else if (cmd ~ /^p/)      say(who, ".pass " arg)
33         else if (arg ~ /[shdc]$/) say(who, ".play " arg)
34         else                      error("unknown cmd '" cmd "'")
35 }
36
37 function reset()
38 {
39         nturns = 0
40         delete players # players[i]   -> "name"
41         delete turns   # turns[pi][i] -> "cmd"
42 }
43
44 # Rules
45 BEGIN { reset() }
46
47 //  { gsub(/#.*/, "") }
48
49 /^[^ ]+:/ {
50         gsub(/:/, "")
51         pi = length(players)
52         if (NF-2 > nturns)
53                 nturns = NF-1
54         for (i=2; i<=NF; i++)
55                 turns[pi][i-2] = $i
56         players[pi] = $1
57         hand[$1]    = $0
58         gsub(/^\w*|[nbp-]\w+|\<[nejlbsBtpd]\>|[.+]/, "", hand[$1])
59         gsub(/^ */, "", hand[$1])
60         print $1 ": " hand[$1] > "/dev/stderr"
61         say($1, "unicode :(")
62 }
63
64 /^\s*$/ {
65         for (ti=0; ti<nturns; ti++)
66                 for (pi=0; pi<length(players); pi++)
67                         command(players[pi], turns[pi][ti])
68         reset()
69 }