def _display_name_rfc(self): "Grammar: display-name-rfc -> [ whitespace ] word { whitespace word }" wrds = [] # optional whitespace self._whitespace() # word wrd = self._word() if wrd is None: return None wrds.append(wrd) while True: # whitespace wtsp = self._whitespace() if wtsp is None: break wrds.append(wtsp) # word wrd = self._word() if wrd is None: break wrds.append(wrd) return cleanup_display_name(''.join(wrds))
def _display_name_rfc(self): """ Grammar: display-name-rfc -> [ whitespace ] word { whitespace word } """ wrds = [] # optional whitespace self._whitespace() # word wrd = self._word() if wrd is None: return None wrds.append(wrd) while True: # whitespace wtsp = self._whitespace() if wtsp is None: break wrds.append(wtsp) # word wrd = self._word() if wrd is None: break wrds.append(wrd) concatenator = b'' if isinstance(self.stream, str) else u'' return cleanup_display_name(concatenator.join(wrds))
def _display_name_lax(self): """ Grammar: display-name-lax -> [ whitespace ] word { whitespace word } whitespace """ start_pos = self.stream.position wrds = [] # optional whitespace self._whitespace() # word wrd = self._word() if wrd is None: # roll back self.stream.position = start_pos return None wrds.append(wrd) # peek to see if we have a whitespace, # if we don't, we have a invalid display-name ws = self.stream.peek(WHITESPACE) uws = self.stream.peek(UNI_WHITE) if (ws is None or len(ws) == 0) and (uws is None or len(uws) == 0): self.stream.position = start_pos return None while True: # whitespace wtsp = self._whitespace() if wtsp: wrds.append(wtsp) # if we need to roll back the next word start_pos = self.stream.position # word wrd = self._word() if wrd is None: self.stream.position = start_pos break wrds.append(wrd) # peek to see if we have a whitespace # if we don't pop off the last word break ws = self.stream.peek(WHITESPACE) uws = self.stream.peek(UNI_WHITE) if (ws is None or len(ws) == 0) and (uws is None or len(uws) == 0): # roll back last word self.stream.position = start_pos wrds.pop() break concatenator = b'' if isinstance(self.stream, str) else u'' return cleanup_display_name(concatenator.join(wrds))
def _display_name_lax(self): ''' Grammar: display-name-lax -> [ whitespace ] word { whitespace word } whitespace" ''' start_pos = self.stream.position wrds = [] # optional whitespace self._whitespace() # word wrd = self._word() if wrd is None: # roll back self.stream.position = start_pos return None wrds.append(wrd) # peek to see if we have a whitespace, # if we don't, we have a invalid display-name if self.stream.peek(WHITESPACE) is None or \ self.stream.peek(UNI_WHITE) is None: self.stream.position = start_pos return None while True: # whitespace wtsp = self._whitespace() if wtsp: wrds.append(wtsp) # if we need to roll back the next word start_pos = self.stream.position # word wrd = self._word() if wrd is None: self.stream.position = start_pos break wrds.append(wrd) # peek to see if we have a whitespace # if we don't pop off the last word break if self.stream.peek(WHITESPACE) is None or \ self.stream.peek(UNI_WHITE) is None: # roll back last word self.stream.position = start_pos wrds.pop() break return cleanup_display_name(''.join(wrds))