Starting a web browser: Difference between revisions

Content added Content deleted
(Added Go)
Line 120: Line 120:
</tr>
</tr>
</table>
</table>

=={{header|Go}}==
This uses the same format and color scheme for the table as the Perl 6 entry.
<lang go>package main

import (
"fmt"
"html/template"
"log"
"os"
"os/exec"
"strings"
"time"
)

type row struct {
Address, Street, House, Color string
}

func isDigit(b byte) bool {
return '0' <= b && b <= '9'
}

func separateHouseNumber(address string) (street string, house string) {
length := len(address)
fields := strings.Fields(address)
size := len(fields)
last := fields[size-1]
penult := fields[size-2]
if isDigit(last[0]) {
isdig := isDigit(penult[0])
if size > 2 && isdig && !strings.HasPrefix(penult, "194") {
house = fmt.Sprintf("%s %s", penult, last)
} else {
house = last
}
} else if size > 2 {
house = fmt.Sprintf("%s %s", penult, last)
}
street = strings.TrimRight(address[:length-len(house)], " ")
return
}

func check(err error) {
if err != nil {
log.Fatal(err)
}
}

var tmpl = `
<head>
<title>Rosetta Code - Start a Web Browser</title>
<meta charset="UTF-8">
</head>
<body bgcolor="#d8dcd6">
<table border="2">
<p align="center">
<font face="Arial, sans-serif" size="5">Split the house number from the street name</font>
<tr bgcolor="#02ccfe"><th>Address</th><th>Street</th><th>House Number</th></tr>
{{range $row := .}}
<tr bgcolor={{$row.Color}}>
<td>{{$row.Address}}</td>
<td>{{$row.Street}}</td>
<td>{{$row.House}}</td>
</tr>
{{end}}
</p>
</table>
</body>
`
func main() {
addresses := []string{
"Plataanstraat 5",
"Straat 12",
"Straat 12 II",
"Dr. J. Straat 12",
"Dr. J. Straat 12 a",
"Dr. J. Straat 12-14",
"Laan 1940 - 1945 37",
"Plein 1940 2",
"1213-laan 11",
"16 april 1944 Pad 1",
"1e Kruisweg 36",
"Laan 1940-'45 66",
"Laan '40-'45",
"Langeloërduinen 3 46",
"Marienwaerdt 2e Dreef 2",
"Provincialeweg N205 1",
"Rivium 2e Straat 59.",
"Nieuwe gracht 20rd",
"Nieuwe gracht 20rd 2",
"Nieuwe gracht 20zw /2",
"Nieuwe gracht 20zw/3",
"Nieuwe gracht 20 zw/4",
"Bahnhofstr. 4",
"Wertstr. 10",
"Lindenhof 1",
"Nordesch 20",
"Weilstr. 6",
"Harthauer Weg 2",
"Mainaustr. 49",
"August-Horch-Str. 3",
"Marktplatz 31",
"Schmidener Weg 3",
"Karl-Weysser-Str. 6",
}
browser := "firefox" // or whatever
colors := [2]string{"#d7fffe", "#9dbcd4"}
fileName := "addresses_table.html"
ct := template.Must(template.New("").Parse(tmpl))
file, err := os.Create(fileName)
check(err)
rows := make([]row, len(addresses))
for i, address := range addresses {
street, house := separateHouseNumber(address)
if house == "" {
house = "(none)"
}
color := colors[i%2]
rows[i] = row{address, street, house, color}
}
err = ct.Execute(file, rows)
check(err)
cmd := exec.Command(browser, fileName)
err = cmd.Run()
check(err)
file.Close()
time.Sleep(5 * time.Second) // wait for 5 seconds before deleting file
err = os.Remove(fileName)
check(err)
}</lang>

{{out}}
<pre>
Similar to the Perl 6 entry.
</pre>


=={{header|Perl}}==
=={{header|Perl}}==