示例#1
0
    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))
示例#2
0
    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))
示例#3
0
    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))
示例#4
0
    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))
示例#5
0
    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))
示例#6
0
    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))