def RegCmd(self, arg_strCmd, arg_strHelpInfo, arg_fCmdProc): oNodeArray = [] oKeywordArray = arg_strCmd.split(' ') #準備待註冊命令的節點串 for strKeyword in oKeywordArray: #新建一個節點 #strKeyword裡可能帶有$、[]等等特殊標識,由Node處理 if 0 < VOS.Len(strKeyword): oNode = CNode.CMD_Node(arg_strKeyword=strKeyword) oNodeArray.append(oNode) #串接起來 self.MakeCmdNodesLink(oNodeArray) def AppendCmdProc(arg_oNodeArray=None, arg_fCmdProc=None): if (None == arg_oNodeArray) or (None == arg_fCmdProc): return def GetLastRequiredNode(arg_oNodeArray=None): for oNode in reversed(arg_oNodeArray): if True == oNode.IsRequired(): return oNode return #獲取最後一個必填節點 oNode = GetLastRequiredNode(arg_oNodeArray) if None != oNode: oNode.m_fCmdProc = arg_fCmdProc return #加上回調函式 AppendCmdProc(oNodeArray, arg_fCmdProc) self.Insert(oNodeArray) return