1
import xml.sax, re, sys, xml.sax.saxutils
3
from gourmet.importers import xml_importer
4
from gourmet.gdebug import *
5
from gourmet.gglobals import *
7
class KrecHandler (xml_importer.RecHandler):
12
RECTAGS={'title':('title',IS),
13
'author':('source',ADD),
14
# FIX ME: IMAGE SUPPORT IS BROKEN!
15
'pic':('image',BASE_64),
16
'cat':('category',ADD),
17
'serving':('servings',IS),
18
'preparation-time':('preptime',IS),
19
'krecipes-instructions':('instructions',ADD)
21
INGTAGS={'name':(('item','ingkey'),AND),
22
'amount':('amount',IS),
26
RECIPE_TAG = 'krecipes-recipe'
27
ING_TAG = 'ingredient'
29
def __init__ (self, total=None, conv=None, parent_thread=None):
33
xml_importer.RecHandler.__init__(self,total,conv=conv,parent_thread=parent_thread)
35
def startElement (self, name, attrs):
37
if name==self.RECIPE_TAG:
39
if name==self.ING_TAG:
41
if name=='ingredient-group':
42
self.group=attrs.get('name','')
44
def endElement (self, name):
46
# krecipe-recipe marks a recipe end!
47
if name==self.RECIPE_TAG:
50
if name=='ingredient-group':
52
if name==self.ING_TAG:
54
elif self.RECTAGS.has_key(name):
56
key,method = self.RECTAGS[name]
57
elif self.INGTAGS.has_key(name):
59
key,method = self.INGTAGS[name]
61
if method == self.ADD and obj.has_key(key):
62
obj[key]=obj[key]+", "+self.elbuf
63
elif method == self.AND:
66
elif method == self.BASE_64:
67
obj[key]=base64.b64decode(self.elbuf)
72
class Converter (xml_importer.Converter):
73
def __init__ (self, filename):
74
xml_importer.Converter.__init__(self,filename,KrecHandler,
75
recMarker="</krecipe-recipe>"