Changeset 441
- Timestamp:
- 08/25/2011 05:05:49 PM (11 years ago)
- Location:
- SHX/trunk
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
SHX/trunk/SeismicHandler/basics/command.py
r439 r441 91 91 pass 92 92 93 msgs.sendMessage("log.debug.command", m sg=self.__class__.__name__)93 msgs.sendMessage("log.debug.command", message=self.__class__.__name__) 94 94 95 95 if hasattr(self, "run"): -
SHX/trunk/SeismicHandler/basics/error.py
r437 r441 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # Copyright (C) 2008-201 0Marcus Walther (walther@szgrf.bgr.de)3 # Copyright (C) 2008-2011 Marcus Walther (walther@szgrf.bgr.de) 4 4 # 5 5 # This file is part of Seismic Handler eXtended (SHX) … … 23 23 24 24 from SeismicHandler.modules.messages import MessageSystem as msgs 25 from SeismicHandler.basics import Singleton26 25 27 __all__ = ['ShxError' , 'ShxWarning']26 __all__ = ['ShxError'] 28 27 29 28 class Error(Exception): … … 32 31 """ 33 32 34 __metaclass__ = Singleton35 36 33 def __init__(self): 37 try:38 level = self.level39 except AttributeError:40 level = "debug"41 42 34 # log message 43 msgs.sendMessage("log. %s" % level, msg=str(self))35 msgs.sendMessage("log.error", message=str(self)) 44 36 45 37 def __str__(self): … … 55 47 def __init__(self, value): 56 48 self.value = value 57 self.level = "error"58 49 Error.__init__(self) 59 50 60 51 61 class ShxWarning(Error):62 """63 Standard warning.64 """65 66 def __init__(self, value):67 self.value = value68 self.level = "warning"69 Error.__init__(self)70 71 72 52 if __name__ == "__main__": 73 53 try: 74 raise Shx Warning("test")54 raise ShxError("test") 75 55 except: 76 56 pass -
SHX/trunk/SeismicHandler/modules/parse.py
r435 r441 35 35 from SeismicHandler.basics.error import ShxError 36 36 from SeismicHandler.config import Settings 37 38 class parse(object): 37 from SeismicHandler.modules.messages import MessageSystem as msgs 38 39 40 class Parse(object): 39 41 """ 40 42 Parse SH scripting language. … … 53 55 The parser analyses the command string: 54 56 >>> cmd = 'COMMAND /SWITCH1 PARAMETER1 /SWITCH2=4 PARAMETER2' 55 >>> x = parse(cmd).parsed57 >>> x = Parse(cmd).parsed 56 58 57 59 The parsed command name is always lower case. It's used for comparision with … … 77 79 the command name! 78 80 >>> cmd = 'DELAY+SUM/BLA/FOO=1 BAR /tmp/test /SW FOO' 79 >>> x = parse(cmd).parsed81 >>> x = Parse(cmd).parsed 80 82 >>> x["shx_parameter"] 81 83 ['BAR', 'FOO'] … … 91 93 If more than one "possible filename is given, only the first one is 92 94 recognized. All following are only processed as qualifiers. 93 >>> x = parse('COMMAND /tmp/x /tmp/y').parsed95 >>> x = Parse('COMMAND /tmp/x /tmp/y').parsed 94 96 >>> x["shx_suspectedFilename"] 95 97 '/TMP/X' … … 97 99 The semicolon is an alternative separator that is mostly used to skip 98 100 parameters: 99 >>> x = parse("ECHO;;2 3 4 ;; 6 7").parsed101 >>> x = Parse("ECHO;;2 3 4 ;; 6 7").parsed 100 102 >>> x["shx_parameter"] 101 103 ['', '2', '3', '4', '', '6', '7'] 102 104 103 >>> x = parse('ECHO;;;;foo;bar;;').parsed105 >>> x = Parse('ECHO;;;;foo;bar;;').parsed 104 106 >>> x["shx_parameter"] 105 107 ['', '', '', 'FOO', 'BAR', ''] … … 193 195 raise ShxError(name) 194 196 195 class script(object): 197 198 class Script(object): 196 199 """ 197 200 Read commands from stream. … … 209 212 >>> from StringIO import StringIO 210 213 >>> strm = StringIO("echo line1\\necho line2\\n") 211 >>> symb = symbol()214 >>> symb = Symbol() 212 215 >>> Settings.swEcho = True 213 >>> x = script(strm, symb)216 >>> x = Script(strm, symb) 214 217 >>> x.run() 215 218 echo line1 … … 330 333 331 334 if Settings.swCmderrstop: 332 raise ShxError( error,msg)335 raise ShxError(msg) 333 336 334 337 if not Settings.swNoerrmsg: 335 import warnings 336 warnings.warn((error, msg)) 338 msgs.sendMessage("log.error.traceback", message=msg) 337 339 338 340 def run(self): … … 344 346 print cmd 345 347 346 cmd = parse(cmd).parsed348 cmd = Parse(cmd).parsed 347 349 348 350 # translate variables 349 _ = translate(cmd, self)351 _ = Translate(cmd, self) 350 352 351 353 # Check for internal command ... … … 374 376 # .. or start script. 375 377 else: 376 symb = symbol()378 symb = Symbol() 377 379 try: 378 380 ns = script( … … 502 504 self.Goto(cmd.p[5].value) 503 505 504 class translate(object): 506 507 class Translate(object): 505 508 """ 506 509 Translate variables in command. If a script class is used as second … … 528 531 ... 'shx_qualifiers': {'FOO': '$DOLLAR', 'BAR': True}, 529 532 ... } 530 >>> _ = translate(cmd)533 >>> _ = Translate(cmd) 531 534 >>> cmd['shx_translated'] 532 535 'ECHO 3.1415926535897931 ! /FOO=$ /BAR' … … 726 729 raise ShxError("Line %d not found in file '%s'!" % (lineno, f)) 727 730 728 class symbol(object): 731 732 class Symbol(object): 729 733 """ 730 734 This class holds locals symbols. Access to global symbols is granted. … … 732 736 Important note: All symbol names are converted into upper case! 733 737 734 >>> s = symbol()738 >>> s = Symbol() 735 739 >>> s.foo = 1 736 740 >>> s.foo … … 753 757 Traceback (most recent call last): 754 758 ... 755 ShxError: Symbol BARnot found!759 ShxError: Symbol 'BAR' not found! 756 760 757 761 If one wants to delete a global symbol but keep the local symbol: … … 766 770 767 771 def __init__(self): 768 self.__dict__["__globals"] = Settings.Globals 772 # this is a singleton 773 self.__dict__["_globals"] = Settings.Globals 769 774 770 775 def __getattr__(self, name): 776 """ 777 This method is called only, if the requested name was not found in 778 __dict__ 779 """ 771 780 name = name.upper() 781 782 # local vars (but changed case) 772 783 try: 773 784 return self.__dict__[name] … … 775 786 pass 776 787 777 try: 778 return self.__dict__["__globals"][name] 788 # next try inside globals 789 try: 790 return self._globals[name] 779 791 except KeyError: 780 pass 781 782 raise ShxError("Symbol %s not found!" % name) 783 784 def __setattr__(self, name, value=None): 785 name = name.upper() 786 787 self.__dict__[name] = value 792 raise ShxError("Symbol '%s' not found!" % name) 793 794 def __setattr__(self, name, value): 795 self.__dict__[name.upper()] = value 788 796 789 797 def __delattr__(self, name): … … 798 806 return 799 807 800 try: 801 del self.__dict__["__globals"][name] 808 self.deleteGlobal(name) 809 810 def setGlobal(self, name, value=None): 811 self._globals[name.upper()] = value 812 813 def deleteGlobal(self, name): 814 try: 815 del self._globals[name.upper()] 802 816 except KeyError: 803 pass 804 else: 805 return 806 807 raise ShxError("Symbol %s not found!" % name) 808 809 def setGlobal(self, name, value=None): 810 name = name.upper() 811 812 self.__dict__["__globals"][name] = value 813 814 def deleteGlobal(self, name): 815 name = name.upper() 816 817 del self.__dict__["__globals"][name] 817 raise ShxError("Symbol %s not found!" % name) 818 818 819 819 def getVar(name, symbolset = None): … … 825 825 826 826 if not symbolset: 827 s = translate()827 s = Translate() 828 828 else: 829 829 x = AttribDict() 830 830 x.symbols = symbolset 831 s = translate(None, x)831 s = Translate(None, x) 832 832 833 833 return s._translate(name) 834 834 835 835 836 if __name__ == "__main__": 836 837 import doctest 838 # doctest.testmod(exclude_empty=True, verbose=True) 837 839 doctest.testmod(exclude_empty=True) -
SHX/trunk/sandbox
- Property svn:ignore
-
old new 4 4 access 5 5 sscanf 6 .getset.py.swp
-
- Property svn:ignore
Note: See TracChangeset
for help on using the changeset viewer.