t6d-mensa 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/.gitignore +5 -0
- data/LICENSE +20 -0
- data/README.rdoc +10 -0
- data/Rakefile +51 -0
- data/VERSION +1 -0
- data/bin/mensa +7 -0
- data/config/canteens.rb +5 -0
- data/fixtures/canteens.rb +4 -0
- data/fixtures/mensa-dieburg.html +132 -0
- data/fixtures/mensa-haardtring.html +128 -0
- data/fixtures/mensa-lichtwiese.html +136 -0
- data/fixtures/mensa-schofferstrase.html +132 -0
- data/fixtures/mensa-stadtmitte.html +134 -0
- data/fixtures/output.txt +71 -0
- data/lib/mensa/canteen.rb +63 -0
- data/lib/mensa/client.rb +117 -0
- data/lib/mensa/document.rb +21 -0
- data/lib/mensa/exceptions.rb +13 -0
- data/lib/mensa/fare.rb +89 -0
- data/lib/mensa.rb +18 -0
- data/mensa.gemspec +73 -0
- data/spec/mensa/canteen_spec.rb +81 -0
- data/spec/mensa/client_spec.rb +78 -0
- data/spec/mensa/document_spec.rb +31 -0
- data/spec/mensa/fare_spec.rb +114 -0
- data/spec/mensa_spec.rb +7 -0
- data/spec/spec_helper.rb +39 -0
- metadata +95 -0
@@ -0,0 +1,132 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml"
|
4
|
+
lang="de" xml:lang="de">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
7
|
+
<title>Studentenwerk Darmstadt - Mensa Sch�fferstra�e</title>
|
8
|
+
<meta name="title" content="Mensa Sch�fferstra�e" />
|
9
|
+
<meta name="author" content="Administrator" />
|
10
|
+
<meta name="description" content="Studentenwerk Darmstadt" />
|
11
|
+
<meta name="keywords" content="Studentenwerk, Darmstadt, Wohnheim, Mensa, BAf�G, Speisekarte" />
|
12
|
+
<meta name="Generator" content="Joomla! - Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved." />
|
13
|
+
<meta name="robots" content="index, follow" />
|
14
|
+
<base href="http://www.studentenwerkdarmstadt.de/" />
|
15
|
+
<link rel="shortcut icon" href="http://www.studentenwerkdarmstadt.de/images/favicon.ico" />
|
16
|
+
<script type="text/javascript" language="javascript" src="templates/stw/sizechanger.js"></script>
|
17
|
+
<link href="templates/stw_spk/css/template_css.css" rel="stylesheet" type="text/css" media="screen" />
|
18
|
+
<style type="text/css" media="screen">
|
19
|
+
#main-body {width:100%;}
|
20
|
+
#content{width:590px;}
|
21
|
+
#sidebar{width:210px;}
|
22
|
+
#sidebar-2{display:none;} </style>
|
23
|
+
</head>
|
24
|
+
<body>
|
25
|
+
|
26
|
+
|
27
|
+
<div id="wrap">
|
28
|
+
|
29
|
+
<div id="topmenu">
|
30
|
+
<ul id="mainlevel-navtop"><li><a href="http://www.studentenwerkdarmstadt.de/sitemap/" class="mainlevel-navtop" >Sitemap</a></li><li><a href="http://www.studentenwerkdarmstadt.de/component/option,com_feedback/Itemid,161/" class="mainlevel-navtop" >Kontakt</a></li></ul></div>
|
31
|
+
<div id="resize_buttons">
|
32
|
+
<script type="text/javascript">
|
33
|
+
/*<![CDATA[*/
|
34
|
+
document.write('<img src="templates/stw/images/font_inc.jpg" alt="größer" title="Vergrößern" onclick="changeFontSize(1);return false;" />\
|
35
|
+
<img src="templates/stw/images/font_dec.jpg" alt="reset" title="Zurücksetzen" onclick="revertStyles();return false;" />')
|
36
|
+
/*]]>*/
|
37
|
+
</script>
|
38
|
+
<noscript>Mangels JavaScript keine Vergrößerungsfunktionalität!</noscript>
|
39
|
+
</div><div id="header">
|
40
|
+
<a href="http://www.studentenwerkdarmstadt.de/"><img src="templates/stw/images/swlogo.jpg" alt="swlogo" /></a><br />
|
41
|
+
<map name="imap_swbereiche" id="imap_swbereiche">
|
42
|
+
<area alt="Beratung & Hilfe" title="Beratung & Hilfe" shape="rect" coords="3, 3, 30, 52" href="index.php?option=com_content&task=view&id=49&Itemid=99" />
|
43
|
+
<area alt="Wohnen" title="Wohnen" shape="rect" coords="102, 3, 129, 52" href="index.php?option=com_content&task=view&id=12&Itemid=50" />
|
44
|
+
<area alt="Über uns" title="Über uns" shape="rect" coords="200, 2, 227, 52" href="index.php?option=com_content&task=view&id=21&Itemid=96" />
|
45
|
+
<area alt="Geld" title="Geld" shape="rect" coords="303, 2, 331, 52" href="index.php?option=com_content&task=view&id=34&Itemid=78" />
|
46
|
+
<area alt="Essen & Trinken" title="Essen & Trinken" shape="rect" coords="405, 3, 432, 52" href="index.php?option=com_content&task=view&id=24&Itemid=61" />
|
47
|
+
</map>
|
48
|
+
<img src="templates/stw/images/swbereiche.jpg" alt="swbereiche" usemap="#imap_swbereiche" />
|
49
|
+
</div>
|
50
|
+
<div id="main-body">
|
51
|
+
|
52
|
+
<div id="content">
|
53
|
+
<div class="inside">
|
54
|
+
<table class="contentpaneopen">
|
55
|
+
<tr>
|
56
|
+
<td class="contentheading" width="100%">
|
57
|
+
Mensa Sch�fferstra�e </td>
|
58
|
+
</tr>
|
59
|
+
</table>
|
60
|
+
|
61
|
+
<table class="contentpaneopen">
|
62
|
+
<tr>
|
63
|
+
<td valign="top" colspan="2">
|
64
|
+
<table border="0"><tbody><tr><td><a href="stwscripts/show_image.php?abteilung=essen&bild=bio-siegel.jpg"><img class="mosimage_class" src="http://www.studentenwerkdarmstadt.de/images/stories/essen/bio-siegel_k.jpg" width="80" height="66" hspace="0" alt="Bio-Siegel" title="Bio-Siegel" border="0" /></a></td><td> </td><td><h2>Echt bio! Jeden Mittwoch<br /></h2>Unser Bio-Essen aus biozertifizierten Produkten:<br /><strong><br /></strong><strong class="color_essen">03.06.09</strong><br />2 Texas Beanburger*<br /> mit Tomatensauce** FL 2,50 €<br /> für Gäste und MitarbeiterInnen der TU Darmstadt 3,50 € <br /><br /></td></tr><tr><td valign="top"> </td><td> </td><td valign="top"><span class="color_essen"> *</span> Bio-Komponente - DE-007-Öko-Kontrollstelle <span class="color_essen"><br />**</span> Komponente aus konventionellem Anbau</td></tr></tbody></table>
|
65
|
+
</tr>
|
66
|
+
</table>
|
67
|
+
|
68
|
+
<span class="article_seperator"> </span>
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
<table class="contentpaneopen">
|
74
|
+
<tr><td class="contentheading" width="100%"><span class="color_essen">Speisekarte Sch�fferstra�e</span></td>
|
75
|
+
<td align="right" width="100%" class="buttonheading">
|
76
|
+
<a href="http://www.studentenwerkdarmstadt.de/index2.php?option=com_spk&task=schoefferstrasse&pop=1&page=0" target="_blank" onclick="window.open('http://www.studentenwerkdarmstadt.de/index2.php?option=com_spk&task=schoefferstrasse&pop=1&page=0','win2','status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no'); return false;" title="Drucken">
|
77
|
+
<img src="http://www.studentenwerkdarmstadt.de/images/M_images/printButton.png" alt="Drucken" name="Drucken" align="middle" border="0" /></a>
|
78
|
+
</td>
|
79
|
+
</tr>
|
80
|
+
</table>
|
81
|
+
|
82
|
+
<p>Änderungen behalten wir uns vor.</p>
|
83
|
+
|
84
|
+
<a href="http://www.studentenwerkdarmstadt.de/index.php?option=com_spk&task=sch�fferstra�e&view=week">Wochenansicht</a>
|
85
|
+
<br /> <br /><table border="1" class="spk_table"><tr><th></th><th class="hl_today">Donnerstag, den 28.05.2009</th></tr>
|
86
|
+
<tr><td valign="top">Mensa</td><td valign="top"><img class="spk_img" src="components/com_spk/images/gefluegelpict_k.jpg" alt="gefluegel" width="50px" />Hähnchen-Nuggets-im Knuspermantel dazu ein Kräuterdip G 1,90 �</td></tr>
|
87
|
+
<tr><td valign="top"> </td><td valign="top"><img class="spk_img" src="components/com_spk/images/schweinpict_k.jpg" alt="schwein" width="50px" />Grillbraten vom Schweinenacken mit Thymianjus S 2,00 �</td></tr>
|
88
|
+
<tr><td valign="top"> </td><td valign="top"><img class="spk_img" src="components/com_spk/images/gefluegelpict_k.jpg" alt="gefluegel" width="50px" />Wokpfanne "Hot-Asia-Style" mit Hähnchenbrust und Mie-Nudeln G 2,80 �</td></tr>
|
89
|
+
<tr><td valign="top"> </td><td valign="top"><img class="spk_img" src="components/com_spk/images/pict_k.jpg" alt="" width="50px" />Spargelwoche !!! Bitte beachten Sie unsere Aushänge ! </td></tr>
|
90
|
+
<tr><td valign="top"> </td><td valign="top"><img class="spk_img" src="components/com_spk/images/fleischlospict_k.jpg" alt="fleischlos" width="50px" />Rühreier mit Rahmspinat FL 1,20 �</td></tr>
|
91
|
+
</table><br />
|
92
|
+
<div class="legende">
|
93
|
+
(S) Schweinefleisch # (R) Rindfleisch # (K) Kalbfleisch # (L) Lammfleisch # (G) Geflügel # (F) Fisch # (FL) Fleischlos
|
94
|
+
</div>
|
95
|
+
<div class="legende">
|
96
|
+
(1) Farbstoff # (2) Konservierungsstoff # (3) Antioxidationsmittel # (4) Geschmacksverstärker # (5) geschwefelt # (6) geschwärzt # (7) gewachst # (8) Phosphat # (9) Süssungsmittel # (11) Phenylalaninquelle
|
97
|
+
</div>
|
98
|
+
<br />
|
99
|
+
<table class="contentpaneopen">
|
100
|
+
<tr><td>
|
101
|
+
</td></tr>
|
102
|
+
</table>
|
103
|
+
<div id="footer1">
|
104
|
+
I <a href="index.php?option=com_frontpage&Itemid=39" title="Home">Home</a>
|
105
|
+
I <a href="index.php?option=com_content&task=view&id=21&Itemid=96" title="Über uns"><span class="color_wir">Über uns</span></a>
|
106
|
+
I <a href="index.php?option=com_content&task=view&id=24&Itemid=61" title="Essen & Trinken"><span class="color_essen">Essen & Trinken</span></a>
|
107
|
+
I <a href="index.php?option=com_content&task=view&id=34&Itemid=78" title="Geld"><span class="color_geld">Geld</span></a>
|
108
|
+
I <a href="index.php?option=com_content&task=view&id=12&Itemid=50" title="Wohnen"><span class="color_wohnen">Wohnen</span></a>
|
109
|
+
I <a href="index.php?option=com_content&task=view&id=49&Itemid=99" title="Beratung & Hilfe"><span class="color_hilfe">Beratung & Hilfe</span></a>
|
110
|
+
I</div><div id="footer2">
|
111
|
+
<table width="100%" border="0" cellpadding="0" cellspacing="1"><tr><td nowrap="nowrap"><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/aktuelles/aktuelles-aus-dem-studentenwerk.html" class="mainlevel-navbottom2" >Aktuell</a><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/wir/adressen.html" class="mainlevel-navbottom2" >Adressen</a><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/component/option,com_feedback/Itemid,160/" class="mainlevel-navbottom2" >Kontakt</a><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/sitemap/" class="mainlevel-navbottom2" >Sitemap</a><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/wir/impressum.html" class="mainlevel-navbottom2" >Impressum</a><span class="mainlevel-navbottom2"> I </span></td></tr></table></div>
|
112
|
+
</div></div>
|
113
|
+
|
114
|
+
<div id="sidebar">
|
115
|
+
<div class="inside">
|
116
|
+
<div id="abteilungslogo">
|
117
|
+
<a href="stwscripts/show_image.php?abteilung=essen&bild=essenlogo.jpg">
|
118
|
+
<img src="templates/stw_spk/images/essenlogo_k.jpg" alt="essen logo" /></a>
|
119
|
+
</div>
|
120
|
+
<ul id="mainlevel-nav-essen"><li><a href="http://www.studentenwerkdarmstadt.de/essen/essen.html" class="mainlevel-nav-essen" >Essen</a></li><li><span class="mainlevel-nav-essen" > </span></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/speisekarten.html" class="mainlevel-nav-essen" >Speisekarten</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/mensen-und-bistros.html" class="mainlevel-nav-essen" >Mensen + Bistros</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/partyservice.html" class="mainlevel-nav-essen" >Partyservice</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/raumlichkeiten.html" class="mainlevel-nav-essen" >Festr�ume</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/verleih.html" class="mainlevel-nav-essen" >Geschirrverleih + mehr</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/werbung-in-den-mensen.html" class="mainlevel-nav-essen" >Werbung</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/faq.html" class="mainlevel-nav-essen" >FAQ</a></li></ul></div></div>
|
121
|
+
|
122
|
+
</div> <!--end of main-body-->
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
</div> <!--end of wrap-->
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
</body>
|
131
|
+
</html>
|
132
|
+
<!-- 1243545358 -->
|
@@ -0,0 +1,134 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml"
|
4
|
+
lang="de" xml:lang="de">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
7
|
+
<title>Studentenwerk Darmstadt - Mensa Stadtmitte</title>
|
8
|
+
<meta name="title" content="Mensa Stadtmitte" />
|
9
|
+
<meta name="author" content="Administrator" />
|
10
|
+
<meta name="description" content="Studentenwerk Darmstadt" />
|
11
|
+
<meta name="keywords" content="Studentenwerk, Darmstadt, Wohnheim, Mensa, BAf�G, Speisekarte" />
|
12
|
+
<meta name="Generator" content="Joomla! - Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved." />
|
13
|
+
<meta name="robots" content="index, follow" />
|
14
|
+
<base href="http://www.studentenwerkdarmstadt.de/" />
|
15
|
+
<link rel="shortcut icon" href="http://www.studentenwerkdarmstadt.de/images/favicon.ico" />
|
16
|
+
<script type="text/javascript" language="javascript" src="templates/stw/sizechanger.js"></script>
|
17
|
+
<link href="templates/stw_spk/css/template_css.css" rel="stylesheet" type="text/css" media="screen" />
|
18
|
+
<style type="text/css" media="screen">
|
19
|
+
#main-body {width:100%;}
|
20
|
+
#content{width:590px;}
|
21
|
+
#sidebar{width:210px;}
|
22
|
+
#sidebar-2{display:none;} </style>
|
23
|
+
</head>
|
24
|
+
<body>
|
25
|
+
|
26
|
+
|
27
|
+
<div id="wrap">
|
28
|
+
|
29
|
+
<div id="topmenu">
|
30
|
+
<ul id="mainlevel-navtop"><li><a href="http://www.studentenwerkdarmstadt.de/sitemap/" class="mainlevel-navtop" >Sitemap</a></li><li><a href="http://www.studentenwerkdarmstadt.de/component/option,com_feedback/Itemid,161/" class="mainlevel-navtop" >Kontakt</a></li></ul></div>
|
31
|
+
<div id="resize_buttons">
|
32
|
+
<script type="text/javascript">
|
33
|
+
/*<![CDATA[*/
|
34
|
+
document.write('<img src="templates/stw/images/font_inc.jpg" alt="größer" title="Vergrößern" onclick="changeFontSize(1);return false;" />\
|
35
|
+
<img src="templates/stw/images/font_dec.jpg" alt="reset" title="Zurücksetzen" onclick="revertStyles();return false;" />')
|
36
|
+
/*]]>*/
|
37
|
+
</script>
|
38
|
+
<noscript>Mangels JavaScript keine Vergrößerungsfunktionalität!</noscript>
|
39
|
+
</div><div id="header">
|
40
|
+
<a href="http://www.studentenwerkdarmstadt.de/"><img src="templates/stw/images/swlogo.jpg" alt="swlogo" /></a><br />
|
41
|
+
<map name="imap_swbereiche" id="imap_swbereiche">
|
42
|
+
<area alt="Beratung & Hilfe" title="Beratung & Hilfe" shape="rect" coords="3, 3, 30, 52" href="index.php?option=com_content&task=view&id=49&Itemid=99" />
|
43
|
+
<area alt="Wohnen" title="Wohnen" shape="rect" coords="102, 3, 129, 52" href="index.php?option=com_content&task=view&id=12&Itemid=50" />
|
44
|
+
<area alt="Über uns" title="Über uns" shape="rect" coords="200, 2, 227, 52" href="index.php?option=com_content&task=view&id=21&Itemid=96" />
|
45
|
+
<area alt="Geld" title="Geld" shape="rect" coords="303, 2, 331, 52" href="index.php?option=com_content&task=view&id=34&Itemid=78" />
|
46
|
+
<area alt="Essen & Trinken" title="Essen & Trinken" shape="rect" coords="405, 3, 432, 52" href="index.php?option=com_content&task=view&id=24&Itemid=61" />
|
47
|
+
</map>
|
48
|
+
<img src="templates/stw/images/swbereiche.jpg" alt="swbereiche" usemap="#imap_swbereiche" />
|
49
|
+
</div>
|
50
|
+
<div id="main-body">
|
51
|
+
|
52
|
+
<div id="content">
|
53
|
+
<div class="inside">
|
54
|
+
<table class="contentpaneopen">
|
55
|
+
<tr>
|
56
|
+
<td class="contentheading" width="100%">
|
57
|
+
Mensa Stadtmitte </td>
|
58
|
+
</tr>
|
59
|
+
</table>
|
60
|
+
|
61
|
+
<table class="contentpaneopen">
|
62
|
+
<tr>
|
63
|
+
<td valign="top" colspan="2">
|
64
|
+
<table border="0"><tbody><tr><td><a href="stwscripts/show_image.php?abteilung=essen&bild=00tubar_logo.jpg"><img class="mosimage_class" src="http://www.studentenwerkdarmstadt.de/images/stories/essen/00tubar_logo_k.jpg" width="80" height="80" hspace="0" alt="Image" title="Image" border="0" /></a><br /><br /> </td><td> </td><td><h2>TUBAR im Empfangsgebäude der TU Darmstadt</h2>Besuchen Sie unsere Kaffeebar “TUBAR”: leckere Kaffeespezialitäten und exquisite Teesorten (aus biozertifiziertem Anbau), Flavour Shot, heiße Schokolade, Chococcino, kalte Getränke (Bionade, Cola, ARIZONA Ice Tea, ...), Gebäck (Muffins, Donuts, ...)<br /> <br />Öffnungszeiten: Mo - Fr 7:30 - 20:00 Uhr<br />In der vorlesungsfreien Zeit: Mo - Fr 7:30 - 17:30 Uhr<br /><br /></td></tr><tr><td colspan="3" align="right"><h2 align="left">Bistro - Heiße exotische Suppe <br /></h2><div align="left">von 11:15 - 16:00 Uhr im Bistro für 2,10 Euro<br />Gäste und TU-MitarbeiterInnen zahlen 3,10 Euro<br /><br /><h2 align="left">Neu im Bistro -Ab dem 2. Juni Kalte Suppe </h2>Di: Kalte Gurken-Buttermilchsuppe mit gerösteten Sonnenblumenkernen<br />Mi: Kalte Erbsensuppe<br />Do: Kalte Tomaten-Orangensupper<br />Fr: Kalte Möhren-Ingwersuppe<br /></div><br /></td></tr><tr><td><a href="stwscripts/show_image.php?abteilung=essen&bild=bio-siegel.jpg"><img class="mosimage_class" src="http://www.studentenwerkdarmstadt.de/images/stories/essen/bio-siegel_k.jpg" width="80" height="66" hspace="0" alt="Bio-Siegel" title="Bio-Siegel" border="0" /></a></td><td> </td><td><h2>Echt bio! Jeden Mittwoch<br /></h2>Unser Bio-Essen aus biozertifizierten Produkten:<br /><span class="color_essen"><br /></span><strong class="color_essen">03.06.09</strong><br />2 Texas Beanburger*<br /> mit Tomatensauce** FL 2,50 €<br /> für Gäste und MitarbeiterInnen der TU Darmstadt 3,50 € <br /><br /> </td></tr><tr><td> </td><td> </td><td> <span class="color_essen">*</span> Bio-Komponente - DE-007-Öko-Kontrollstelle <span class="color_essen"><br />**</span> Komponente aus konventionellem Anbau</td></tr></tbody></table>
|
65
|
+
</tr>
|
66
|
+
</table>
|
67
|
+
|
68
|
+
<span class="article_seperator"> </span>
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
<table class="contentpaneopen">
|
74
|
+
<tr><td class="contentheading" width="100%"><span class="color_essen">Speisekarte Stadtmitte</span></td>
|
75
|
+
<td align="right" width="100%" class="buttonheading">
|
76
|
+
<a href="http://www.studentenwerkdarmstadt.de/index2.php?option=com_spk&task=stadtmitte&pop=1&page=0" target="_blank" onclick="window.open('http://www.studentenwerkdarmstadt.de/index2.php?option=com_spk&task=stadtmitte&pop=1&page=0','win2','status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no'); return false;" title="Drucken">
|
77
|
+
<img src="http://www.studentenwerkdarmstadt.de/images/M_images/printButton.png" alt="Drucken" name="Drucken" align="middle" border="0" /></a>
|
78
|
+
</td>
|
79
|
+
</tr>
|
80
|
+
</table>
|
81
|
+
|
82
|
+
<p>Änderungen behalten wir uns vor.</p>
|
83
|
+
|
84
|
+
<a href="http://www.studentenwerkdarmstadt.de/index.php?option=com_spk&task=stadtmitte&view=week">Wochenansicht</a>
|
85
|
+
<br /> <br /><table border="1" class="spk_table"><tr><th></th><th class="hl_today">Donnerstag, den 28.05.2009</th></tr>
|
86
|
+
<tr><td valign="top">Bistro</td><td valign="top"><img class="spk_img" src="components/com_spk/images/fleischlospict_k.jpg" alt="fleischlos" width="50px" />Gemüse- Maultaschen mit Tomatensauce FL 1,80 �</td></tr>
|
87
|
+
<tr><td valign="top"> </td><td valign="top"><img class="spk_img" src="components/com_spk/images/fleischlospict_k.jpg" alt="fleischlos" width="50px" />Von unserer Suppenbar! Linsen-Orangensuppe mit Baguette FL 2,10 �</td></tr>
|
88
|
+
<tr><td valign="top">Gabel</td><td valign="top"><img class="spk_img" src="components/com_spk/images/fleischlospict_k.jpg" alt="fleischlos" width="50px" />Rühreier mit Rahmspinat FL 1,20 �</td></tr>
|
89
|
+
<tr><td valign="top">Marktrest.</td><td valign="top"><img class="spk_img" src="components/com_spk/images/gefluegelpict_k.jpg" alt="gefluegel" width="50px" />Wokpfanne "Hot-Asia-Style" mit Hähnchenbrust und Mie-Nudeln G 2,80 �</td></tr>
|
90
|
+
<tr><td valign="top">Otto B.</td><td valign="top"><img class="spk_img" src="components/com_spk/images/gefluegelpict_k.jpg" alt="gefluegel" width="50px" />Hähnchen-Nuggets-im Knuspermantel dazu ein Kräuterdip G 1,90 �</td></tr>
|
91
|
+
<tr><td valign="top"> </td><td valign="top"><img class="spk_img" src="components/com_spk/images/schweinpict_k.jpg" alt="schwein" width="50px" />Grillbraten vom Schweinenacken mit Thymianjus S 2,00 �</td></tr>
|
92
|
+
<tr><td valign="top"> </td><td valign="top"><img class="spk_img" src="components/com_spk/images/pict_k.jpg" alt="" width="50px" />Spargelwoche !!! Bitte beachten Sie unsere Aushänge ! </td></tr>
|
93
|
+
</table><br />
|
94
|
+
<div class="legende">
|
95
|
+
(S) Schweinefleisch # (R) Rindfleisch # (K) Kalbfleisch # (L) Lammfleisch # (G) Geflügel # (F) Fisch # (FL) Fleischlos
|
96
|
+
</div>
|
97
|
+
<div class="legende">
|
98
|
+
(1) Farbstoff # (2) Konservierungsstoff # (3) Antioxidationsmittel # (4) Geschmacksverstärker # (5) geschwefelt # (6) geschwärzt # (7) gewachst # (8) Phosphat # (9) Süssungsmittel # (11) Phenylalaninquelle
|
99
|
+
</div>
|
100
|
+
<br />
|
101
|
+
<table class="contentpaneopen">
|
102
|
+
<tr><td>
|
103
|
+
</td></tr>
|
104
|
+
</table>
|
105
|
+
<div id="footer1">
|
106
|
+
I <a href="index.php?option=com_frontpage&Itemid=39" title="Home">Home</a>
|
107
|
+
I <a href="index.php?option=com_content&task=view&id=21&Itemid=96" title="Über uns"><span class="color_wir">Über uns</span></a>
|
108
|
+
I <a href="index.php?option=com_content&task=view&id=24&Itemid=61" title="Essen & Trinken"><span class="color_essen">Essen & Trinken</span></a>
|
109
|
+
I <a href="index.php?option=com_content&task=view&id=34&Itemid=78" title="Geld"><span class="color_geld">Geld</span></a>
|
110
|
+
I <a href="index.php?option=com_content&task=view&id=12&Itemid=50" title="Wohnen"><span class="color_wohnen">Wohnen</span></a>
|
111
|
+
I <a href="index.php?option=com_content&task=view&id=49&Itemid=99" title="Beratung & Hilfe"><span class="color_hilfe">Beratung & Hilfe</span></a>
|
112
|
+
I</div><div id="footer2">
|
113
|
+
<table width="100%" border="0" cellpadding="0" cellspacing="1"><tr><td nowrap="nowrap"><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/aktuelles/aktuelles-aus-dem-studentenwerk.html" class="mainlevel-navbottom2" >Aktuell</a><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/wir/adressen.html" class="mainlevel-navbottom2" >Adressen</a><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/component/option,com_feedback/Itemid,160/" class="mainlevel-navbottom2" >Kontakt</a><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/sitemap/" class="mainlevel-navbottom2" >Sitemap</a><span class="mainlevel-navbottom2"> I </span><a href="http://www.studentenwerkdarmstadt.de/wir/impressum.html" class="mainlevel-navbottom2" >Impressum</a><span class="mainlevel-navbottom2"> I </span></td></tr></table></div>
|
114
|
+
</div></div>
|
115
|
+
|
116
|
+
<div id="sidebar">
|
117
|
+
<div class="inside">
|
118
|
+
<div id="abteilungslogo">
|
119
|
+
<a href="stwscripts/show_image.php?abteilung=essen&bild=essenlogo.jpg">
|
120
|
+
<img src="templates/stw_spk/images/essenlogo_k.jpg" alt="essen logo" /></a>
|
121
|
+
</div>
|
122
|
+
<ul id="mainlevel-nav-essen"><li><a href="http://www.studentenwerkdarmstadt.de/essen/essen.html" class="mainlevel-nav-essen" >Essen</a></li><li><span class="mainlevel-nav-essen" > </span></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/speisekarten.html" class="mainlevel-nav-essen" >Speisekarten</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/mensen-und-bistros.html" class="mainlevel-nav-essen" >Mensen + Bistros</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/partyservice.html" class="mainlevel-nav-essen" >Partyservice</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/raumlichkeiten.html" class="mainlevel-nav-essen" >Festr�ume</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/verleih.html" class="mainlevel-nav-essen" >Geschirrverleih + mehr</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/werbung-in-den-mensen.html" class="mainlevel-nav-essen" >Werbung</a></li><li><a href="http://www.studentenwerkdarmstadt.de/essen/faq.html" class="mainlevel-nav-essen" >FAQ</a></li></ul></div></div>
|
123
|
+
|
124
|
+
</div> <!--end of main-body-->
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
</div> <!--end of wrap-->
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
</body>
|
133
|
+
</html>
|
134
|
+
<!-- 1243463548 -->
|
data/fixtures/output.txt
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
|
2
|
+
Mensa Stadtmitte 28.05.
|
3
|
+
============================================================================
|
4
|
+
|
5
|
+
Gemüse- Maultaschen mit Tomatensauce 1,80 €
|
6
|
+
|
7
|
+
--
|
8
|
+
|
9
|
+
Linsen-Orangensuppe mit Baguette 2,10 €
|
10
|
+
|
11
|
+
--
|
12
|
+
|
13
|
+
Rühreier mit Rahmspinat 1,20 €
|
14
|
+
|
15
|
+
--
|
16
|
+
|
17
|
+
Wokpfanne "Hot-Asia-Style" mit Hähnchenbrust und Mie-Nudeln 2,80 €
|
18
|
+
|
19
|
+
--
|
20
|
+
|
21
|
+
Hähnchen-Nuggets-im Knuspermantel dazu ein Kräuterdip 1,90 €
|
22
|
+
|
23
|
+
--
|
24
|
+
|
25
|
+
Grillbraten vom Schweinenacken mit Thymianjus 2,00 €
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
Mensa Haardtring 01.06.
|
30
|
+
============================================================================
|
31
|
+
|
32
|
+
geschlossen
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
Mensa Lichtwiese 29.05.
|
37
|
+
============================================================================
|
38
|
+
|
39
|
+
Vier Kartoffelpuffer mit Apfelmus und eine Beilage nach Wahl 2,10 €
|
40
|
+
|
41
|
+
--
|
42
|
+
|
43
|
+
Balkanröllchen mit Knoblauchdip dazu Pommes frites und eine 2,50 €
|
44
|
+
Beilage nach Wahl
|
45
|
+
|
46
|
+
--
|
47
|
+
|
48
|
+
Hähnchenbrust Hawaii mit Ananas und Käse überbacken und 2,90 €
|
49
|
+
Pommes frites dazu eine Beilage nach Wahl
|
50
|
+
|
51
|
+
--
|
52
|
+
|
53
|
+
Schweineschnitzel mit Champignonrahmsauce dazu Pommes frites 3,50 €
|
54
|
+
und eine Beilage nach Wahl
|
55
|
+
|
56
|
+
--
|
57
|
+
|
58
|
+
Seelachsfilet paniert mit Sauce Tatar 1,50 €
|
59
|
+
|
60
|
+
--
|
61
|
+
|
62
|
+
Pasta Bolognese 1,60 €
|
63
|
+
|
64
|
+
--
|
65
|
+
|
66
|
+
Wokpfanne "Thai 7 Spice" mit Putenbrust und Basmatireis 2,80 €
|
67
|
+
|
68
|
+
--
|
69
|
+
|
70
|
+
Country Kartoffeln mit Quark 1,10 €
|
71
|
+
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Mensa
|
4
|
+
class Canteen
|
5
|
+
attr_reader :document
|
6
|
+
|
7
|
+
def initialize(uri)
|
8
|
+
@document = Nokogiri::HTML(Document.new(uri).to_s)
|
9
|
+
end
|
10
|
+
|
11
|
+
def fares
|
12
|
+
if @fares.nil?
|
13
|
+
@fares = []
|
14
|
+
|
15
|
+
strings = document.css('table.spk_table tr td:last-child').map { |node| node.text.strip }
|
16
|
+
strings.each do |string|
|
17
|
+
if (match = /(.+?)\s+([A-Z]{1,2})\s+(\d{1,2}\,\d{2})/.match(string))
|
18
|
+
fare, type, price = match[1..3]
|
19
|
+
|
20
|
+
fare = fare.sub('Von unserer Suppenbar!', '').strip
|
21
|
+
|
22
|
+
# remove additives
|
23
|
+
fare = fare.gsub(/\s*\((\d(,\d)*)\)\s*/, ' ')
|
24
|
+
|
25
|
+
# substitute multiple spaces with one space
|
26
|
+
fare = fare.gsub(/\s{2,}/, ' ')
|
27
|
+
|
28
|
+
@fares << Fare.new(fare, type, price)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
@fares
|
34
|
+
end
|
35
|
+
|
36
|
+
def opened?
|
37
|
+
!fares.empty?
|
38
|
+
end
|
39
|
+
|
40
|
+
def closed?
|
41
|
+
fares.empty?
|
42
|
+
end
|
43
|
+
|
44
|
+
def date
|
45
|
+
string = document.css('.spk_table th:last-child').first.text.strip
|
46
|
+
|
47
|
+
if date = /(\d{2})\.(\d{2})\.(\d{4})/.match(string)[1..3].reverse
|
48
|
+
return Time.local(*(date.map { |e| e.to_i }))
|
49
|
+
end
|
50
|
+
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
|
54
|
+
def name
|
55
|
+
document.css('.contentheading').first.text.strip
|
56
|
+
end
|
57
|
+
|
58
|
+
def ==(other)
|
59
|
+
self.name == other.name && self.date == other.date &&
|
60
|
+
self.closed? == other.closed? && self.opened? == other.opened?
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/mensa/client.rb
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Mensa
|
4
|
+
|
5
|
+
class Client
|
6
|
+
|
7
|
+
attr_reader :canteens
|
8
|
+
|
9
|
+
def initialize(stdout)
|
10
|
+
@stdout = stdout
|
11
|
+
@canteens = []
|
12
|
+
|
13
|
+
if File.exist?("#{ENV['HOME']}/.mensarc")
|
14
|
+
load("#{ENV['HOME']}/.mensarc")
|
15
|
+
|
16
|
+
elsif File.exist?(File.join(MENSA_DIR, 'config/canteens.rb'))
|
17
|
+
load(File.join(MENSA_DIR, 'config/canteens.rb'))
|
18
|
+
|
19
|
+
else
|
20
|
+
raise RuntimeError,
|
21
|
+
"No configuration found. Expected global configration in\n" <<
|
22
|
+
"#{File.join(MENSA_DIR, 'config/canteens.rb')}",
|
23
|
+
caller
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def run
|
29
|
+
to_s.lines.each_with_index do |line, index|
|
30
|
+
stdout.write(line)
|
31
|
+
end
|
32
|
+
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
|
36
|
+
def to_s
|
37
|
+
result = ''
|
38
|
+
|
39
|
+
canteens.each do |canteen|
|
40
|
+
result += print_header(canteen)
|
41
|
+
|
42
|
+
if canteen.opened?
|
43
|
+
result += canteen.fares.map { |f| print_fare(f) }.join(print_seperator)
|
44
|
+
else
|
45
|
+
result += print_state_closed
|
46
|
+
end
|
47
|
+
|
48
|
+
result += print_footer
|
49
|
+
end
|
50
|
+
|
51
|
+
result
|
52
|
+
end
|
53
|
+
|
54
|
+
protected
|
55
|
+
|
56
|
+
attr_reader :stdout
|
57
|
+
|
58
|
+
def load(filename)
|
59
|
+
code = File.read(filename)
|
60
|
+
instance_eval(code)
|
61
|
+
end
|
62
|
+
|
63
|
+
def canteen(uri)
|
64
|
+
canteens << Canteen.new(uri)
|
65
|
+
end
|
66
|
+
|
67
|
+
def print_header(canteen)
|
68
|
+
result = "\n"
|
69
|
+
result += " "
|
70
|
+
result += canteen.name.ljust(70)
|
71
|
+
result += canteen.date.strftime('%d.%m.')
|
72
|
+
result += "\n"
|
73
|
+
result += " "
|
74
|
+
result += "=" * 76
|
75
|
+
result += "\n" * 2
|
76
|
+
end
|
77
|
+
|
78
|
+
def print_fare(fare)
|
79
|
+
lines = []
|
80
|
+
lines << ' '
|
81
|
+
|
82
|
+
fare.name.split(' ').each do |word|
|
83
|
+
if (lines.last.length + word.length) < 64
|
84
|
+
lines.push(lines.pop + ' ' + word)
|
85
|
+
else
|
86
|
+
lines << " #{word}"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
result = lines.shift.ljust(70)
|
91
|
+
result += "%1d,%02d €" % [fare.price / 100, fare.price % 100]
|
92
|
+
result += "\n"
|
93
|
+
|
94
|
+
unless lines.empty?
|
95
|
+
result += lines.join("\n")
|
96
|
+
result += "\n"
|
97
|
+
end
|
98
|
+
|
99
|
+
result
|
100
|
+
end
|
101
|
+
|
102
|
+
def print_seperator
|
103
|
+
result = "\n"
|
104
|
+
result += "--".center(80)
|
105
|
+
result += "\n"
|
106
|
+
result += "\n"
|
107
|
+
end
|
108
|
+
|
109
|
+
def print_state_closed
|
110
|
+
"geschlossen".center(80) + "\n"
|
111
|
+
end
|
112
|
+
|
113
|
+
def print_footer
|
114
|
+
"\n" * 2
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
module Mensa
|
4
|
+
class Document
|
5
|
+
attr_accessor :uri
|
6
|
+
|
7
|
+
def initialize(uri)
|
8
|
+
@uri = URI.parse(uri)
|
9
|
+
@content = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_s
|
13
|
+
if @content.nil?
|
14
|
+
@content = Iconv.iconv('UTF-8', 'ISO-8859-1', Net::HTTP.get(uri)).first
|
15
|
+
@content.sub!(/[Ii][Ss][Oo]-8859-1/, 'utf-8')
|
16
|
+
end
|
17
|
+
|
18
|
+
@content
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Mensa
|
2
|
+
class MensaError < RuntimeError; end
|
3
|
+
|
4
|
+
class FareError < MensaError; end
|
5
|
+
|
6
|
+
class NameTooLongError < FareError; end
|
7
|
+
|
8
|
+
class TypeUnknownError < FareError; end
|
9
|
+
|
10
|
+
class PriceStringInvalid < FareError; end
|
11
|
+
|
12
|
+
class NameEmptyError < FareError; end
|
13
|
+
end
|