openmenu 0.1.6 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +2 -0
- data/Rakefile +5 -0
- data/lib/open_menu.rb +17 -5
- data/test/sample15.xml +293 -0
- data/test/sample16.xml +293 -0
- data/test/test_openmenu.rb +356 -8
- metadata +45 -10
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'hoe'
|
5
5
|
|
6
|
+
Hoe.plugin :isolate
|
6
7
|
Hoe.plugin :git
|
7
8
|
Hoe.plugin :minitest
|
8
9
|
|
@@ -10,6 +11,10 @@ Hoe.spec 'openmenu' do
|
|
10
11
|
developer('Matt Smith', 'matts@nearapogee.com')
|
11
12
|
dependency('nokogiri-happymapper', '~>0.3.6')
|
12
13
|
|
14
|
+
dependency('isolate', '~>3.2.1', :dev)
|
15
|
+
dependency('hoe-git', '~>1.4.1', :dev)
|
16
|
+
|
17
|
+
|
13
18
|
# self.rubyforge_name = 'openmenux' # if different than 'openmenu'
|
14
19
|
end
|
15
20
|
|
data/lib/open_menu.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
class OpenMenu
|
2
|
-
VERSION = '0.
|
2
|
+
VERSION = '0.2.0'
|
3
3
|
include HappyMapper
|
4
4
|
tag 'omf'
|
5
5
|
|
6
6
|
attribute :uuid, String
|
7
7
|
attribute :date_created, String
|
8
8
|
attribute :accuracy, Integer
|
9
|
+
attribute :private, String
|
10
|
+
|
11
|
+
# Public: Test if this OpenMenu is private
|
12
|
+
#
|
13
|
+
# Returns true if private.
|
14
|
+
def private?
|
15
|
+
private == 'private'
|
16
|
+
end
|
9
17
|
|
10
18
|
element :version, Float, :deep => true
|
11
19
|
|
@@ -14,6 +22,7 @@ class OpenMenu
|
|
14
22
|
element :full_description, String, :deep => true
|
15
23
|
element :business_type, String, :deep => true
|
16
24
|
element :location_id, String, :deep => true
|
25
|
+
element :mobile, Integer, :deep => true
|
17
26
|
element :longitude, String, :deep => true
|
18
27
|
element :latitude, String, :deep => true
|
19
28
|
element :utc_offset, Float, :deep => true
|
@@ -175,14 +184,16 @@ class OpenMenu
|
|
175
184
|
tag 'menu'
|
176
185
|
|
177
186
|
attribute :name, String
|
178
|
-
attribute :uid,
|
187
|
+
attribute :uid, String
|
179
188
|
attribute :currency, String, :tag => 'currency_symbol'
|
189
|
+
attribute :language, String
|
180
190
|
attribute :disabled, String
|
181
191
|
def disabled?
|
182
192
|
disabled == 'disabled'
|
183
193
|
end
|
184
194
|
|
185
195
|
element :description, String, :tag => "menu_description"
|
196
|
+
element :note, String, :tag => "menu_note"
|
186
197
|
|
187
198
|
class Duration
|
188
199
|
include HappyMapper
|
@@ -199,13 +210,14 @@ class OpenMenu
|
|
199
210
|
tag 'menu_group'
|
200
211
|
|
201
212
|
attribute :name, String
|
202
|
-
attribute :uid,
|
213
|
+
attribute :uid, String
|
203
214
|
attribute :disabled, String
|
204
215
|
def disabled?
|
205
216
|
disabled == 'disabled'
|
206
217
|
end
|
207
218
|
|
208
219
|
element :description, String, :tag => 'menu_group_description'
|
220
|
+
element :note, String, :tag => "menu_group_note"
|
209
221
|
|
210
222
|
class Option
|
211
223
|
include HappyMapper
|
@@ -233,8 +245,8 @@ class OpenMenu
|
|
233
245
|
include HappyMapper
|
234
246
|
tag 'menu_item'
|
235
247
|
|
236
|
-
attribute :uid,
|
237
|
-
%w(disabled special vegetarian vegan kosher halal).each do |attr|
|
248
|
+
attribute :uid, String
|
249
|
+
%w(disabled special vegetarian vegan kosher halal gluten_free).each do |attr|
|
238
250
|
attribute attr.to_s, String
|
239
251
|
define_method("#{attr}?".to_s) { self.send(attr) == attr }
|
240
252
|
end
|
data/test/sample15.xml
ADDED
@@ -0,0 +1,293 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" ?>
|
2
|
+
<omf uuid="sample" date_created="2011-08-19" accuracy="1">
|
3
|
+
<openmenu>
|
4
|
+
<version>1.5</version>
|
5
|
+
<crosswalks>
|
6
|
+
</crosswalks>
|
7
|
+
</openmenu>
|
8
|
+
<restaurant_info>
|
9
|
+
<restaurant_name>My Restaurant</restaurant_name>
|
10
|
+
<business_type>independent</business_type>
|
11
|
+
<brief_description>Sample restaurant in the OpenMenu Format standard</brief_description>
|
12
|
+
<full_description>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum ac libero neque, quis laoreet dolor. Proin vitae erat lacus.
|
13
|
+
|
14
|
+
Aliquam sed lectus ligula, sed pharetra tortor. Nam rutrum ipsum ut quam vestibulum vestibulum. Ut posuere rhoncus quam, id semper ligula bibendum quis. Vestibulum accumsan, neque id tristique accumsan, risus diam vehicula massa, at facilisis ligula tortor et elit. Nulla facilisi. Mauris ultrices volutpat lorem eu convallis. </full_description>
|
15
|
+
<location_id>x123z</location_id>
|
16
|
+
<longitude>-81.039833</longitude>
|
17
|
+
<latitude>33.999458</latitude>
|
18
|
+
<utc_offset>-5.00</utc_offset>
|
19
|
+
<address_1>803 Gervais Street</address_1>
|
20
|
+
<address_2></address_2>
|
21
|
+
<city_town>Columbia</city_town>
|
22
|
+
<state_province>SC</state_province>
|
23
|
+
<postal_code>29202</postal_code>
|
24
|
+
<country>US</country>
|
25
|
+
<region_area></region_area>
|
26
|
+
<phone>(555) 555-5555</phone>
|
27
|
+
<fax>(555) 888-8888</fax>
|
28
|
+
<website_url>http://openmenu.com/</website_url>
|
29
|
+
<omf_file_url>http://openmenu.com/menu/sample</omf_file_url>
|
30
|
+
<logo_urls>
|
31
|
+
<logo_url type="Thumbnail" media="All">http://openmenu.com/images/ico-32-openmenu.png</logo_url>
|
32
|
+
<logo_url type="Full" media="All">http://openmenu.com/images/sample_logo_full.png</logo_url>
|
33
|
+
</logo_urls>
|
34
|
+
<environment>
|
35
|
+
<seating_qty></seating_qty>
|
36
|
+
<max_group_size>12</max_group_size>
|
37
|
+
<age_level_preference></age_level_preference>
|
38
|
+
<smoking_allowed>0</smoking_allowed>
|
39
|
+
<takeout_available>1</takeout_available>
|
40
|
+
<delivery_available radius="" fee=""></delivery_available>
|
41
|
+
<catering_available></catering_available>
|
42
|
+
<reservations></reservations>
|
43
|
+
<alcohol_type></alcohol_type>
|
44
|
+
<music_type></music_type>
|
45
|
+
<pets_allowed>0</pets_allowed>
|
46
|
+
<wheelchair_accessible></wheelchair_accessible>
|
47
|
+
<dress_code>casual</dress_code>
|
48
|
+
<cuisine_type_primary>Steakhouse</cuisine_type_primary>
|
49
|
+
<cuisine_type_secondary></cuisine_type_secondary>
|
50
|
+
<seating_locations>
|
51
|
+
<seating_location>outdoor</seating_location>
|
52
|
+
<seating_location>indoor</seating_location>
|
53
|
+
</seating_locations>
|
54
|
+
<accepted_currencies>
|
55
|
+
<accepted_currency>USD</accepted_currency>
|
56
|
+
</accepted_currencies>
|
57
|
+
<online_reservations>
|
58
|
+
</online_reservations>
|
59
|
+
<online_ordering>
|
60
|
+
</online_ordering>
|
61
|
+
<operating_days>
|
62
|
+
<operating_day>
|
63
|
+
<day_of_week>1</day_of_week>
|
64
|
+
<open_time>11:00</open_time>
|
65
|
+
<close_time>22:00</close_time>
|
66
|
+
</operating_day>
|
67
|
+
<operating_day>
|
68
|
+
<day_of_week>2</day_of_week>
|
69
|
+
<open_time>11:00</open_time>
|
70
|
+
<close_time>22:00</close_time>
|
71
|
+
</operating_day>
|
72
|
+
<operating_day>
|
73
|
+
<day_of_week>3</day_of_week>
|
74
|
+
<open_time>11:00</open_time>
|
75
|
+
<close_time>22:00</close_time>
|
76
|
+
</operating_day>
|
77
|
+
<operating_day>
|
78
|
+
<day_of_week>4</day_of_week>
|
79
|
+
<open_time>11:00</open_time>
|
80
|
+
<close_time>22:00</close_time>
|
81
|
+
</operating_day>
|
82
|
+
<operating_day>
|
83
|
+
<day_of_week>5</day_of_week>
|
84
|
+
<open_time>11:00</open_time>
|
85
|
+
<close_time>22:00</close_time>
|
86
|
+
</operating_day>
|
87
|
+
<operating_day>
|
88
|
+
<day_of_week>6</day_of_week>
|
89
|
+
<open_time>11:00</open_time>
|
90
|
+
<close_time>22:00</close_time>
|
91
|
+
</operating_day>
|
92
|
+
<operating_day>
|
93
|
+
<day_of_week>7</day_of_week>
|
94
|
+
<open_time></open_time>
|
95
|
+
<close_time></close_time>
|
96
|
+
</operating_day>
|
97
|
+
</operating_days>
|
98
|
+
<parking></parking>
|
99
|
+
</environment>
|
100
|
+
<contacts>
|
101
|
+
<contact type="primary">
|
102
|
+
<first_name>Chris</first_name>
|
103
|
+
<last_name>Hanscom</last_name>
|
104
|
+
<email>menu@openmenu.com</email>
|
105
|
+
</contact>
|
106
|
+
</contacts>
|
107
|
+
<parent_company>
|
108
|
+
<parent_company_name></parent_company_name>
|
109
|
+
<parent_company_website></parent_company_website>
|
110
|
+
<address_1></address_1>
|
111
|
+
<address_2></address_2>
|
112
|
+
<city_town></city_town>
|
113
|
+
<state_province></state_province>
|
114
|
+
<postal_code></postal_code>
|
115
|
+
<country></country>
|
116
|
+
<phone></phone>
|
117
|
+
<fax></fax>
|
118
|
+
</parent_company>
|
119
|
+
</restaurant_info>
|
120
|
+
<menus>
|
121
|
+
<menu name="Main Menu" currency_symbol="USD" uid="25">
|
122
|
+
<menu_description></menu_description>
|
123
|
+
<menu_duration>
|
124
|
+
<menu_duration_name>lunch-dinner</menu_duration_name>
|
125
|
+
<menu_duration_time_start>11:00</menu_duration_time_start>
|
126
|
+
<menu_duration_time_end>22:00</menu_duration_time_end>
|
127
|
+
</menu_duration>
|
128
|
+
<menu_groups>
|
129
|
+
<menu_group name="Appetizers" uid="2">
|
130
|
+
<menu_group_description></menu_group_description>
|
131
|
+
<menu_items>
|
132
|
+
<menu_item>
|
133
|
+
<menu_item_name>Coconut Shrimp</menu_item_name>
|
134
|
+
<menu_item_description>Crispy Coconut Shrimp & tangy mango lime sauce</menu_item_description>
|
135
|
+
<menu_item_price>7.95</menu_item_price>
|
136
|
+
<menu_item_calories>350</menu_item_calories>
|
137
|
+
<menu_item_image_urls>
|
138
|
+
<menu_item_image_url width="" height="" type="Thumbnail" media="Web">http://openmenu.com/images/coconut_shrimp.jpg</menu_item_image_url>
|
139
|
+
</menu_item_image_urls>
|
140
|
+
</menu_item>
|
141
|
+
<menu_item>
|
142
|
+
<menu_item_name>Tempura Onion Rings</menu_item_name>
|
143
|
+
<menu_item_description>With a honey Thai sauce</menu_item_description>
|
144
|
+
<menu_item_price>7.95</menu_item_price>
|
145
|
+
<menu_item_heat_index>1</menu_item_heat_index>
|
146
|
+
</menu_item>
|
147
|
+
<menu_item special="special">
|
148
|
+
<menu_item_name>Calamari</menu_item_name>
|
149
|
+
<menu_item_description>Our calamari is lightly fried and tossed with a sweet and spicy Asian mango sauce.</menu_item_description>
|
150
|
+
<menu_item_price></menu_item_price>
|
151
|
+
<menu_item_heat_index>2</menu_item_heat_index>
|
152
|
+
<menu_item_sizes>
|
153
|
+
<menu_item_size>
|
154
|
+
<menu_item_size_name>small</menu_item_size_name>
|
155
|
+
<menu_item_size_description></menu_item_size_description>
|
156
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
157
|
+
</menu_item_size>
|
158
|
+
<menu_item_size>
|
159
|
+
<menu_item_size_name>large</menu_item_size_name>
|
160
|
+
<menu_item_size_description></menu_item_size_description>
|
161
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
162
|
+
</menu_item_size>
|
163
|
+
</menu_item_sizes>
|
164
|
+
</menu_item>
|
165
|
+
</menu_items>
|
166
|
+
</menu_group>
|
167
|
+
<menu_group name="Salads" uid="3">
|
168
|
+
<menu_group_description></menu_group_description>
|
169
|
+
<menu_group_options>
|
170
|
+
<menu_group_option name="Dressings">
|
171
|
+
<menu_group_option_information></menu_group_option_information>
|
172
|
+
<menu_group_option_item>
|
173
|
+
<menu_group_option_name>Italian</menu_group_option_name>
|
174
|
+
<menu_group_option_additional_cost>1.00</menu_group_option_additional_cost>
|
175
|
+
</menu_group_option_item>
|
176
|
+
<menu_group_option_item>
|
177
|
+
<menu_group_option_name>French</menu_group_option_name>
|
178
|
+
<menu_group_option_additional_cost>1.25</menu_group_option_additional_cost>
|
179
|
+
</menu_group_option_item>
|
180
|
+
<menu_group_option_item>
|
181
|
+
<menu_group_option_name>Thousand Island</menu_group_option_name>
|
182
|
+
<menu_group_option_additional_cost>1.00</menu_group_option_additional_cost>
|
183
|
+
</menu_group_option_item>
|
184
|
+
</menu_group_option>
|
185
|
+
</menu_group_options>
|
186
|
+
<menu_items>
|
187
|
+
<menu_item>
|
188
|
+
<menu_item_name>Chef Salad</menu_item_name>
|
189
|
+
<menu_item_description>Best chef salad in a 20 mile radius</menu_item_description>
|
190
|
+
<menu_item_price></menu_item_price>
|
191
|
+
<menu_item_sizes>
|
192
|
+
<menu_item_size>
|
193
|
+
<menu_item_size_name>half</menu_item_size_name>
|
194
|
+
<menu_item_size_description></menu_item_size_description>
|
195
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
196
|
+
</menu_item_size>
|
197
|
+
<menu_item_size>
|
198
|
+
<menu_item_size_name>full</menu_item_size_name>
|
199
|
+
<menu_item_size_description></menu_item_size_description>
|
200
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
201
|
+
</menu_item_size>
|
202
|
+
</menu_item_sizes>
|
203
|
+
</menu_item>
|
204
|
+
<menu_item special="special">
|
205
|
+
<menu_item_name>Cobb Salad</menu_item_name>
|
206
|
+
<menu_item_description>Iceberg lettuce topped with turkey, ham, hard cooked eggs, avocado, diced tomatoes, bacon, bleu cheese crumbles and black olives</menu_item_description>
|
207
|
+
<menu_item_price></menu_item_price>
|
208
|
+
<menu_item_sizes>
|
209
|
+
<menu_item_size>
|
210
|
+
<menu_item_size_name>half</menu_item_size_name>
|
211
|
+
<menu_item_size_description></menu_item_size_description>
|
212
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
213
|
+
</menu_item_size>
|
214
|
+
<menu_item_size>
|
215
|
+
<menu_item_size_name>full</menu_item_size_name>
|
216
|
+
<menu_item_size_description></menu_item_size_description>
|
217
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
218
|
+
</menu_item_size>
|
219
|
+
</menu_item_sizes>
|
220
|
+
</menu_item>
|
221
|
+
<menu_item>
|
222
|
+
<menu_item_name>Ceasar Salad</menu_item_name>
|
223
|
+
<menu_item_description>Fresh romain lettuce with aged parmesan reggiano</menu_item_description>
|
224
|
+
<menu_item_price>9.95</menu_item_price>
|
225
|
+
</menu_item>
|
226
|
+
<menu_item vegetarian="vegetarian">
|
227
|
+
<menu_item_name>Garden Salad</menu_item_name>
|
228
|
+
<menu_item_description>Filled with lettuce, tomatoes, carrots, radishes, cucumbers and shredded cheese</menu_item_description>
|
229
|
+
<menu_item_price>8.95</menu_item_price>
|
230
|
+
</menu_item>
|
231
|
+
</menu_items>
|
232
|
+
</menu_group>
|
233
|
+
<menu_group name="Entrees" uid="1">
|
234
|
+
<menu_group_description></menu_group_description>
|
235
|
+
<menu_items>
|
236
|
+
<menu_item uid="1">
|
237
|
+
<menu_item_name>Rack of Lamb</menu_item_name>
|
238
|
+
<menu_item_description>Coffee Citrus Crusted Lamb </menu_item_description>
|
239
|
+
<menu_item_price>22.95</menu_item_price>
|
240
|
+
</menu_item>
|
241
|
+
<menu_item uid="2">
|
242
|
+
<menu_item_name>Soft Shell Crabs</menu_item_name>
|
243
|
+
<menu_item_description>Almond encrusted, seasoned and sauteed in butter to a crispy brown</menu_item_description>
|
244
|
+
<menu_item_price>19.95</menu_item_price>
|
245
|
+
<menu_item_allergy_information allergens="shellfish, nuts">Reference allergens for allergy information</menu_item_allergy_information>
|
246
|
+
</menu_item>
|
247
|
+
<menu_item uid="3" special="special">
|
248
|
+
<menu_item_name>Cioppino</menu_item_name>
|
249
|
+
<menu_item_description>Fresh fish, scallops, mussels, calamari, and shrimp in a tomato-garlic saffron broth over linguini</menu_item_description>
|
250
|
+
<menu_item_price>24.95</menu_item_price>
|
251
|
+
</menu_item>
|
252
|
+
</menu_items>
|
253
|
+
</menu_group>
|
254
|
+
</menu_groups>
|
255
|
+
</menu>
|
256
|
+
<menu name="Late Night Menu" currency_symbol="USD" uid="35">
|
257
|
+
<menu_description></menu_description>
|
258
|
+
<menu_duration>
|
259
|
+
<menu_duration_name>late-night</menu_duration_name>
|
260
|
+
<menu_duration_time_start>20:00</menu_duration_time_start>
|
261
|
+
<menu_duration_time_end>23:00</menu_duration_time_end>
|
262
|
+
</menu_duration>
|
263
|
+
<menu_groups>
|
264
|
+
<menu_group name="Bar Food" uid="1">
|
265
|
+
<menu_group_description></menu_group_description>
|
266
|
+
<menu_items>
|
267
|
+
<menu_item>
|
268
|
+
<menu_item_name>Cheese Sticks</menu_item_name>
|
269
|
+
<menu_item_description>Cheese sticks with marinara sauce</menu_item_description>
|
270
|
+
<menu_item_price>6.95</menu_item_price>
|
271
|
+
</menu_item>
|
272
|
+
<menu_item>
|
273
|
+
<menu_item_name>Coconut Shrimp</menu_item_name>
|
274
|
+
<menu_item_description>Crispy Coconut Shrimp</menu_item_description>
|
275
|
+
<menu_item_price>7.95</menu_item_price>
|
276
|
+
<menu_item_calories>350</menu_item_calories>
|
277
|
+
</menu_item>
|
278
|
+
<menu_item>
|
279
|
+
<menu_item_name>Tempura Onion Rings</menu_item_name>
|
280
|
+
<menu_item_description>With a honey Thai sauce</menu_item_description>
|
281
|
+
<menu_item_price>7.95</menu_item_price>
|
282
|
+
</menu_item>
|
283
|
+
<menu_item>
|
284
|
+
<menu_item_name>Calamari</menu_item_name>
|
285
|
+
<menu_item_description>Our calamari is lightly fried and tossed with a sweet and spicy Asian mango sauce.</menu_item_description>
|
286
|
+
<menu_item_price>8.85</menu_item_price>
|
287
|
+
</menu_item>
|
288
|
+
</menu_items>
|
289
|
+
</menu_group>
|
290
|
+
</menu_groups>
|
291
|
+
</menu>
|
292
|
+
</menus>
|
293
|
+
</omf>
|
data/test/sample16.xml
ADDED
@@ -0,0 +1,293 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" ?>
|
2
|
+
<omf uuid="sample" date_created="2011-08-19" accuracy="1">
|
3
|
+
<openmenu>
|
4
|
+
<version>1.5</version>
|
5
|
+
<crosswalks>
|
6
|
+
</crosswalks>
|
7
|
+
</openmenu>
|
8
|
+
<restaurant_info>
|
9
|
+
<restaurant_name>My Restaurant</restaurant_name>
|
10
|
+
<business_type>independent</business_type>
|
11
|
+
<brief_description>Sample restaurant in the OpenMenu Format standard</brief_description>
|
12
|
+
<full_description>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum ac libero neque, quis laoreet dolor. Proin vitae erat lacus.
|
13
|
+
|
14
|
+
Aliquam sed lectus ligula, sed pharetra tortor. Nam rutrum ipsum ut quam vestibulum vestibulum. Ut posuere rhoncus quam, id semper ligula bibendum quis. Vestibulum accumsan, neque id tristique accumsan, risus diam vehicula massa, at facilisis ligula tortor et elit. Nulla facilisi. Mauris ultrices volutpat lorem eu convallis. </full_description>
|
15
|
+
<location_id>x123z</location_id>
|
16
|
+
<longitude>-81.039833</longitude>
|
17
|
+
<latitude>33.999458</latitude>
|
18
|
+
<utc_offset>-5.00</utc_offset>
|
19
|
+
<address_1>803 Gervais Street</address_1>
|
20
|
+
<address_2></address_2>
|
21
|
+
<city_town>Columbia</city_town>
|
22
|
+
<state_province>SC</state_province>
|
23
|
+
<postal_code>29202</postal_code>
|
24
|
+
<country>US</country>
|
25
|
+
<region_area></region_area>
|
26
|
+
<phone>(555) 555-5555</phone>
|
27
|
+
<fax>(555) 888-8888</fax>
|
28
|
+
<website_url>http://openmenu.com/</website_url>
|
29
|
+
<omf_file_url>http://openmenu.com/menu/sample</omf_file_url>
|
30
|
+
<logo_urls>
|
31
|
+
<logo_url type="Thumbnail" media="All">http://openmenu.com/images/ico-32-openmenu.png</logo_url>
|
32
|
+
<logo_url type="Full" media="All">http://openmenu.com/images/sample_logo_full.png</logo_url>
|
33
|
+
</logo_urls>
|
34
|
+
<environment>
|
35
|
+
<seating_qty></seating_qty>
|
36
|
+
<max_group_size>12</max_group_size>
|
37
|
+
<age_level_preference></age_level_preference>
|
38
|
+
<smoking_allowed>0</smoking_allowed>
|
39
|
+
<takeout_available>1</takeout_available>
|
40
|
+
<delivery_available radius="" fee=""></delivery_available>
|
41
|
+
<catering_available></catering_available>
|
42
|
+
<reservations></reservations>
|
43
|
+
<alcohol_type></alcohol_type>
|
44
|
+
<music_type></music_type>
|
45
|
+
<pets_allowed>0</pets_allowed>
|
46
|
+
<wheelchair_accessible></wheelchair_accessible>
|
47
|
+
<dress_code>casual</dress_code>
|
48
|
+
<cuisine_type_primary>Steakhouse</cuisine_type_primary>
|
49
|
+
<cuisine_type_secondary></cuisine_type_secondary>
|
50
|
+
<seating_locations>
|
51
|
+
<seating_location>outdoor</seating_location>
|
52
|
+
<seating_location>indoor</seating_location>
|
53
|
+
</seating_locations>
|
54
|
+
<accepted_currencies>
|
55
|
+
<accepted_currency>USD</accepted_currency>
|
56
|
+
</accepted_currencies>
|
57
|
+
<online_reservations>
|
58
|
+
</online_reservations>
|
59
|
+
<online_ordering>
|
60
|
+
</online_ordering>
|
61
|
+
<operating_days>
|
62
|
+
<operating_day>
|
63
|
+
<day_of_week>1</day_of_week>
|
64
|
+
<open_time>11:00</open_time>
|
65
|
+
<close_time>22:00</close_time>
|
66
|
+
</operating_day>
|
67
|
+
<operating_day>
|
68
|
+
<day_of_week>2</day_of_week>
|
69
|
+
<open_time>11:00</open_time>
|
70
|
+
<close_time>22:00</close_time>
|
71
|
+
</operating_day>
|
72
|
+
<operating_day>
|
73
|
+
<day_of_week>3</day_of_week>
|
74
|
+
<open_time>11:00</open_time>
|
75
|
+
<close_time>22:00</close_time>
|
76
|
+
</operating_day>
|
77
|
+
<operating_day>
|
78
|
+
<day_of_week>4</day_of_week>
|
79
|
+
<open_time>11:00</open_time>
|
80
|
+
<close_time>22:00</close_time>
|
81
|
+
</operating_day>
|
82
|
+
<operating_day>
|
83
|
+
<day_of_week>5</day_of_week>
|
84
|
+
<open_time>11:00</open_time>
|
85
|
+
<close_time>22:00</close_time>
|
86
|
+
</operating_day>
|
87
|
+
<operating_day>
|
88
|
+
<day_of_week>6</day_of_week>
|
89
|
+
<open_time>11:00</open_time>
|
90
|
+
<close_time>22:00</close_time>
|
91
|
+
</operating_day>
|
92
|
+
<operating_day>
|
93
|
+
<day_of_week>7</day_of_week>
|
94
|
+
<open_time></open_time>
|
95
|
+
<close_time></close_time>
|
96
|
+
</operating_day>
|
97
|
+
</operating_days>
|
98
|
+
<parking></parking>
|
99
|
+
</environment>
|
100
|
+
<contacts>
|
101
|
+
<contact type="primary">
|
102
|
+
<first_name>Chris</first_name>
|
103
|
+
<last_name>Hanscom</last_name>
|
104
|
+
<email>menu@openmenu.com</email>
|
105
|
+
</contact>
|
106
|
+
</contacts>
|
107
|
+
<parent_company>
|
108
|
+
<parent_company_name></parent_company_name>
|
109
|
+
<parent_company_website></parent_company_website>
|
110
|
+
<address_1></address_1>
|
111
|
+
<address_2></address_2>
|
112
|
+
<city_town></city_town>
|
113
|
+
<state_province></state_province>
|
114
|
+
<postal_code></postal_code>
|
115
|
+
<country></country>
|
116
|
+
<phone></phone>
|
117
|
+
<fax></fax>
|
118
|
+
</parent_company>
|
119
|
+
</restaurant_info>
|
120
|
+
<menus>
|
121
|
+
<menu name="Main Menu" currency_symbol="USD" uid="25">
|
122
|
+
<menu_description></menu_description>
|
123
|
+
<menu_duration>
|
124
|
+
<menu_duration_name>lunch-dinner</menu_duration_name>
|
125
|
+
<menu_duration_time_start>11:00</menu_duration_time_start>
|
126
|
+
<menu_duration_time_end>22:00</menu_duration_time_end>
|
127
|
+
</menu_duration>
|
128
|
+
<menu_groups>
|
129
|
+
<menu_group name="Appetizers" uid="2">
|
130
|
+
<menu_group_description></menu_group_description>
|
131
|
+
<menu_items>
|
132
|
+
<menu_item>
|
133
|
+
<menu_item_name>Coconut Shrimp</menu_item_name>
|
134
|
+
<menu_item_description>Crispy Coconut Shrimp & tangy mango lime sauce</menu_item_description>
|
135
|
+
<menu_item_price>7.95</menu_item_price>
|
136
|
+
<menu_item_calories>350</menu_item_calories>
|
137
|
+
<menu_item_image_urls>
|
138
|
+
<menu_item_image_url width="" height="" type="Thumbnail" media="Web">http://openmenu.com/images/coconut_shrimp.jpg</menu_item_image_url>
|
139
|
+
</menu_item_image_urls>
|
140
|
+
</menu_item>
|
141
|
+
<menu_item>
|
142
|
+
<menu_item_name>Tempura Onion Rings</menu_item_name>
|
143
|
+
<menu_item_description>With a honey Thai sauce</menu_item_description>
|
144
|
+
<menu_item_price>7.95</menu_item_price>
|
145
|
+
<menu_item_heat_index>1</menu_item_heat_index>
|
146
|
+
</menu_item>
|
147
|
+
<menu_item special="special">
|
148
|
+
<menu_item_name>Calamari</menu_item_name>
|
149
|
+
<menu_item_description>Our calamari is lightly fried and tossed with a sweet and spicy Asian mango sauce.</menu_item_description>
|
150
|
+
<menu_item_price></menu_item_price>
|
151
|
+
<menu_item_heat_index>2</menu_item_heat_index>
|
152
|
+
<menu_item_sizes>
|
153
|
+
<menu_item_size>
|
154
|
+
<menu_item_size_name>small</menu_item_size_name>
|
155
|
+
<menu_item_size_description></menu_item_size_description>
|
156
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
157
|
+
</menu_item_size>
|
158
|
+
<menu_item_size>
|
159
|
+
<menu_item_size_name>large</menu_item_size_name>
|
160
|
+
<menu_item_size_description></menu_item_size_description>
|
161
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
162
|
+
</menu_item_size>
|
163
|
+
</menu_item_sizes>
|
164
|
+
</menu_item>
|
165
|
+
</menu_items>
|
166
|
+
</menu_group>
|
167
|
+
<menu_group name="Salads" uid="3">
|
168
|
+
<menu_group_description></menu_group_description>
|
169
|
+
<menu_group_options>
|
170
|
+
<menu_group_option name="Dressings">
|
171
|
+
<menu_group_option_information></menu_group_option_information>
|
172
|
+
<menu_group_option_item>
|
173
|
+
<menu_group_option_name>Italian</menu_group_option_name>
|
174
|
+
<menu_group_option_additional_cost>1.00</menu_group_option_additional_cost>
|
175
|
+
</menu_group_option_item>
|
176
|
+
<menu_group_option_item>
|
177
|
+
<menu_group_option_name>French</menu_group_option_name>
|
178
|
+
<menu_group_option_additional_cost>1.25</menu_group_option_additional_cost>
|
179
|
+
</menu_group_option_item>
|
180
|
+
<menu_group_option_item>
|
181
|
+
<menu_group_option_name>Thousand Island</menu_group_option_name>
|
182
|
+
<menu_group_option_additional_cost>1.00</menu_group_option_additional_cost>
|
183
|
+
</menu_group_option_item>
|
184
|
+
</menu_group_option>
|
185
|
+
</menu_group_options>
|
186
|
+
<menu_items>
|
187
|
+
<menu_item>
|
188
|
+
<menu_item_name>Chef Salad</menu_item_name>
|
189
|
+
<menu_item_description>Best chef salad in a 20 mile radius</menu_item_description>
|
190
|
+
<menu_item_price></menu_item_price>
|
191
|
+
<menu_item_sizes>
|
192
|
+
<menu_item_size>
|
193
|
+
<menu_item_size_name>half</menu_item_size_name>
|
194
|
+
<menu_item_size_description></menu_item_size_description>
|
195
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
196
|
+
</menu_item_size>
|
197
|
+
<menu_item_size>
|
198
|
+
<menu_item_size_name>full</menu_item_size_name>
|
199
|
+
<menu_item_size_description></menu_item_size_description>
|
200
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
201
|
+
</menu_item_size>
|
202
|
+
</menu_item_sizes>
|
203
|
+
</menu_item>
|
204
|
+
<menu_item special="special">
|
205
|
+
<menu_item_name>Cobb Salad</menu_item_name>
|
206
|
+
<menu_item_description>Iceberg lettuce topped with turkey, ham, hard cooked eggs, avocado, diced tomatoes, bacon, bleu cheese crumbles and black olives</menu_item_description>
|
207
|
+
<menu_item_price></menu_item_price>
|
208
|
+
<menu_item_sizes>
|
209
|
+
<menu_item_size>
|
210
|
+
<menu_item_size_name>half</menu_item_size_name>
|
211
|
+
<menu_item_size_description></menu_item_size_description>
|
212
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
213
|
+
</menu_item_size>
|
214
|
+
<menu_item_size>
|
215
|
+
<menu_item_size_name>full</menu_item_size_name>
|
216
|
+
<menu_item_size_description></menu_item_size_description>
|
217
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
218
|
+
</menu_item_size>
|
219
|
+
</menu_item_sizes>
|
220
|
+
</menu_item>
|
221
|
+
<menu_item>
|
222
|
+
<menu_item_name>Ceasar Salad</menu_item_name>
|
223
|
+
<menu_item_description>Fresh romain lettuce with aged parmesan reggiano</menu_item_description>
|
224
|
+
<menu_item_price>9.95</menu_item_price>
|
225
|
+
</menu_item>
|
226
|
+
<menu_item vegetarian="vegetarian">
|
227
|
+
<menu_item_name>Garden Salad</menu_item_name>
|
228
|
+
<menu_item_description>Filled with lettuce, tomatoes, carrots, radishes, cucumbers and shredded cheese</menu_item_description>
|
229
|
+
<menu_item_price>8.95</menu_item_price>
|
230
|
+
</menu_item>
|
231
|
+
</menu_items>
|
232
|
+
</menu_group>
|
233
|
+
<menu_group name="Entrees" uid="1">
|
234
|
+
<menu_group_description></menu_group_description>
|
235
|
+
<menu_items>
|
236
|
+
<menu_item uid="1">
|
237
|
+
<menu_item_name>Rack of Lamb</menu_item_name>
|
238
|
+
<menu_item_description>Coffee Citrus Crusted Lamb </menu_item_description>
|
239
|
+
<menu_item_price>22.95</menu_item_price>
|
240
|
+
</menu_item>
|
241
|
+
<menu_item uid="2">
|
242
|
+
<menu_item_name>Soft Shell Crabs</menu_item_name>
|
243
|
+
<menu_item_description>Almond encrusted, seasoned and sauteed in butter to a crispy brown</menu_item_description>
|
244
|
+
<menu_item_price>19.95</menu_item_price>
|
245
|
+
<menu_item_allergy_information allergens="shellfish, nuts">Reference allergens for allergy information</menu_item_allergy_information>
|
246
|
+
</menu_item>
|
247
|
+
<menu_item uid="3" special="special">
|
248
|
+
<menu_item_name>Cioppino</menu_item_name>
|
249
|
+
<menu_item_description>Fresh fish, scallops, mussels, calamari, and shrimp in a tomato-garlic saffron broth over linguini</menu_item_description>
|
250
|
+
<menu_item_price>24.95</menu_item_price>
|
251
|
+
</menu_item>
|
252
|
+
</menu_items>
|
253
|
+
</menu_group>
|
254
|
+
</menu_groups>
|
255
|
+
</menu>
|
256
|
+
<menu name="Late Night Menu" currency_symbol="USD" uid="35">
|
257
|
+
<menu_description></menu_description>
|
258
|
+
<menu_duration>
|
259
|
+
<menu_duration_name>late-night</menu_duration_name>
|
260
|
+
<menu_duration_time_start>20:00</menu_duration_time_start>
|
261
|
+
<menu_duration_time_end>23:00</menu_duration_time_end>
|
262
|
+
</menu_duration>
|
263
|
+
<menu_groups>
|
264
|
+
<menu_group name="Bar Food" uid="1">
|
265
|
+
<menu_group_description></menu_group_description>
|
266
|
+
<menu_items>
|
267
|
+
<menu_item>
|
268
|
+
<menu_item_name>Cheese Sticks</menu_item_name>
|
269
|
+
<menu_item_description>Cheese sticks with marinara sauce</menu_item_description>
|
270
|
+
<menu_item_price>6.95</menu_item_price>
|
271
|
+
</menu_item>
|
272
|
+
<menu_item>
|
273
|
+
<menu_item_name>Coconut Shrimp</menu_item_name>
|
274
|
+
<menu_item_description>Crispy Coconut Shrimp</menu_item_description>
|
275
|
+
<menu_item_price>7.95</menu_item_price>
|
276
|
+
<menu_item_calories>350</menu_item_calories>
|
277
|
+
</menu_item>
|
278
|
+
<menu_item>
|
279
|
+
<menu_item_name>Tempura Onion Rings</menu_item_name>
|
280
|
+
<menu_item_description>With a honey Thai sauce</menu_item_description>
|
281
|
+
<menu_item_price>7.95</menu_item_price>
|
282
|
+
</menu_item>
|
283
|
+
<menu_item>
|
284
|
+
<menu_item_name>Calamari</menu_item_name>
|
285
|
+
<menu_item_description>Our calamari is lightly fried and tossed with a sweet and spicy Asian mango sauce.</menu_item_description>
|
286
|
+
<menu_item_price>8.85</menu_item_price>
|
287
|
+
</menu_item>
|
288
|
+
</menu_items>
|
289
|
+
</menu_group>
|
290
|
+
</menu_groups>
|
291
|
+
</menu>
|
292
|
+
</menus>
|
293
|
+
</omf>
|
data/test/test_openmenu.rb
CHANGED
@@ -2,22 +2,24 @@ require "test/unit"
|
|
2
2
|
require "openmenu"
|
3
3
|
|
4
4
|
class TestOpenMenu< Test::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
@om = OpenMenu.parse(sample_om)
|
7
|
-
end
|
8
5
|
|
9
6
|
def test_open_menu_parse
|
7
|
+
@om = OpenMenu.parse(sample_om16)
|
8
|
+
|
10
9
|
assert_equal "sample", @om.uuid
|
11
10
|
assert_equal "2011-08-19", @om.date_created
|
12
11
|
assert_equal 1, @om.accuracy
|
12
|
+
assert_equal 'private', @om.private # 1.6
|
13
|
+
assert @om.private? # 1.6
|
13
14
|
|
14
|
-
assert_equal 1.
|
15
|
+
assert_equal 1.6, @om.version
|
15
16
|
|
16
17
|
assert_equal "My Restaurant", @om.restaurant_name
|
17
18
|
assert_equal "Brief Description", @om.brief_description
|
18
19
|
assert_equal "Full Description", @om.full_description
|
19
20
|
assert_equal "independent", @om.business_type
|
20
21
|
assert_equal "x123z", @om.location_id
|
22
|
+
assert_equal 1, @om.mobile # 1.6
|
21
23
|
assert_equal "-81.039833", @om.longitude
|
22
24
|
assert_equal "33.999458", @om.latitude
|
23
25
|
assert_equal -5.00, @om.utc_offset
|
@@ -108,13 +110,15 @@ class TestOpenMenu< Test::Unit::TestCase
|
|
108
110
|
end
|
109
111
|
|
110
112
|
def test_menu_parse
|
111
|
-
menus = OpenMenu::Menu.parse(
|
113
|
+
menus = OpenMenu::Menu.parse(sample_om16)
|
112
114
|
assert_equal 'Main Menu', menus.first.name
|
113
|
-
assert_equal
|
115
|
+
assert_equal '3e3bae08-27f2-11e1-80ac-00163eeae341', menus.first.uid
|
114
116
|
assert_equal 'USD', menus.first.currency
|
117
|
+
assert_equal 'en', menus.first.language
|
115
118
|
assert_equal 'disabled', menus.first.disabled
|
116
119
|
assert_equal true, menus.first.disabled?
|
117
120
|
assert_equal 'Great food, everyday.', menus.first.description
|
121
|
+
assert_equal 'The mainstays.', menus.first.note
|
118
122
|
|
119
123
|
assert_equal 'lunch-dinner', menus.first.duration.name
|
120
124
|
assert_equal '11:00', menus.first.duration.start
|
@@ -122,10 +126,11 @@ class TestOpenMenu< Test::Unit::TestCase
|
|
122
126
|
|
123
127
|
group = menus.first.groups.first
|
124
128
|
assert_equal 'Appetizers', group.name
|
125
|
-
assert_equal
|
129
|
+
assert_equal '3e3bae08-27f2-11e1-80ac-00163eeae342', group.uid
|
126
130
|
assert_equal 'disabled', group.disabled
|
127
131
|
assert_equal true, group.disabled?
|
128
132
|
assert_equal 'Succulent appetizers.', group.description
|
133
|
+
assert_equal 'Warm up.', group.note
|
129
134
|
|
130
135
|
option = menus.first.groups[1].options.first
|
131
136
|
assert_equal 'Dressings', option.name
|
@@ -138,7 +143,7 @@ class TestOpenMenu< Test::Unit::TestCase
|
|
138
143
|
assert_equal 1.00, option_item.additional_cost
|
139
144
|
|
140
145
|
item = group.items.first
|
141
|
-
assert_equal
|
146
|
+
assert_equal '3e3bae08-27f2-11e1-80ac-00163eeae343', item.uid
|
142
147
|
assert_equal 'disabled', item.disabled
|
143
148
|
assert_equal true, item.disabled?
|
144
149
|
assert_equal 'special', item.special
|
@@ -151,6 +156,8 @@ class TestOpenMenu< Test::Unit::TestCase
|
|
151
156
|
assert_equal true, item.kosher?
|
152
157
|
assert_equal 'halal', item.halal
|
153
158
|
assert_equal true, item.halal?
|
159
|
+
assert_equal 'gluten_free', item.gluten_free
|
160
|
+
assert_equal true, item.gluten_free?
|
154
161
|
assert_equal 'Coconut Shrimp', item.name
|
155
162
|
assert_equal 'Menu Item Description', item.description
|
156
163
|
assert_equal 7.95, item.price
|
@@ -700,6 +707,347 @@ Our calamari is lightly fried and tossed with a sweet and spicy Asian mango sauc
|
|
700
707
|
</menu_duration>
|
701
708
|
</menu>
|
702
709
|
</menus>
|
710
|
+
</omf>
|
711
|
+
XML
|
712
|
+
end
|
713
|
+
def sample_om16
|
714
|
+
<<-XML
|
715
|
+
<omf uuid="sample" date_created="2011-08-19" accuracy="1" private="private">
|
716
|
+
<openmenu>
|
717
|
+
<version>1.6</version>
|
718
|
+
<cat>Black</cat>
|
719
|
+
<crosswalks>
|
720
|
+
<crosswalk>
|
721
|
+
<crosswalk_id>31b8bfbf-08a3-478f-a4a4-d3e3143a37fb</crosswalk_id>
|
722
|
+
<crosswalk_company>Factual</crosswalk_company>
|
723
|
+
<crosswalk_url>
|
724
|
+
http://factual.com/31b8bfbf-08a3-478f-a4a4-d3e3143a37fb
|
725
|
+
</crosswalk_url>
|
726
|
+
</crosswalk>
|
727
|
+
</crosswalks>
|
728
|
+
</openmenu>
|
729
|
+
<restaurant_info>
|
730
|
+
<restaurant_name>My Restaurant</restaurant_name>
|
731
|
+
<business_type>independent</business_type>
|
732
|
+
<brief_description>Brief Description</brief_description>
|
733
|
+
<full_description>Full Description</full_description>
|
734
|
+
<location_id>x123z</location_id>
|
735
|
+
<mobile>1</mobile>
|
736
|
+
<longitude>-81.039833</longitude>
|
737
|
+
<latitude>33.999458</latitude>
|
738
|
+
<utc_offset>-5.00</utc_offset>
|
739
|
+
<address_1>803 Gervais Street</address_1>
|
740
|
+
<address_2>STE 2</address_2>
|
741
|
+
<city_town>Columbia</city_town>
|
742
|
+
<state_province>SC</state_province>
|
743
|
+
<postal_code>29202</postal_code>
|
744
|
+
<country>US</country>
|
745
|
+
<region_area name="Region Name" designation="Region Designation"/>
|
746
|
+
<phone>(555) 555-5555</phone>
|
747
|
+
<fax>(555) 888-8888</fax>
|
748
|
+
<website_url>http://openmenu.com/</website_url>
|
749
|
+
<omf_file_url>http://openmenu.com/menu/sample</omf_file_url>
|
750
|
+
<logo_urls>
|
751
|
+
<logo_url type="Thumbnail" media="All" height="32" width="32">http://openmenu.com/images/ico-32-openmenu.png</logo_url>
|
752
|
+
<logo_url type="Full" media="All">http://openmenu.com/images/sample_logo_full.png</logo_url>
|
753
|
+
</logo_urls>
|
754
|
+
<environment>
|
755
|
+
<seating_qty>96</seating_qty>
|
756
|
+
<max_group_size>12</max_group_size>
|
757
|
+
<age_level_preference>+55</age_level_preference>
|
758
|
+
<smoking_allowed>0</smoking_allowed>
|
759
|
+
<takeout_available>1</takeout_available>
|
760
|
+
<delivery_available radius="6.5" fee="12.00">1</delivery_available>
|
761
|
+
<catering_available>1</catering_available>
|
762
|
+
<reservations>Suggested</reservations>
|
763
|
+
<alcohol_type>Full Bar</alcohol_type>
|
764
|
+
<music_type>Live</music_type>
|
765
|
+
<pets_allowed>0</pets_allowed>
|
766
|
+
<wheelchair_accessible>1</wheelchair_accessible>
|
767
|
+
<dress_code>casual</dress_code>
|
768
|
+
<cuisine_type_primary>Steakhouse</cuisine_type_primary>
|
769
|
+
<cuisine_type_secondary>Seafood</cuisine_type_secondary>
|
770
|
+
<seating_locations>
|
771
|
+
<seating_location>outdoor</seating_location>
|
772
|
+
<seating_location>indoor</seating_location>
|
773
|
+
</seating_locations>
|
774
|
+
<accepted_currencies>
|
775
|
+
<accepted_currency>USD</accepted_currency>
|
776
|
+
</accepted_currencies>
|
777
|
+
<online_reservations>
|
778
|
+
<online_reservation type="web/mobile">
|
779
|
+
<online_reservation_name>Reservation Online</online_reservation_name>
|
780
|
+
<online_reservation_url>http://www.on-res.com</online_reservation_url>
|
781
|
+
</online_reservation>
|
782
|
+
</online_reservations>
|
783
|
+
<online_ordering>
|
784
|
+
<online_order type="web/mobile">
|
785
|
+
<online_order_name>Order Online</online_order_name>
|
786
|
+
<online_order_url>http://www.on-order.com</online_order_url>
|
787
|
+
</online_order>
|
788
|
+
</online_ordering>
|
789
|
+
<operating_days>
|
790
|
+
<operating_day>
|
791
|
+
<day_of_week>1</day_of_week>
|
792
|
+
<open_time>11:00</open_time>
|
793
|
+
<close_time>22:00</close_time>
|
794
|
+
</operating_day>
|
795
|
+
<operating_day>
|
796
|
+
<day_of_week>2</day_of_week>
|
797
|
+
<open_time>11:00</open_time>
|
798
|
+
<close_time>22:00</close_time>
|
799
|
+
</operating_day>
|
800
|
+
<operating_day>
|
801
|
+
<day_of_week>3</day_of_week>
|
802
|
+
<open_time>11:00</open_time>
|
803
|
+
<close_time>22:00</close_time>
|
804
|
+
</operating_day>
|
805
|
+
<operating_day>
|
806
|
+
<day_of_week>4</day_of_week>
|
807
|
+
<open_time>11:00</open_time>
|
808
|
+
<close_time>22:00</close_time>
|
809
|
+
</operating_day>
|
810
|
+
<operating_day>
|
811
|
+
<day_of_week>5</day_of_week>
|
812
|
+
<open_time>11:00</open_time>
|
813
|
+
<close_time>22:00</close_time>
|
814
|
+
</operating_day>
|
815
|
+
<operating_day>
|
816
|
+
<day_of_week>6</day_of_week>
|
817
|
+
<open_time>11:00</open_time>
|
818
|
+
<close_time>22:00</close_time>
|
819
|
+
</operating_day>
|
820
|
+
<operating_day>
|
821
|
+
<day_of_week>7</day_of_week>
|
822
|
+
<open_time/>
|
823
|
+
<close_time/>
|
824
|
+
</operating_day>
|
825
|
+
</operating_days>
|
826
|
+
<parking street_free="street_free" street_metered="street_metered" private_lot="private_lot" garage="garage" valet="valet"/>
|
827
|
+
</environment>
|
828
|
+
<contacts>
|
829
|
+
<contact type="primary">
|
830
|
+
<first_name>Chris</first_name>
|
831
|
+
<last_name>Hanscom</last_name>
|
832
|
+
<email>menu@openmenu.com</email>
|
833
|
+
</contact>
|
834
|
+
</contacts>
|
835
|
+
<parent_company>
|
836
|
+
<parent_company_name>Flintstones Global</parent_company_name>
|
837
|
+
<parent_company_website>http://flintstones.com</parent_company_website>
|
838
|
+
<address_1>123 Main Street</address_1>
|
839
|
+
<address_2>Suite 1</address_2>
|
840
|
+
<city_town>Bedrock</city_town>
|
841
|
+
<state_province>WY</state_province>
|
842
|
+
<postal_code>12345</postal_code>
|
843
|
+
<country>USA</country>
|
844
|
+
<phone>(111) 111-1111</phone>
|
845
|
+
<fax>(111) 222-2222</fax>
|
846
|
+
</parent_company>
|
847
|
+
</restaurant_info>
|
848
|
+
<menus>
|
849
|
+
<menu name="Main Menu" currency_symbol="USD" uid="3e3bae08-27f2-11e1-80ac-00163eeae341" language="en" disabled="disabled">
|
850
|
+
<menu_description>Great food, everyday.</menu_description>
|
851
|
+
<menu_note>The mainstays.</menu_note>
|
852
|
+
<menu_duration>
|
853
|
+
<menu_duration_name>lunch-dinner</menu_duration_name>
|
854
|
+
<menu_duration_time_start>11:00</menu_duration_time_start>
|
855
|
+
<menu_duration_time_end>22:00</menu_duration_time_end>
|
856
|
+
</menu_duration>
|
857
|
+
<menu_groups>
|
858
|
+
<menu_group name="Appetizers" uid="3e3bae08-27f2-11e1-80ac-00163eeae342" disabled="disabled">
|
859
|
+
<menu_group_description>Succulent appetizers.</menu_group_description>
|
860
|
+
<menu_group_note>Warm up.</menu_group_note>
|
861
|
+
<menu_items>
|
862
|
+
<menu_item uid="3e3bae08-27f2-11e1-80ac-00163eeae343" disabled="disabled" special="special" vegetarian="vegetarian" vegan="vegan" kosher="kosher" halal="halal" gluten_free="gluten_free">
|
863
|
+
<menu_item_name>Coconut Shrimp</menu_item_name>
|
864
|
+
<menu_item_description>Menu Item Description</menu_item_description>
|
865
|
+
<menu_item_price>7.95</menu_item_price>
|
866
|
+
<menu_item_calories>350</menu_item_calories>
|
867
|
+
<menu_item_allergy_information allergens="seafood, coconut">Contains Seafood</menu_item_allergy_information>
|
868
|
+
<menu_item_image_urls>
|
869
|
+
<menu_item_image_url width="32" height="32" type="Thumbnail" media="Web">http://openmenu.com/images/coconut_shrimp.jpg</menu_item_image_url>
|
870
|
+
</menu_item_image_urls>
|
871
|
+
<menu_item_options>
|
872
|
+
<menu_item_option name="Sauce" min_selected="1" max_selected="2">
|
873
|
+
<menu_item_option_information>Saucy sauces</menu_item_option_information>
|
874
|
+
<menu_item_option_item>
|
875
|
+
<menu_item_option_name>Honey</menu_item_option_name>
|
876
|
+
<menu_item_option_additional_cost>3.99</menu_item_option_additional_cost>
|
877
|
+
</menu_item_option_item>
|
878
|
+
</menu_item_option>
|
879
|
+
</menu_item_options>
|
880
|
+
<menu_item_tags>
|
881
|
+
<menu_item_tag>prawns</menu_item_tag>
|
882
|
+
<menu_item_tag>seafood</menu_item_tag>
|
883
|
+
</menu_item_tags>
|
884
|
+
</menu_item>
|
885
|
+
<menu_item>
|
886
|
+
<menu_item_name>Tempura Onion Rings</menu_item_name>
|
887
|
+
<menu_item_description>With a honey Thai sauce</menu_item_description>
|
888
|
+
<menu_item_price>7.95</menu_item_price>
|
889
|
+
<menu_item_heat_index>1</menu_item_heat_index>
|
890
|
+
</menu_item>
|
891
|
+
<menu_item special="special">
|
892
|
+
<menu_item_name>Calamari</menu_item_name>
|
893
|
+
<menu_item_description>
|
894
|
+
Our calamari is lightly fried and tossed with a sweet and spicy Asian mango sauce.
|
895
|
+
</menu_item_description>
|
896
|
+
<menu_item_price/>
|
897
|
+
<menu_item_heat_index>2</menu_item_heat_index>
|
898
|
+
<menu_item_sizes>
|
899
|
+
<menu_item_size>
|
900
|
+
<menu_item_size_name>small</menu_item_size_name>
|
901
|
+
<menu_item_size_description>Description</menu_item_size_description>
|
902
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
903
|
+
<menu_item_size_calories>3000</menu_item_size_calories>
|
904
|
+
</menu_item_size>
|
905
|
+
<menu_item_size>
|
906
|
+
<menu_item_size_name>large</menu_item_size_name>
|
907
|
+
<menu_item_size_description/>
|
908
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
909
|
+
</menu_item_size>
|
910
|
+
</menu_item_sizes>
|
911
|
+
</menu_item>
|
912
|
+
</menu_items>
|
913
|
+
</menu_group>
|
914
|
+
<menu_group name="Salads" uid="3e3bae08-27f2-11e1-80ac-00163eeae344">
|
915
|
+
<menu_group_description/>
|
916
|
+
<menu_group_options>
|
917
|
+
<menu_group_option name="Dressings" min_selected="1" max_selected="2">
|
918
|
+
<menu_group_option_information>Yummy dressings</menu_group_option_information>
|
919
|
+
<menu_group_option_item>
|
920
|
+
<menu_group_option_name>Italian</menu_group_option_name>
|
921
|
+
<menu_group_option_additional_cost>1.00</menu_group_option_additional_cost>
|
922
|
+
</menu_group_option_item>
|
923
|
+
<menu_group_option_item>
|
924
|
+
<menu_group_option_name>French</menu_group_option_name>
|
925
|
+
<menu_group_option_additional_cost>1.25</menu_group_option_additional_cost>
|
926
|
+
</menu_group_option_item>
|
927
|
+
<menu_group_option_item>
|
928
|
+
<menu_group_option_name>Thousand Island</menu_group_option_name>
|
929
|
+
<menu_group_option_additional_cost>1.00</menu_group_option_additional_cost>
|
930
|
+
</menu_group_option_item>
|
931
|
+
</menu_group_option>
|
932
|
+
</menu_group_options>
|
933
|
+
<menu_items>
|
934
|
+
<menu_item>
|
935
|
+
<menu_item_name>Chef Salad</menu_item_name>
|
936
|
+
<menu_item_description>Best chef salad in a 20 mile radius</menu_item_description>
|
937
|
+
<menu_item_price/>
|
938
|
+
<menu_item_sizes>
|
939
|
+
<menu_item_size>
|
940
|
+
<menu_item_size_name>half</menu_item_size_name>
|
941
|
+
<menu_item_size_description/>
|
942
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
943
|
+
</menu_item_size>
|
944
|
+
<menu_item_size>
|
945
|
+
<menu_item_size_name>full</menu_item_size_name>
|
946
|
+
<menu_item_size_description/>
|
947
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
948
|
+
</menu_item_size>
|
949
|
+
</menu_item_sizes>
|
950
|
+
</menu_item>
|
951
|
+
<menu_item special="special">
|
952
|
+
<menu_item_name>Cobb Salad</menu_item_name>
|
953
|
+
<menu_item_description>
|
954
|
+
Iceberg lettuce topped with turkey, ham, hard cooked eggs, avocado, diced tomatoes, bacon, bleu cheese crumbles and black olives
|
955
|
+
</menu_item_description>
|
956
|
+
<menu_item_price/>
|
957
|
+
<menu_item_sizes>
|
958
|
+
<menu_item_size>
|
959
|
+
<menu_item_size_name>half</menu_item_size_name>
|
960
|
+
<menu_item_size_description/>
|
961
|
+
<menu_item_size_price>6.95</menu_item_size_price>
|
962
|
+
</menu_item_size>
|
963
|
+
<menu_item_size>
|
964
|
+
<menu_item_size_name>full</menu_item_size_name>
|
965
|
+
<menu_item_size_description/>
|
966
|
+
<menu_item_size_price>8.95</menu_item_size_price>
|
967
|
+
</menu_item_size>
|
968
|
+
</menu_item_sizes>
|
969
|
+
</menu_item>
|
970
|
+
<menu_item>
|
971
|
+
<menu_item_name>Ceasar Salad</menu_item_name>
|
972
|
+
<menu_item_description>Fresh romain lettuce with aged parmesan reggiano</menu_item_description>
|
973
|
+
<menu_item_price>9.95</menu_item_price>
|
974
|
+
</menu_item>
|
975
|
+
<menu_item vegetarian="vegetarian">
|
976
|
+
<menu_item_name>Garden Salad</menu_item_name>
|
977
|
+
<menu_item_description>
|
978
|
+
Filled with lettuce, tomatoes, carrots, radishes, cucumbers and shredded cheese
|
979
|
+
</menu_item_description>
|
980
|
+
<menu_item_price>8.95</menu_item_price>
|
981
|
+
</menu_item>
|
982
|
+
</menu_items>
|
983
|
+
</menu_group>
|
984
|
+
<menu_group name="Entrees" uid="3e3bae08-27f2-11e1-80ac-00163eeae345">
|
985
|
+
<menu_group_description/>
|
986
|
+
<menu_items>
|
987
|
+
<menu_item uid="3e3bae08-27f2-11e1-80ac-00163eeae346">
|
988
|
+
<menu_item_name>Rack of Lamb</menu_item_name>
|
989
|
+
<menu_item_description>Coffee Citrus Crusted Lamb</menu_item_description>
|
990
|
+
<menu_item_price>22.95</menu_item_price>
|
991
|
+
</menu_item>
|
992
|
+
<menu_item uid="3e3bae08-27f2-11e1-80ac-00163eeae34c7">
|
993
|
+
<menu_item_name>Soft Shell Crabs</menu_item_name>
|
994
|
+
<menu_item_description>
|
995
|
+
Almond encrusted, seasoned and sauteed in butter to a crispy brown
|
996
|
+
</menu_item_description>
|
997
|
+
<menu_item_price>19.95</menu_item_price>
|
998
|
+
<menu_item_allergy_information allergens="shellfish, nuts">Reference allergens for allergy information</menu_item_allergy_information>
|
999
|
+
</menu_item>
|
1000
|
+
<menu_item uid="3e3bae08-27f2-11e1-80ac-00163eeae348" special="special">
|
1001
|
+
<menu_item_name>Cioppino</menu_item_name>
|
1002
|
+
<menu_item_description>
|
1003
|
+
Fresh fish, scallops, mussels, calamari, and shrimp in a tomato-garlic saffron broth over linguini
|
1004
|
+
</menu_item_description>
|
1005
|
+
<menu_item_price>24.95</menu_item_price>
|
1006
|
+
</menu_item>
|
1007
|
+
</menu_items>
|
1008
|
+
</menu_group>
|
1009
|
+
</menu_groups>
|
1010
|
+
</menu>
|
1011
|
+
<menu name="Late Night Menu" currency_symbol="USD" uid="3e3bae08-27f2-11e1-80ac-00163eeae349">
|
1012
|
+
<menu_description/>
|
1013
|
+
<menu_note/>
|
1014
|
+
<menu_duration>
|
1015
|
+
<menu_duration_name>late-night</menu_duration_name>
|
1016
|
+
<menu_duration_time_start>20:00</menu_duration_time_start>
|
1017
|
+
<menu_duration_time_end>23:00</menu_duration_time_end>
|
1018
|
+
</menu_duration>
|
1019
|
+
<menu_groups>
|
1020
|
+
<menu_group name="Bar Food" uid="3e3bae08-27f2-11e1-80ac-00163eeae340">
|
1021
|
+
<menu_group_description/>
|
1022
|
+
<menu_items>
|
1023
|
+
<menu_item>
|
1024
|
+
<menu_item_name>Cheese Sticks</menu_item_name>
|
1025
|
+
<menu_item_description>Cheese sticks with marinara sauce</menu_item_description>
|
1026
|
+
<menu_item_price>6.95</menu_item_price>
|
1027
|
+
</menu_item>
|
1028
|
+
<menu_item>
|
1029
|
+
<menu_item_name>Coconut Shrimp</menu_item_name>
|
1030
|
+
<menu_item_description>Crispy Coconut Shrimp</menu_item_description>
|
1031
|
+
<menu_item_price>7.95</menu_item_price>
|
1032
|
+
<menu_item_calories>350</menu_item_calories>
|
1033
|
+
</menu_item>
|
1034
|
+
<menu_item>
|
1035
|
+
<menu_item_name>Tempura Onion Rings</menu_item_name>
|
1036
|
+
<menu_item_description>With a honey Thai sauce</menu_item_description>
|
1037
|
+
<menu_item_price>7.95</menu_item_price>
|
1038
|
+
</menu_item>
|
1039
|
+
<menu_item>
|
1040
|
+
<menu_item_name>Calamari</menu_item_name>
|
1041
|
+
<menu_item_description>
|
1042
|
+
Our calamari is lightly fried and tossed with a sweet and spicy Asian mango sauce.
|
1043
|
+
</menu_item_description>
|
1044
|
+
<menu_item_price>8.85</menu_item_price>
|
1045
|
+
</menu_item>
|
1046
|
+
</menu_items>
|
1047
|
+
</menu_group>
|
1048
|
+
</menu_groups>
|
1049
|
+
</menu>
|
1050
|
+
</menus>
|
703
1051
|
</omf>
|
704
1052
|
XML
|
705
1053
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openmenu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri-happymapper
|
16
|
-
requirement: &
|
16
|
+
requirement: &70213543430980 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,21 +21,54 @@ dependencies:
|
|
21
21
|
version: 0.3.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70213543430980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: minitest
|
27
|
-
requirement: &
|
27
|
+
requirement: &70213543430360 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '2.8'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70213543430360
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: isolate
|
38
|
+
requirement: &70213543429580 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 3.2.1
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70213543429580
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: hoe-git
|
49
|
+
requirement: &70213543428840 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.4.1
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70213543428840
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rdoc
|
60
|
+
requirement: &70213543422100 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '3.10'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70213543422100
|
36
69
|
- !ruby/object:Gem::Dependency
|
37
70
|
name: hoe
|
38
|
-
requirement: &
|
71
|
+
requirement: &70213543421540 !ruby/object:Gem::Requirement
|
39
72
|
none: false
|
40
73
|
requirements:
|
41
74
|
- - ~>
|
@@ -43,7 +76,7 @@ dependencies:
|
|
43
76
|
version: '2.12'
|
44
77
|
type: :development
|
45
78
|
prerelease: false
|
46
|
-
version_requirements: *
|
79
|
+
version_requirements: *70213543421540
|
47
80
|
description: ! "Openmenu is parser for OpenMenu xml files.\n\nNOTE: This is an early
|
48
81
|
release. There is some refactoring to be done, but \nthe interface should stay the
|
49
82
|
same."
|
@@ -64,6 +97,8 @@ files:
|
|
64
97
|
- lib/open_menu.rb
|
65
98
|
- lib/openmenu.rb
|
66
99
|
- test/sample.xml
|
100
|
+
- test/sample15.xml
|
101
|
+
- test/sample16.xml
|
67
102
|
- test/test_openmenu.rb
|
68
103
|
- .gemtest
|
69
104
|
homepage: https://github.com/matthewcalebsmith/openmenu
|
@@ -88,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
123
|
version: '0'
|
89
124
|
requirements: []
|
90
125
|
rubyforge_project: openmenu
|
91
|
-
rubygems_version: 1.8.
|
126
|
+
rubygems_version: 1.8.15
|
92
127
|
signing_key:
|
93
128
|
specification_version: 3
|
94
129
|
summary: Openmenu is parser for OpenMenu xml files
|