code: def addMeal(self, date, category, name, notes=None, prices=None):
          
          # check name:
          if not len(name):
              raise ValueError('Meal names must not be empty')
          if len(name) > 250:
              raise ValueError('Meal names must be shorter than 251 characters')
          # check category:
          if not len(category):
              raise ValueError('Category names must not be empty')
          # process notes
          if notes:
              for note in notes:
                  if not len(note):
                      raise ValueError('Note must not be empty. Left it out, if not needed')
          # process prices:
          if prices is None:
              prices = {}
          else:
              for role in prices:
                  if role not in self.allowed_price_roles:
                      raise ValueError('Unknown price role "%s"' % role)
                  if not isinstance(prices[role], int):
                      raise TypeError('Unsupport price type - expect integer')
          # ensure we have an entry for this date
          date = self._handleDate(date)
          if date not in self._days:
              self._days[date] = OrderedDict()
          # ensure we have a category element for this category
          if category not in self._days[date]:
              self._days[date][category] = []
          # add meal into category:
          self._days[date][category].append((name, notes or [], prices))
docs: This is the main helper, it adds a meal to the
              canteen. The following data are needed:
  
              :param datetime.date date: Date for the meal
              :param str category:  Name of the meal category
              :param str meal: Meal name.
  
              :raises ValueError: if the meal name is empty or longer that 250 characters
              :raises ValueError: if the price role is unknown
              :raises ValueError: if the category name is empty
              :raises ValueError: if note list contains empty note
              :raises TypeError: if the price value is not an integer
  
              Additional the following data are also supported:
  
              :param notes: List of notes
              :type notes: list
              :param prices: Price of the meal; Every key must be a string for
                   the role of the persons who can use this tariff; The value is
                   the price in Euro Cents, The site of the OpenMensa project
                   offers more detailed information.
              :type prices: dict