-FILENAME="snacks.conf"
-
-def parse_line( l ):
- toks = l.strip().split()
- if not len( toks ):
- return
-
- if toks[0][:1] == '#':
- return
-
- if len( toks ) < 4:
- raise VendingException( "Bad line '%s' in snack config file, too few items" % l )
-
- # price
- try:
- price = int( toks[0] )
- except ValueError:
- raise VendingException( "Bad line '%s' in snack config file, bad price" % l)
-
- # slots
- slots = toks[1].split(",")
- for s in slots:
- if len(s) != 2:
- raise VendingException( "Bad line %s' in snack config file, bad slot '%s'" % (l, s) )
-
- # shortname for dispense
- shortname = toks[2]
-
- # name
- name = ' '.join( toks[3:] )
-
- return ( price, slots, shortname, name )
-
-def get_snacks( filename = FILENAME ):
-
- snacks = []
- try:
- f = file( filename )
- snacks = filter( bool, map( parse_line, f ) )
- except IOError, e:
- raise VendingException( e )
-
- ret = {}
- for price, slots, shortname, name in snacks:
- for s in slots:
- ret[s] = (price, shortname, name)
-
- return ret