added license
[bills-tools.git] / calc / calcgo
blobcd6335bad506bffa12e95ab8bdbed7bb2b745eec
1 #!/usr/bin/env rc
3 # calc, (c) Oct, 2010, by Bill Burdick
4 # licensed with the ZLIB license (see the LICENSE file)
6 compile=8g
7 link=8l
8 base=/tmp/calcscript
9 errs=$1^.errs
10 script=$base^.go
11 oldVals=''
12 newVals=''
13 file=$1
14 *=()
15 while (line=`{read}) {
16         var=`{echo $line|sed -e 's/^([^=]*)=.*$/\1/'}
17         value=`{echo $line|sed -e 's/^[^=]*=(.*)$/\1/'}
18         *=($* $var $value)
19         if (! ~ $oldVals '') {
20                 oldVals=$"oldVals', '
21                 newVals=$"newVals', '
22         }
23         oldVals=$"oldVals'"'$var'" : '$"value
24         newVals=$"newVals'"'$var'" : '$var
26 cat <<here > $script
27 package main
28 import . "fmt"
29 func main() {
30 here
31 while (! ~ $#* 0) {
32         echo (' '$1^' := float64('$2')') >> $script
33         shift 2
35 <$file{
36 read>/dev/null
37 cat >> $script
39 cat<<here >> $script
40         func() {
41                 oldVars := map[string]float64{$oldVals}
42                 for k, v := range map[string]float64{$newVals} {
43                         if v != oldVars[k] {
44                                 Println(k, "=", v)
45                         }
46                 }
47         }()
49 here
50 $compile -o $base^.8 $script > $errs && $link -o $base $base^.8 >> $errs && $base