Exemple #1
0
class LinkTitle(modgrammar.Grammar):
    """Defines the grammar for a link title."""
    grammar = (modgrammar.WORD(startchars='^")' + modgrammar.util.EOL_CHARS,
                               escapes=True,
                               fullmatch=True))

    def grammar_elem_init(self, sessiondata):
        """Saves the text for later use."""
        self.text = self[0].string
Exemple #2
0
class Link(modgrammar.Grammar):
    """Defines the grammar for a link."""
    grammar = (modgrammar.L("["),
               modgrammar.WORD(startchars="^]`*" + modgrammar.util.EOL_CHARS,
                               fullmatch=True), modgrammar.L("]("),
               modgrammar.WORD(startchars="^\s)", escapes=True,
                               fullmatch=True),
               modgrammar.OPTIONAL(modgrammar.L(' "'), LinkTitle,
                                   modgrammar.L('"')), modgrammar.L(")"))

    def grammar_elem_init(self, sessiondata):
        """Saves the text for later use."""
        self.text = self[1].string
        self.attributes = {"href": self[3].string}
        link_title = self.find(LinkTitle)
        if link_title is not None:
            self.attributes["title"] = link_title.text
        self.tag = "a"
Exemple #3
0
class InlineCode(modgrammar.Grammar):
    """Defines the grammar for inline code segments."""
    grammar = (modgrammar.L("`"),
               modgrammar.WORD("^`" + modgrammar.util.EOL_CHARS,
                               fullmatch=True), modgrammar.L("`"))

    def grammar_elem_init(self, sessiondata):
        """Saves the text for later use."""
        self.text = html.escape(self[1].string)
        self.tag = "code"
Exemple #4
0
class Italic(modgrammar.Grammar):
    """Defines the grammar for italic text."""
    grammar = (modgrammar.L("*"),
               modgrammar.WORD("^*" + modgrammar.util.EOL_CHARS,
                               fullmatch=True), modgrammar.L("*"))

    def grammar_elem_init(self, sessiondata):
        """Saves the text for later use."""
        self.text = self[1].string
        self.tag = "i"
Exemple #5
0
class SelfIdentifyingHeader(modgrammar.Grammar):
    grammar_whitespace_mode = 'explicit'
    grammar = (modgrammar.LITERAL("#JSGF"), modgrammar.WHITESPACE,
               modgrammar.WORD("A-Za-z0-9._\-"),
               modgrammar.OPTIONAL(modgrammar.WHITESPACE, modgrammar.WORD("A-Za-z0-9._\-")),
               modgrammar.OPTIONAL(modgrammar.WHITESPACE, modgrammar.WORD("A-Za-z0-9._\-")),
               modgrammar.LITERAL(";"), modgrammar.LITERAL('\n'))

    def grammar_elem_init(self, session_data):
        self.version = self[2].string

        if self[3] is not None:
            self.encoding = self[3][1].string
        else:
            self.encoding = None

        if self[4] is not None:
            self.locale = self[4][1].string
        else:
            self.locale = None
Exemple #6
0
class OrderedListItem(modgrammar.Grammar):
    """Defines the grammar for an unordered list item."""
    grammar = (modgrammar.BOL, modgrammar.WORD(startchars="0-9",
                                               fullmatch=True),
               modgrammar.L(". "),
               modgrammar.REPEAT(modgrammar.OR(Bold, Italic, InlineCode, Link,
                                               AutomaticLink, SimpleText),
                                 collapse=True))

    def grammar_elem_init(self, sessiondata):
        """Saves the text for later use."""
        self.tag = "li"
Exemple #7
0
class AutomaticLink(modgrammar.Grammar):
    """Defines the grammar for an automatic link."""
    grammar = (modgrammar.L("<"),
               modgrammar.WORD(startchars="^[>\s`*",
                               escapes=True,
                               fullmatch=True), modgrammar.L(">"))

    def grammar_elem_init(self, sessiondata):
        """Saves the text for later use."""
        self.text = self[1].string
        self.attributes = {"href": self[1].string}
        self.tag = "a"
Exemple #8
0
class SimpleText(modgrammar.Grammar):
    """Defines the grammar for simple text."""
    grammar = (modgrammar.REPEAT(SingleWhitespace, min=0, max=3,
                                 collapse=True),
               modgrammar.WORD(startchars="^\s#>*[`",
                               restchars="^*[<`" + modgrammar.util.EOL_CHARS,
                               escapes=True,
                               fullmatch=True))

    def grammar_elem_init(self, sessiondata):
        """Saves the text for later use."""
        spaces = ""
        for elem in self.find_all(SingleWhitespace):
            spaces += elem.string
        self.text = spaces + self[1].string
        self.tag = "text"
Exemple #9
0
class AlternativeWeight(modgrammar.Grammar):
    grammar_whitespace_mode = 'explicit'
    grammar = (modgrammar.L("/"), modgrammar.WORD("0-9.", "0-9.ef"), modgrammar.LITERAL("/"), modgrammar.WHITESPACE)

    def grammar_elem_init(self, session_data):
        self.value = self[1].string
Exemple #10
0
class Word3(mg.Grammar):
    '''A word with & and - included.'''
    # hyphenated word or abbreviations
    grammar = (Word2, mg.OPTIONAL(mg.WORD("&-"), Word2))
Exemple #11
0
class Year(mg.Grammar):
    '''parse a 4 digit year.'''
    grammar = (mg.WORD('0-9', count=4))
Exemple #12
0
class TwoDigit(mg.Grammar):
    '''Parse a two digit number.'''
    grammar = (mg.WORD('0-9', count=2))
    grammar_collapse = True
Exemple #13
0
class Digit(mg.Grammar):
    '''Parse single digit number.'''
    grammar = (mg.WORD("0-9", count=1))
    grammar_collapse = True
Exemple #14
0
class String(mg.Grammar):
    grammar = mg.WORD(STRING_CHARS)

    def value(self):
        return self.string.strip()
Exemple #15
0
class PosInteger(mg.Grammar):
    grammar = mg.WORD(NZ_DIGIT_CHARS, DIGIT_CHARS)

    def value(self):
        return int(self.string)
Exemple #16
0
class NonNegInteger(mg.Grammar):
    grammar = mg.WORD(DIGIT_CHARS)

    def value(self):
        return int(self.string)
Exemple #17
0
class JavaIdentifier(modgrammar.Grammar):
    grammar_whitespace_mode = 'explicit'
    grammar = (modgrammar.WORD("A-Za-z$", "A-Za-z0-9_$"))

    def grammar_elem_init(self, session_data):
        self.value = self[0].string
Exemple #18
0
class Phrase(mg.Grammar):
    grammar = mg.WORD(PHRASE_CHARS)

    def value(self):
        return self.string.strip()