示例#1
0
 def _init(self, keymap):
     keysyms = "".join(keymap.keys())
     f = FSM(0)
     f.add_default_transition(self._error, 0)
     # key code names are in angle brackets
     f.add_transition_list(ascii.lowercase, 0, self._lower, 0)
     f.add_transition_list(ascii.uppercase, 0, self._upper, 0)
     f.add_transition_list(ascii.digits, 0, self._digit, 0)
     f.add_transition_list(keysyms, 0, self._symbols, 0)
     f.add_transition_list(ascii.control, 0, self._control, 0)
     f.add_transition(" ", 0, self._space, 0)
     # Any key name may use the "<NAME>" syntax (without the "KEY_")
     f.add_transition('<', 0, self._startkeycode, 2)
     f.add_transition_list(ascii.uppercase, 2, self._keyname, 2)
     f.add_transition('>', 2, self._keycode, 0)
     # slashes escape any special character.
     f.add_transition("\\", 0, None, 1)
     f.add_transition("\\", 1, self._backslash, 0)
     f.add_transition_list("tnrbe", 1, self._specials, 0)
     f.add_transition_list(keysyms, 1, self._symbols, 0)
     # percent signals meta transitions.
     f.add_transition("%", 0, None, 3)
     f.add_transition("%", 3, self._symbols, 0)
     f.add_transition_list("CcSsAaMmOo", 3, self._stickies, 0)
     self._fsm = f
示例#2
0
 def __init__(self):
     self._seconds = 0.0
     f = FSM(0)
     f.arg = ""
     f.add_default_transition(self._error, 0)
     f.add_transition_list(textutils.digits + "+-", 0, self._newdigit, 1)
     f.add_transition_list(textutils.digits, 1, self._addtext, 1)
     f.add_transition(".", 1, self._addtext, 2)
     f.add_transition_list(textutils.digits, 2, self._addtext, 2)
     f.add_transition_list("dhms", 1, self._multiplier, 3)
     f.add_transition_list("dhms", 2, self._multiplier, 3)
     f.add_transition_list(textutils.letters, 3, None, 3)
     f.add_transition_list(textutils.whitespace, 3, None, 3)
     f.add_transition_list(textutils.digits + "+-", 3, self._newdigit, 1)
     self._fsm = f
示例#3
0
文件: UI.py 项目: bharathi26/pycopia
 def _initfsm(self):
     # maps percent-expansion items to some value.
     self._EXPANSIONS = {
                 "I":self._theme.BRIGHT, 
                 "N":self._theme.NORMAL, 
                 "D":self._theme.DEFAULT,
                 "R":self._theme.BRIGHTRED, 
                 "G":self._theme.BRIGHTGREEN, 
                 "Y":self._theme.BRIGHTYELLOW,
                 "B":self._theme.BRIGHTBLUE, 
                 "M":self._theme.BRIGHTMAGENTA, 
                 "C":self._theme.BRIGHTCYAN, 
                 "W":self._theme.BRIGHTWHITE, 
                 "r":self._theme.RED, 
                 "g":self._theme.GREEN, 
                 "y":self._theme.YELLOW,
                 "b":self._theme.BLUE, 
                 "m":self._theme.MAGENTA, 
                 "c":self._theme.CYAN, 
                 "w":self._theme.WHITE, 
                 "n":"\n", "h":self._hostname, "u":self._username, 
                 "$": self._priv, "d":self._cwd, "L": self._shlvl, "t":self._time, 
                 "T":self._date}
     f = FSM(0)
     f.add_default_transition(self._error, 0)
     # add text to args
     f.add_transition(ANY, 0, self._addtext, 0)
     # percent escapes
     f.add_transition("%", 0, None, 1)
     f.add_transition("%", 1, self._addtext, 0)
     f.add_transition("{", 1, self._startvar, 2)
     f.add_transition("}", 2, self._endvar, 0)
     f.add_transition(ANY, 2, self._vartext, 2)
     f.add_transition(ANY, 1, self._expand, 0)
     f.arg = ''
     self._fsm = f
示例#4
0
文件: CLI.py 项目: kdart/pycopia3
    def initialize(self):
        """initializer.

        Responsible for setting self._fsm to a parser FSM implementing the
        CLI syntax.
        """
        f = FSM(0)
        f.arg = ""
        f.add_default_transition(self._error, 0)
        # normally add text to args
        f.add_transition(ANY, 0, self._addtext, 0)
        f.add_transition_list(" \t", 0, self._wordbreak, 0)
        f.add_transition_list(";\n", 0, self._doit, 0)
        # slashes
        f.add_transition("\\", 0, None, 1)
        f.add_transition("\\", 3, None, 6)
        f.add_transition(ANY, 1, self._slashescape, 0)
        f.add_transition(ANY, 6, self._slashescape, 3)
        # vars
        f.add_transition("$", 0, self._startvar, 7)
        f.add_transition("{", 7, self._vartext, 9)
        f.add_transition_list(self.VARCHARS, 7, self._vartext, 7)
        f.add_transition(ANY, 7, self._endvar, 0)
        f.add_transition("}", 9, self._endvar, 0)
        f.add_transition(ANY, 9, self._vartext, 9)
        # vars in singlequote
        f.add_transition("$", 3, self._startvar, 8)
        f.add_transition("{", 8, self._vartext, 10)
        f.add_transition_list(self.VARCHARS, 8, self._vartext, 8)
        f.add_transition(ANY, 8, self._endvar, 3)
        f.add_transition("}", 10, self._endvar, 3)
        f.add_transition(ANY, 10, self._vartext, 10)

        # single quotes quote all
        f.add_transition("'", 0, None, 2)
        f.add_transition("'", 2, self._singlequote, 0)
        f.add_transition(ANY, 2, self._addtext, 2)
        # double quotes allow embedding word breaks and such
        f.add_transition('"', 0, None, 3)
        f.add_transition('"', 3, self._doublequote, 0)
        f.add_transition(ANY, 3, self._addtext, 3)
        # single-quotes withing double quotes
        f.add_transition("'", 3, None, 5)
        f.add_transition("'", 5, self._singlequote, 3)
        f.add_transition(ANY, 5, self._addtext, 5)
        # back-tick substitution
        f.add_transition("`", 0, None, 12)
        f.add_transition(ANY, 12, self._addtext, 12)
        f.add_transition("`", 12, self._do_backtick, 0)
        self._fsm = f
示例#5
0
文件: UI.py 项目: kdart/pycopia3
    def _initfsm(self):
        # maps percent-expansion items to some value.
        theme = self._theme
        # Used in prompt strings given to readline library.
        self._PROMPT_EXPANSIONS = {
            "I": PROMPT_START_IGNORE + theme.BRIGHT + PROMPT_END_IGNORE,
            "N": PROMPT_START_IGNORE + theme.NORMAL + PROMPT_END_IGNORE,
            "D": PROMPT_START_IGNORE + theme.DEFAULT + PROMPT_END_IGNORE,
            "R": PROMPT_START_IGNORE + theme.BRIGHTRED + PROMPT_END_IGNORE,
            "G": PROMPT_START_IGNORE + theme.BRIGHTGREEN + PROMPT_END_IGNORE,
            "Y": PROMPT_START_IGNORE + theme.BRIGHTYELLOW + PROMPT_END_IGNORE,
            "B": PROMPT_START_IGNORE + theme.BRIGHTBLUE + PROMPT_END_IGNORE,
            "M": PROMPT_START_IGNORE + theme.BRIGHTMAGENTA + PROMPT_END_IGNORE,
            "C": PROMPT_START_IGNORE + theme.BRIGHTCYAN + PROMPT_END_IGNORE,
            "W": PROMPT_START_IGNORE + theme.BRIGHTWHITE + PROMPT_END_IGNORE,
            "r": PROMPT_START_IGNORE + theme.RED + PROMPT_END_IGNORE,
            "g": PROMPT_START_IGNORE + theme.GREEN + PROMPT_END_IGNORE,
            "y": PROMPT_START_IGNORE + theme.YELLOW + PROMPT_END_IGNORE,
            "b": PROMPT_START_IGNORE + theme.BLUE + PROMPT_END_IGNORE,
            "m": PROMPT_START_IGNORE + theme.MAGENTA + PROMPT_END_IGNORE,
            "c": PROMPT_START_IGNORE + theme.CYAN + PROMPT_END_IGNORE,
            "w": PROMPT_START_IGNORE + theme.WHITE + PROMPT_END_IGNORE,
            "n": "\n",
            "l": self._tty,
            "h": self._hostname,
            "u": self._username,
            "$": self._priv,
            "d": self._cwd,
            "L": self._shlvl,
            "t": self._time,
            "T": self._date,
            }

        self._FORMAT_EXPANSIONS = {
            "I": theme.BRIGHT,
            "N": theme.NORMAL,
            "D": theme.DEFAULT,
            "R": theme.BRIGHTRED,
            "G": theme.BRIGHTGREEN,
            "Y": theme.BRIGHTYELLOW,
            "B": theme.BRIGHTBLUE,
            "M": theme.BRIGHTMAGENTA,
            "C": theme.BRIGHTCYAN,
            "W": theme.BRIGHTWHITE,
            "r": theme.RED,
            "g": theme.GREEN,
            "y": theme.YELLOW,
            "b": theme.BLUE,
            "m": theme.MAGENTA,
            "c": theme.CYAN,
            "w": theme.WHITE,
            "n": "\n",
            "l": self._tty,
            "h": self._hostname,
            "u": self._username,
            "$": self._priv,
            "d": self._cwd,
            "L": self._shlvl,
            "t": self._time,
            "T": self._date,
            }

        fp = FSM(0)
        fp.add_default_transition(self._error, 0)
        # add text to args
        fp.add_transition(ANY, 0, self._addtext, 0)
        # percent escapes
        fp.add_transition("%", 0, None, 1)
        fp.add_transition("%", 1, self._addtext, 0)
        fp.add_transition("{", 1, self._startvar, 2)
        fp.add_transition("}", 2, self._endvar, 0)
        fp.add_transition(ANY, 2, self._vartext, 2)
        fp.add_transition(ANY, 1, self._prompt_expand, 0)
        fp.arg = ''
        self._fsm = fp

        ff = FSM(0)
        ff.add_default_transition(self._error, 0)
        # add text to args
        ff.add_transition(ANY, 0, self._addtext, 0)
        # percent escapes
        ff.add_transition("%", 0, None, 1)
        ff.add_transition("%", 1, self._addtext, 0)
        ff.add_transition("{", 1, self._startvar, 2)
        ff.add_transition("}", 2, self._endvar, 0)
        ff.add_transition(ANY, 2, self._vartext, 2)
        ff.add_transition(ANY, 1, self._format_expand, 0)
        ff.arg = ''
        self._ffsm = ff
示例#6
0
 def _init(self, keymap):
     keysyms = "".join(keymap.keys())
     f = FSM(0)
     f.add_default_transition(self._error, 0)
     # key code names are in angle brackets
     f.add_transition_list(ascii.lowercase, 0, self._lower, 0)
     f.add_transition_list(ascii.uppercase, 0, self._upper, 0)
     f.add_transition_list(ascii.digits, 0, self._digit, 0)
     f.add_transition_list(keysyms, 0, self._symbols, 0)
     f.add_transition_list(ascii.control, 0, self._control, 0)
     f.add_transition(" ", 0, self._space, 0)
     # Any key name may use the "<NAME>" syntax (without the "KEY_")
     f.add_transition('<', 0, self._startkeycode, 2)
     f.add_transition_list(ascii.uppercase, 2, self._keyname, 2)
     f.add_transition('>', 2, self._keycode, 0)
     # slashes escape any special character.
     f.add_transition("\\", 0, None, 1)
     f.add_transition("\\", 1, self._backslash, 0)
     f.add_transition_list("tnrbe", 1, self._specials, 0)
     f.add_transition_list(keysyms, 1, self._symbols, 0)
     # percent signals meta transitions.
     f.add_transition("%", 0, None, 3)
     f.add_transition("%", 3, self._symbols, 0)
     f.add_transition_list("CcSsAaMmOo", 3, self._stickies, 0)
     self._fsm = f
示例#7
0
 def _init(self):
     f = FSM(0)
     f.arg = ""
     f.add_default_transition(self._error, 0)
     # normally add text to args
     f.add_transition(ANY, 0, self._addtext, 0)
     f.add_transition_list(" \t", 0, self._wordbreak, 0)
     f.add_transition_list(";\n", 0, self._doit, 0)
     # slashes
     f.add_transition("\\", 0, None, 1)
     f.add_transition("\\", 3, None, 6)
     f.add_transition(ANY, 1, self._slashescape, 0)
     f.add_transition(ANY, 6, self._slashescape, 3)
     # vars 
     f.add_transition("$", 0, self._startvar, 7)
     f.add_transition("{", 7, self._vartext, 9)
     f.add_transition_list(self.VARNAME, 7, self._vartext, 7)
     f.add_transition(ANY, 7, self._endvar, 0)
     f.add_transition("}", 9, self._endvarbrace, 0)
     f.add_transition(ANY, 9, self._vartext, 9)
     # vars in singlequote
     f.add_transition("$", 3, self._startvar, 8)
     f.add_transition("{", 8, self._vartext, 10)
     f.add_transition_list(self.VARNAME, 8, self._vartext, 8)
     f.add_transition(ANY, 8, self._endvar, 3)
     f.add_transition("}", 10, self._endvarbrace, 3)
     f.add_transition(ANY, 10, self._vartext, 10)
     # quotes allow embedding word breaks and such.
     # Single quotes can quote double quotes, and vice versa.
     f.add_transition("'", 0, None, 2)
     f.add_transition("'", 2, self._singlequote, 0)
     f.add_transition(ANY, 2, self._addtext, 2)
     f.add_transition('"', 0, None, 3)
     f.add_transition('"', 3, self._doublequote, 0)
     f.add_transition(ANY, 3, self._addtext, 3)
     self._fsm = f
示例#8
0
    def initialize(self):
        """initializer.

        Responsible for setting self._fsm to a parser FSM implementing the
        CLI syntax.
        """
        f = FSM(0)
        f.arg = ""
        f.add_default_transition(self._error, 0)
        # normally add text to args
        f.add_transition(ANY, 0, self._addtext, 0)
        f.add_transition_list(" \t", 0, self._wordbreak, 0)
        f.add_transition_list(";\n", 0, self._doit, 0)
        # slashes
        f.add_transition("\\", 0, None, 1)
        f.add_transition("\\", 3, None, 6)
        f.add_transition(ANY, 1, self._slashescape, 0)
        f.add_transition(ANY, 6, self._slashescape, 3)
        # vars
        f.add_transition("$", 0, self._startvar, 7)
        f.add_transition("{", 7, self._vartext, 9)
        f.add_transition_list(self.VARCHARS, 7, self._vartext, 7)
        f.add_transition(ANY, 7, self._endvar, 0)
        f.add_transition("}", 9, self._endvar, 0)
        f.add_transition(ANY, 9, self._vartext, 9)
        # vars in singlequote
        f.add_transition("$", 3, self._startvar, 8)
        f.add_transition("{", 8, self._vartext, 10)
        f.add_transition_list(self.VARCHARS, 8, self._vartext, 8)
        f.add_transition(ANY, 8, self._endvar, 3)
        f.add_transition("}", 10, self._endvar, 3)
        f.add_transition(ANY, 10, self._vartext, 10)

        # single quotes quote all
        f.add_transition("'", 0, None, 2)
        f.add_transition("'", 2, self._singlequote, 0)
        f.add_transition(ANY, 2, self._addtext, 2)
        # double quotes allow embedding word breaks and such
        f.add_transition('"', 0, None, 3)
        f.add_transition('"', 3, self._doublequote, 0)
        f.add_transition(ANY, 3, self._addtext, 3)
        # single-quotes withing double quotes
        f.add_transition("'", 3, None, 5)
        f.add_transition("'", 5, self._singlequote, 3)
        f.add_transition(ANY, 5, self._addtext, 5)
        # back-tick substitution
        f.add_transition("`", 0, None, 12)
        f.add_transition(ANY, 12, self._addtext, 12)
        f.add_transition("`", 12, self._do_backtick, 0)
        self._fsm = f
示例#9
0
 def __init__(self):
     self._seconds = 0.0
     f = FSM(0)
     f.arg = ""
     f.add_default_transition(self._error, 0)
     f.add_transition_list(textutils.digits + "+-", 0, self._newdigit, 1)
     f.add_transition_list(textutils.digits, 1, self._addtext, 1)
     f.add_transition(".", 1, self._addtext, 2)
     f.add_transition_list(textutils.digits, 2, self._addtext, 2)
     f.add_transition_list("dhms", 1, self._multiplier, 3)
     f.add_transition_list("dhms", 2, self._multiplier, 3)
     f.add_transition_list(textutils.letters, 3, None, 3)
     f.add_transition_list(textutils.whitespace, 3, None, 3)
     f.add_transition_list(textutils.digits + "+-", 3, self._newdigit, 1)
     self._fsm = f
示例#10
0
文件: UI.py 项目: tijmengit/pycopia
 def _initfsm(self):
     # maps percent-expansion items to some value.
     self._EXPANSIONS = {
         "I": self._theme.BRIGHT,
         "N": self._theme.NORMAL,
         "D": self._theme.DEFAULT,
         "R": self._theme.BRIGHTRED,
         "G": self._theme.BRIGHTGREEN,
         "Y": self._theme.BRIGHTYELLOW,
         "B": self._theme.BRIGHTBLUE,
         "M": self._theme.BRIGHTMAGENTA,
         "C": self._theme.BRIGHTCYAN,
         "W": self._theme.BRIGHTWHITE,
         "r": self._theme.RED,
         "g": self._theme.GREEN,
         "y": self._theme.YELLOW,
         "b": self._theme.BLUE,
         "m": self._theme.MAGENTA,
         "c": self._theme.CYAN,
         "w": self._theme.WHITE,
         "n": "\n",
         "h": self._hostname,
         "u": self._username,
         "$": self._priv,
         "d": self._cwd,
         "L": self._shlvl,
         "t": self._time,
         "T": self._date
     }
     f = FSM(0)
     f.add_default_transition(self._error, 0)
     # add text to args
     f.add_transition(ANY, 0, self._addtext, 0)
     # percent escapes
     f.add_transition("%", 0, None, 1)
     f.add_transition("%", 1, self._addtext, 0)
     f.add_transition("{", 1, self._startvar, 2)
     f.add_transition("}", 2, self._endvar, 0)
     f.add_transition(ANY, 2, self._vartext, 2)
     f.add_transition(ANY, 1, self._expand, 0)
     f.arg = ''
     self._fsm = f
示例#11
0
    def _initfsm(self):
        # maps percent-expansion items to some value.
        theme = self._theme
        # Used in prompt strings given to readline library.
        self._PROMPT_EXPANSIONS = {
            "I": PROMPT_START_IGNORE + theme.BRIGHT + PROMPT_END_IGNORE,
            "N": PROMPT_START_IGNORE + theme.NORMAL + PROMPT_END_IGNORE,
            "D": PROMPT_START_IGNORE + theme.DEFAULT + PROMPT_END_IGNORE,
            "R": PROMPT_START_IGNORE + theme.BRIGHTRED + PROMPT_END_IGNORE,
            "G": PROMPT_START_IGNORE + theme.BRIGHTGREEN + PROMPT_END_IGNORE,
            "Y": PROMPT_START_IGNORE + theme.BRIGHTYELLOW + PROMPT_END_IGNORE,
            "B": PROMPT_START_IGNORE + theme.BRIGHTBLUE + PROMPT_END_IGNORE,
            "M": PROMPT_START_IGNORE + theme.BRIGHTMAGENTA + PROMPT_END_IGNORE,
            "C": PROMPT_START_IGNORE + theme.BRIGHTCYAN + PROMPT_END_IGNORE,
            "W": PROMPT_START_IGNORE + theme.BRIGHTWHITE + PROMPT_END_IGNORE,
            "r": PROMPT_START_IGNORE + theme.RED + PROMPT_END_IGNORE,
            "g": PROMPT_START_IGNORE + theme.GREEN + PROMPT_END_IGNORE,
            "y": PROMPT_START_IGNORE + theme.YELLOW + PROMPT_END_IGNORE,
            "b": PROMPT_START_IGNORE + theme.BLUE + PROMPT_END_IGNORE,
            "m": PROMPT_START_IGNORE + theme.MAGENTA + PROMPT_END_IGNORE,
            "c": PROMPT_START_IGNORE + theme.CYAN + PROMPT_END_IGNORE,
            "w": PROMPT_START_IGNORE + theme.WHITE + PROMPT_END_IGNORE,
            "n": "\n",
            "l": self._tty,
            "h": self._hostname,
            "u": self._username,
            "$": self._priv,
            "d": self._cwd,
            "L": self._shlvl,
            "t": self._time,
            "T": self._date,
        }

        self._FORMAT_EXPANSIONS = {
            "I": theme.BRIGHT,
            "N": theme.NORMAL,
            "D": theme.DEFAULT,
            "R": theme.BRIGHTRED,
            "G": theme.BRIGHTGREEN,
            "Y": theme.BRIGHTYELLOW,
            "B": theme.BRIGHTBLUE,
            "M": theme.BRIGHTMAGENTA,
            "C": theme.BRIGHTCYAN,
            "W": theme.BRIGHTWHITE,
            "r": theme.RED,
            "g": theme.GREEN,
            "y": theme.YELLOW,
            "b": theme.BLUE,
            "m": theme.MAGENTA,
            "c": theme.CYAN,
            "w": theme.WHITE,
            "n": "\n",
            "l": self._tty,
            "h": self._hostname,
            "u": self._username,
            "$": self._priv,
            "d": self._cwd,
            "L": self._shlvl,
            "t": self._time,
            "T": self._date,
        }

        fp = FSM(0)
        fp.add_default_transition(self._error, 0)
        # add text to args
        fp.add_transition(ANY, 0, self._addtext, 0)
        # percent escapes
        fp.add_transition("%", 0, None, 1)
        fp.add_transition("%", 1, self._addtext, 0)
        fp.add_transition("{", 1, self._startvar, 2)
        fp.add_transition("}", 2, self._endvar, 0)
        fp.add_transition(ANY, 2, self._vartext, 2)
        fp.add_transition(ANY, 1, self._prompt_expand, 0)
        fp.arg = ''
        self._fsm = fp

        ff = FSM(0)
        ff.add_default_transition(self._error, 0)
        # add text to args
        ff.add_transition(ANY, 0, self._addtext, 0)
        # percent escapes
        ff.add_transition("%", 0, None, 1)
        ff.add_transition("%", 1, self._addtext, 0)
        ff.add_transition("{", 1, self._startvar, 2)
        ff.add_transition("}", 2, self._endvar, 0)
        ff.add_transition(ANY, 2, self._vartext, 2)
        ff.add_transition(ANY, 1, self._format_expand, 0)
        ff.arg = ''
        self._ffsm = ff
示例#12
0
 def _init(self):
     f = FSM(0)
     f.arg = ""
     f.add_default_transition(self._error, 0)
     # normally add text to args
     f.add_transition(ANY, 0, self._addtext, 0)
     f.add_transition_list(" \t", 0, self._wordbreak, 0)
     f.add_transition_list(";\n", 0, self._doit, 0)
     # slashes
     f.add_transition("\\", 0, None, 1)
     f.add_transition("\\", 3, None, 6)
     f.add_transition(ANY, 1, self._slashescape, 0)
     f.add_transition(ANY, 6, self._slashescape, 3)
     # vars
     f.add_transition("$", 0, self._startvar, 7)
     f.add_transition("{", 7, self._vartext, 9)
     f.add_transition_list(self.VARNAME, 7, self._vartext, 7)
     f.add_transition(ANY, 7, self._endvar, 0)
     f.add_transition("}", 9, self._endvarbrace, 0)
     f.add_transition(ANY, 9, self._vartext, 9)
     # vars in singlequote
     f.add_transition("$", 3, self._startvar, 8)
     f.add_transition("{", 8, self._vartext, 10)
     f.add_transition_list(self.VARNAME, 8, self._vartext, 8)
     f.add_transition(ANY, 8, self._endvar, 3)
     f.add_transition("}", 10, self._endvarbrace, 3)
     f.add_transition(ANY, 10, self._vartext, 10)
     # quotes allow embedding word breaks and such.
     # Single quotes can quote double quotes, and vice versa.
     f.add_transition("'", 0, None, 2)
     f.add_transition("'", 2, self._singlequote, 0)
     f.add_transition(ANY, 2, self._addtext, 2)
     f.add_transition('"', 0, None, 3)
     f.add_transition('"', 3, self._doublequote, 0)
     f.add_transition(ANY, 3, self._addtext, 3)
     self._fsm = f