Changeset 237
- Timestamp:
- 07/27/2010 05:44:15 PM (13 years ago)
- Location:
- SHX/trunk/src/SeismicHandler
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
SHX/trunk/src/SeismicHandler/core/parser.py
r236 r237 257 257 inputdata = inputdata.upper() 258 258 259 self.filename = inputdata 260 259 261 # look for file in search path 260 262 for folder in self.searchpath: … … 315 317 self.targets = targets 316 318 319 def traceBack(self): 320 pass 321 317 322 def run(self): 318 323 while True: … … 324 329 325 330 cmd = parse(cmd).parsed 331 332 # translate variables 333 _ = translate(cmd, self) 326 334 327 335 # Check for internal command ... … … 335 343 # or execute command... 336 344 elif cmd["shx_command"] in commands.list: 337 # translate variables338 _ = translate(cmd, self)339 340 345 if Settings.swVerify: 341 346 print cmd["shx_translated"] … … 521 526 # translate parameters 522 527 for i, p in enumerate(cmd["shx_parameter"]): 523 if p[0] not in '"$^#%': 524 continue 525 526 id = p[0] 527 # system 528 if id == "$": 529 cmd["shx_parameter"][i] = self.handleSystem(p[1:]) 530 # symbols 531 elif id == '"': 532 cmd["shx_parameter"][i] = self.handleSymbol(p[1:]) 533 # trace XXX 534 elif id == '^': 535 cmd["shx_parameter"][i] = self.handleTrace(p[1:]) 536 # options at startup XXX 537 elif id == '#': 538 cmd["shx_parameter"][i] = self.handleOption(p[1:]) 539 # file XXX 540 elif id == '%': 541 cmd["shx_parameter"][i] = self.handleFile(p[1:]) 528 cmd["shx_parameter"][i] = self.__translate(p) 542 529 543 530 # translate qualifiers … … 549 536 continue 550 537 551 id = p[0] 552 553 if id == "$": 554 cmd["shx_qualifiers"][q] = self.handleSystem(p[1:]) 555 elif id == '"': 556 cmd["shx_qualifiers"][q] = self.handleSymbol(p[1:]) 557 elif id == '^': 558 cmd["shx_qualifiers"][q] = self.handleTrace(p[1:]) 559 elif id == '#': 560 cmd["shx_qualifiers"][q] = self.handleOption(p[1:]) 561 elif id == '%': 562 cmd["shx_qualifiers"][q] = self.handleFile(p[1:]) 538 cmd["shx_qualifiers"][q] = self.__translate(p) 563 539 564 540 # Actually this is only for debugging purposes. … … 580 556 ]) 581 557 558 def __translate(self, value): 559 idmap = { 560 '$': self.handleSystem, 561 '"': self.handleSymbol, 562 '^': self.handleTrace, 563 '#': self.handleOption, 564 '%': self.handleFile, 565 } 566 567 id = value[0] 568 569 # concat operator 570 if id == "|": 571 parts = filter(None, value.split("|")) 572 newparts = [self.__translate(i) for i in parts] 573 return "".join(newparts) 574 575 if id not in idmap.keys(): 576 return value 577 578 value = value[1:] 579 580 return idmap[id](value) 581 582 582 def handleSystem(self, name): 583 583 try: -
SHX/trunk/src/SeismicHandler/tests/test_parser.py
r236 r237 33 33 34 34 def tearDown(self): 35 """ 36 Remove left-overs. 37 """ 38 35 39 try: 36 40 os.unlink(self.outfile + ".STX") … … 39 43 40 44 def addEchoChannel(self, data): 45 """ 46 Add envelope to commands in order to catch output. 47 """ 41 48 data.insert(0, "echo_ch %s" % self.outfile) 42 49 data.append("echo_ch") … … 45 52 46 53 def callScript(self, data): 54 """ 55 Take a list of commands, execute them and return output produced. 56 """ 47 57 data = "\n".join(self.addEchoChannel(data.splitlines())) 48 58 … … 56 66 57 67 def getResults(self): 68 """ 69 Read and return output. 70 """ 58 71 return open(self.outfile + ".STX").read() 59 72 60 73 def testEcho1(self): 74 """ 75 Text output with/out newline and case conversion. 76 """ 61 77 script = """ 62 78 echo foo /NO_CRLF … … 69 85 70 86 def testEcho2(self): 87 """ 88 Non-existing symbol. 89 """ 71 90 script = """ 72 91 echo "foo … … 75 94 self.assertRaises(Exception, self.callScript, script) 76 95 96 def testEcho3(self): 97 """ 98 Concat operator. 99 """ 100 script = """ 101 echo |foo|bar|$DOLLAR| /NO_CRLF 102 """ 103 expect = "FOOBAR$" 104 105 res = self.callScript(script) 106 self.assertEqual(res, expect) 107 77 108 def testSdef(self): 109 """ 110 Define and delete user symbols. Local symbols mask global ones. 111 """ 78 112 script = """ 79 113 sdef foo 1 … … 90 124 self.assertEqual(res, expect) 91 125 92 93 126 def testSystem(self): 127 """ 128 Some system variables. 129 """ 94 130 script = """ 95 131 echo $DOLLAR /NO_CRLF … … 105 141 106 142 def testSwitch1(self): 143 """ 144 Stop on error or just a warning. 145 """ 107 146 script = """ 108 147 switch cmderrstop off … … 119 158 120 159 def testSwitch2(self): 160 """ 161 Global case conversion. 162 """ 121 163 script = """ 122 164 switch capconv off … … 131 173 132 174 def testSwitch3(self): 175 """ 176 Unknown switch. 177 """ 133 178 script = """ 134 179 switch foo on … … 138 183 139 184 def testReturn(self): 185 """ 186 Return from script. 187 """ 140 188 # the explicit "echo_ch" closes output stream in order to flush contents 141 189 script = """
Note: See TracChangeset
for help on using the changeset viewer.