Lines Matching refs:self

221     def __init__(self, field):
227 self.specials = '()<>@,:;.\"[]'
228 self.pos = 0
229 self.LWS = ' \t'
230 self.CR = '\r\n'
231 self.FWS = self.LWS + self.CR
232 self.atomends = self.specials + self.LWS + self.CR
236 self.phraseends = self.atomends.replace('.', '')
237 self.field = field
238 self.commentlist = []
240 def gotonext(self):
243 while self.pos < len(self.field):
244 if self.field[self.pos] in self.LWS + '\n\r':
245 if self.field[self.pos] not in '\n\r':
246 wslist.append(self.field[self.pos])
247 self.pos += 1
248 elif self.field[self.pos] == '(':
249 self.commentlist.append(self.getcomment())
254 def getaddrlist(self):
260 while self.pos < len(self.field):
261 ad = self.getaddress()
268 def getaddress(self):
270 self.commentlist = []
271 self.gotonext()
273 oldpos = self.pos
274 oldcl = self.commentlist
275 plist = self.getphraselist()
277 self.gotonext()
280 if self.pos >= len(self.field):
283 returnlist = [(SPACE.join(self.commentlist), plist[0])]
285 elif self.field[self.pos] in '.@':
288 self.pos = oldpos
289 self.commentlist = oldcl
290 addrspec = self.getaddrspec()
291 returnlist = [(SPACE.join(self.commentlist), addrspec)]
293 elif self.field[self.pos] == ':':
297 fieldlen = len(self.field)
298 self.pos += 1
299 while self.pos < len(self.field):
300 self.gotonext()
301 if self.pos < fieldlen and self.field[self.pos] == ';':
302 self.pos += 1
304 returnlist = returnlist + self.getaddress()
306 elif self.field[self.pos] == '<':
308 routeaddr = self.getrouteaddr()
310 if self.commentlist:
312 ' '.join(self.commentlist) + ')', routeaddr)]
318 returnlist = [(SPACE.join(self.commentlist), plist[0])]
319 elif self.field[self.pos] in self.specials:
320 self.pos += 1
322 self.gotonext()
323 if self.pos < len(self.field) and self.field[self.pos] == ',':
324 self.pos += 1
327 def getrouteaddr(self):
332 if self.field[self.pos] != '<':
336 self.pos += 1
337 self.gotonext()
339 while self.pos < len(self.field):
341 self.getdomain()
343 elif self.field[self.pos] == '>':
344 self.pos += 1
346 elif self.field[self.pos] == '@':
347 self.pos += 1
349 elif self.field[self.pos] == ':':
350 self.pos += 1
352 adlist = self.getaddrspec()
353 self.pos += 1
355 self.gotonext()
359 def getaddrspec(self):
363 self.gotonext()
364 while self.pos < len(self.field):
366 if self.field[self.pos] == '.':
370 self.pos += 1
372 elif self.field[self.pos] == '"':
373 aslist.append('"%s"' % quote(self.getquote()))
374 elif self.field[self.pos] in self.atomends:
379 aslist.append(self.getatom())
380 ws = self.gotonext()
384 if self.pos >= len(self.field) or self.field[self.pos] != '@':
388 self.pos += 1
389 self.gotonext()
390 domain = self.getdomain()
397 def getdomain(self):
400 while self.pos < len(self.field):
401 if self.field[self.pos] in self.LWS:
402 self.pos += 1
403 elif self.field[self.pos] == '(':
404 self.commentlist.append(self.getcomment())
405 elif self.field[self.pos] == '[':
406 sdlist.append(self.getdomainliteral())
407 elif self.field[self.pos] == '.':
408 self.pos += 1
410 elif self.field[self.pos] == '@':
414 elif self.field[self.pos] in self.atomends:
417 sdlist.append(self.getatom())
420 def getdelimited(self, beginchar, endchars, allowcomments=True):
424 If self is not looking at an instance of `beginchar' then
433 if self.field[self.pos] != beginchar:
438 self.pos += 1
439 while self.pos < len(self.field):
441 slist.append(self.field[self.pos])
443 elif self.field[self.pos] in endchars:
444 self.pos += 1
446 elif allowcomments and self.field[self.pos] == '(':
447 slist.append(self.getcomment())
449 elif self.field[self.pos] == '\\':
452 slist.append(self.field[self.pos])
453 self.pos += 1
457 def getquote(self):
458 """Get a quote-delimited fragment from self's field."""
459 return self.getdelimited('"', '"\r', False)
461 def getcomment(self):
462 """Get a parenthesis-delimited fragment from self's field."""
463 return self.getdelimited('(', ')\r', True)
465 def getdomainliteral(self):
467 return '[%s]' % self.getdelimited('[', ']\r', False)
469 def getatom(self, atomends=None):
473 (the default is to use self.atomends). This is used e.g. in
478 atomends = self.atomends
480 while self.pos < len(self.field):
481 if self.field[self.pos] in atomends:
484 atomlist.append(self.field[self.pos])
485 self.pos += 1
489 def getphraselist(self):
498 while self.pos < len(self.field):
499 if self.field[self.pos] in self.FWS:
500 self.pos += 1
501 elif self.field[self.pos] == '"':
502 plist.append(self.getquote())
503 elif self.field[self.pos] == '(':
504 self.commentlist.append(self.getcomment())
505 elif self.field[self.pos] in self.phraseends:
508 plist.append(self.getatom(self.phraseends))
514 def __init__(self, field):
515 AddrlistClass.__init__(self, field)
517 self.addresslist = self.getaddrlist()
519 self.addresslist = []
521 def __len__(self):
522 return len(self.addresslist)
524 def __add__(self, other):
527 newaddr.addresslist = self.addresslist[:]
529 if not x in self.addresslist:
533 def __iadd__(self, other):
536 if not x in self.addresslist:
537 self.addresslist.append(x)
538 return self
540 def __sub__(self, other):
543 for x in self.addresslist:
548 def __isub__(self, other):
551 if x in self.addresslist:
552 self.addresslist.remove(x)
553 return self
555 def __getitem__(self, index):
557 return self.addresslist[index]