Starting a web browser: Difference between revisions
Content added Content deleted
(→{{header|Wren}}: Removed a duplicated line from the C code.) |
m (→{{header|Phix}}: syntax coloured, marked p2js incompatible) |
||
Line 536: | Line 536: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
<!--<lang Phix>(notonline)--> |
|||
<lang Phix>constant addresses = {"Plataanstraat 5", |
|||
<span style="color: #008080;">without</span> <span style="color: #008080;">js</span> <span style="color: #000080;font-style:italic;">-- (file i/o, system)</span> |
|||
"Straat 12", |
|||
<span style="color: #008080;">constant</span> <span style="color: #000000;">addresses</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"Plataanstraat 5"</span><span style="color: #0000FF;">,</span> |
|||
"Straat 12 II", |
|||
<span style="color: #008000;">"Straat 12"</span><span style="color: #0000FF;">,</span> |
|||
<span style="color: #008000;">"Straat 12 II"</span><span style="color: #0000FF;">,</span> |
|||
"Dr. J. Straat 12 |
<span style="color: #008000;">"Dr. J. Straat 12"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Dr. J. Straat 12 a"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Dr. J. Straat 12-14"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Laan 1940 - 1945 37"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Plein 1940 2"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"1213-laan 11"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"16 april 1944 Pad 1"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"1e Kruisweg 36"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Laan 1940-'45 66"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Laan '40-'45"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Langeloërduinen 3 46"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Marienwaerdt 2e Dreef 2"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Provincialeweg N205 1"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Rivium 2e Straat 59."</span><span style="color: #0000FF;">,</span> |
||
"Nieuwe gracht |
<span style="color: #008000;">"Nieuwe gracht 20rd"</span><span style="color: #0000FF;">,</span> |
||
"Nieuwe gracht |
<span style="color: #008000;">"Nieuwe gracht 20rd 2"</span><span style="color: #0000FF;">,</span> |
||
"Nieuwe gracht |
<span style="color: #008000;">"Nieuwe gracht 20zw /2"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Nieuwe gracht 20zw/3"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Nieuwe gracht 20 zw/4"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Bahnhofstr. 4"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Wertstr. 10"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Lindenhof 1"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Nordesch 20"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Weilstr. 6"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Harthauer Weg 2"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Mainaustr. 49"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"August-Horch-Str. 3"</span><span style="color: #0000FF;">,</span> |
||
" |
<span style="color: #008000;">"Marktplatz 31"</span><span style="color: #0000FF;">,</span> |
||
<span style="color: #008000;">"Schmidener Weg 3"</span><span style="color: #0000FF;">,</span> |
|||
<span style="color: #008000;">"Karl-Weysser-Str. 6"</span><span style="color: #0000FF;">}</span> |
|||
function isDigit(integer ch) |
|||
return ch>='0' and ch<='9' |
|||
<span style="color: #008080;">function</span> <span style="color: #000000;">isDigit</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">)</span> |
|||
end function |
|||
<span style="color: #008080;">return</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;">>=</span><span style="color: #008000;">'0'</span> <span style="color: #008080;">and</span> <span style="color: #000000;">ch</span><span style="color: #0000FF;"><=</span><span style="color: #008000;">'9'</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span> |
|||
function separateHouseNumber(integer i) |
|||
string address = addresses[i] |
|||
<span style="color: #008080;">function</span> <span style="color: #000000;">separateHouseNumber</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">)</span> |
|||
sequence parts = split(address) |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">address</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">addresses</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span> |
|||
string street, house |
|||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">parts</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">split</span><span style="color: #0000FF;">(</span><span style="color: #000000;">address</span><span style="color: #0000FF;">)</span> |
|||
integer h = 0 |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">street</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">house</span> |
|||
if length(parts)>1 then |
|||
<span style="color: #004080;">integer</span> <span style="color: #000000;">h</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span> |
|||
string last = parts[$] |
|||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">parts</span><span style="color: #0000FF;">)></span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span> |
|||
if isDigit(last[1]) then |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">last</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">parts</span><span style="color: #0000FF;">[$]</span> |
|||
h = 1 |
|||
<span style="color: #008080;">if</span> <span style="color: #000000;">isDigit</span><span style="color: #0000FF;">(</span><span style="color: #000000;">last</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">])</span> <span style="color: #008080;">then</span> |
|||
string penult = parts[$-1] |
|||
<span style="color: #000000;">h</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">1</span> |
|||
if length(parts)>2 |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">penult</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">parts</span><span style="color: #0000FF;">[$-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> |
|||
and isDigit(penult[1]) |
|||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">parts</span><span style="color: #0000FF;">)></span><span style="color: #000000;">2</span> |
|||
and match("194",penult)!=1 then |
|||
<span style="color: #008080;">and</span> <span style="color: #000000;">isDigit</span><span style="color: #0000FF;">(</span><span style="color: #000000;">penult</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">])</span> |
|||
h = 2 |
|||
<span style="color: #008080;">and</span> <span style="color: #7060A8;">match</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"194"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">penult</span><span style="color: #0000FF;">)!=</span><span style="color: #000000;">1</span> <span style="color: #008080;">then</span> |
|||
end if |
|||
<span style="color: #000000;">h</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">2</span> |
|||
elsif length(parts)>2 then |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
h = 2 |
|||
<span style="color: #008080;">elsif</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">parts</span><span style="color: #0000FF;">)></span><span style="color: #000000;">2</span> <span style="color: #008080;">then</span> |
|||
end if |
|||
<span style="color: #000000;">h</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">2</span> |
|||
end if |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
if h then |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
street = join(parts[1..$-h]) |
|||
<span style="color: #008080;">if</span> <span style="color: #000000;">h</span> <span style="color: #008080;">then</span> |
|||
house = join(parts[$-h+1..$]) |
|||
<span style="color: #000000;">street</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #000000;">parts</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..$-</span><span style="color: #000000;">h</span><span style="color: #0000FF;">])</span> |
|||
else |
|||
<span style="color: #000000;">house</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #000000;">parts</span><span style="color: #0000FF;">[$-</span><span style="color: #000000;">h</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">..$])</span> |
|||
street = join(parts) |
|||
<span style="color: #008080;">else</span> |
|||
house = "(none)" |
|||
<span style="color: #000000;">street</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #000000;">parts</span><span style="color: #0000FF;">)</span> |
|||
end if |
|||
<span style="color: #000000;">house</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"(none)"</span> |
|||
string colour = iff(mod(i,2)=0?"#d7fffe":"#9dbcd4") |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span> |
|||
return {colour,address,street,house} |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">colour</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">iff</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">mod</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">0</span><span style="color: #0000FF;">?</span><span style="color: #008000;">"#d7fffe"</span><span style="color: #0000FF;">:</span><span style="color: #008000;">"#9dbcd4"</span><span style="color: #0000FF;">)</span> |
|||
end function |
|||
<span style="color: #008080;">return</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">colour</span><span style="color: #0000FF;">,</span><span style="color: #000000;">address</span><span style="color: #0000FF;">,</span><span style="color: #000000;">street</span><span style="color: #0000FF;">,</span><span style="color: #000000;">house</span><span style="color: #0000FF;">}</span> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span> |
|||
constant html_hdr = """ |
|||
<html> |
|||
<span style="color: #008080;">constant</span> <span style="color: #000000;">html_hdr</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">""" |
|||
<head> |
|||
<html> |
|||
<title>Rosetta Code - Start a Web Browser</title> |
|||
<head> |
|||
<meta charset="UTF-8"> |
|||
<title>Rosetta Code - Start a Web Browser</title> |
|||
</head> |
|||
<meta charset="UTF-8"> |
|||
<body bgcolor="#d8dcd6"> |
|||
</head> |
|||
<p align="center"> |
|||
<body bgcolor="#d8dcd6"> |
|||
<font face="Arial, sans-serif" size="5">Split the house number from the street name</font> |
|||
<p align="center"> |
|||
</p> |
|||
<font face="Arial, sans-serif" size="5">Split the house number from the street name</font> |
|||
<p align="center"> |
|||
</p> |
|||
<table border="2"> <tr bgcolor="#02ccfe"> |
|||
<p align="center"> |
|||
<th>Address</th><th>Street</th><th>House Number</th> |
|||
<table border="2"> <tr bgcolor="#02ccfe"> |
|||
""", |
|||
<th>Address</th><th>Street</th><th>House Number</th> |
|||
html_line = """ |
|||
"""</span><span style="color: #0000FF;">,</span> |
|||
<tr bgcolor=%s><td>%s</td><td>%s</td><td>%s</td></tr> |
|||
<span style="color: #000000;">html_line</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">""" |
|||
""", |
|||
<tr bgcolor=%s><td>%s</td><td>%s</td><td>%s</td></tr> |
|||
html_ftr = """ |
|||
"""</span><span style="color: #0000FF;">,</span> |
|||
</table> |
|||
<span style="color: #000000;">html_ftr</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">""" |
|||
</p> |
|||
</table> |
|||
</body> |
|||
</p> |
|||
</html> |
|||
</body> |
|||
""" |
|||
</html> |
|||
"""</span> |
|||
procedure main() |
|||
integer fn = open("test.html","w") |
|||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">main</span><span style="color: #0000FF;">()</span> |
|||
printf(fn,html_hdr) |
|||
<span style="color: #004080;">integer</span> <span style="color: #000000;">fn</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">open</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"test.html"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"w"</span><span style="color: #0000FF;">)</span> |
|||
for i=1 to length(addresses) do |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fn</span><span style="color: #0000FF;">,</span><span style="color: #000000;">html_hdr</span><span style="color: #0000FF;">)</span> |
|||
printf(fn,html_line,separateHouseNumber(i)) |
|||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">addresses</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span> |
|||
end for |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fn</span><span style="color: #0000FF;">,</span><span style="color: #000000;">html_line</span><span style="color: #0000FF;">,</span><span style="color: #000000;">separateHouseNumber</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">))</span> |
|||
printf(fn,html_ftr) |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span> |
|||
close(fn) |
|||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fn</span><span style="color: #0000FF;">,</span><span style="color: #000000;">html_ftr</span><span style="color: #0000FF;">)</span> |
|||
system("test.html") |
|||
<span style="color: #7060A8;">close</span><span style="color: #0000FF;">(</span><span style="color: #000000;">fn</span><span style="color: #0000FF;">)</span> |
|||
end procedure |
|||
<span style="color: #7060A8;">system</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"test.html"</span><span style="color: #0000FF;">)</span> |
|||
main()</lang> |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
<span style="color: #000000;">main</span><span style="color: #0000FF;">()</span> |
|||
<!--</lang>--> |
|||
output as perl |
output as perl |
||