Changeset 242
- Timestamp:
- 07/28/2010 02:59:40 PM (13 years ago)
- Location:
- SHX/trunk/src/SeismicHandler
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
SHX/trunk/src/SeismicHandler/core/parser.py
r240 r242 239 239 # also qualifiers. 240 240 if parameters: 241 # print parameters242 # self.parameters = translate(parameters, self)243 241 self.parameters = parameters 244 242 … … 263 261 264 262 self.filename = inputdata 265 263 266 264 # look for file in search path 267 265 for folder in self.searchpath: … … 335 333 import warnings 336 334 warnings.warn((error, msg)) 337 335 338 336 def run(self): 339 337 while True: … … 361 359 if Settings.swVerify: 362 360 print cmd["shx_translated"] 363 361 364 362 try: 365 363 # also supply recent symbolset … … 411 409 # jump to end of script 412 410 self.pointer = len(self.content) 411 412 def commandDefault(self, *args): 413 """ 414 Query default values. 415 416 Since this statement manipulates script option variables, it's not done 417 as command class. 418 419 Note: No qualifiers are supported! Input is read from stdin. 420 """ 421 422 # no parameters given at all -> request user input 423 # set as class attribute for caching. 424 try: 425 self.userreq = self.userreq and True or \ 426 len(self.parameters["shx_parameter"]) == 0 427 except AttributeError: 428 self.userreq = len(self.parameters["shx_parameter"]) == 0 429 430 id = int(args[0])-1 431 default = args[1] 432 433 val = None 434 try: 435 val = self.parameters["shx_parameter"][id] 436 except IndexError: 437 if self.userreq: 438 # request user input 439 if len(default): 440 q = " [default: %s]: " % default 441 else: 442 q = " : " 443 444 userinput = raw_input(" ".join(args[2:]) + q) 445 if userinput: 446 default = userinput 447 448 if not val: 449 # fill from default 450 try: 451 self.parameters["shx_parameter"][id] = default 452 except IndexError: 453 self.parameters["shx_parameter"].append(default) 413 454 414 455 def commandGoto(self, target): … … 472 513 473 514 After translation all parameter and qualifiers are replaced. 474 515 475 516 If the global option "Verify" is set the translated command string is saved 476 517 into "shx_translated". This string is rebuild from the translated parts, … … 530 571 def __init__(self, cmd, script=None): 531 572 self.script = script 532 573 533 574 # translate parameters 534 575 for i, p in enumerate(cmd["shx_parameter"]): … … 548 589 if not Settings.swVerify: 549 590 return 550 591 551 592 qual = [] 552 593 for q in cmd["shx_qualifiers"]: … … 555 596 else: 556 597 qual.append("%s=%s" % (q, cmd["shx_qualifiers"][q])) 557 598 558 599 cmd["shx_translated"] = " ".join([ 559 600 cmd["shx_converted"] and cmd["shx_command"].upper() or \ … … 564 605 565 606 def _translate(self, value): 607 if not value: 608 return '' 609 566 610 idmap = { 567 611 '$': self.__handleSystem, … … 622 666 623 667 def __handleOption(self, name): 668 """ 669 Return parameters set on procedure call. 670 671 Possible values: 672 #0 - filename 673 #1..#99 - parameter number xx 674 #name - qualifier "name" 675 """ 624 676 if name.isdigit(): 625 return self.script.parameters['shx_parameter'][int(name)-1] 677 id = int(name)-1 678 if id >= 0: 679 return self.script.parameters['shx_parameter'][id] 680 else: 681 return self.script.filename 626 682 else: 627 683 return self.script.parameters['shx_qualifiers'][name] … … 647 703 return line.strip() 648 704 649 return str(cnt+1) 705 if l == 0: 706 return str(cnt+1) 707 else: 708 raise Exception("Line %d not found in file '%s'!" % (l, f)) 650 709 651 710 class symbol(object): -
SHX/trunk/src/SeismicHandler/tests/data
- Property svn:ignore
-
old new 1 1 .SCRIPT1.SHC.swp 2 .SCRIPT4.SHC.swp 3 .nfs00000000002188580000016d
-
- Property svn:ignore
-
SHX/trunk/src/SeismicHandler/tests/data/SCRIPT1.SHC
r236 r242 10 10 ! close output stream 11 11 echo_ch 12 return -
SHX/trunk/src/SeismicHandler/tests/data/SCRIPT2.SHC
r240 r242 1 echo script2:"foo #1 #qux1 echo #0 "foo #1 #qux 2 2 sdef bar /global 42 3 3 return -
SHX/trunk/src/SeismicHandler/tests/test_parser.py
r241 r242 234 234 self.assertEqual(res, expect) 235 235 236 def test2Default(self): 237 """ 238 Default options. 239 240 Uses SCRIPT3 and SCRIPT4 for testing. 241 """ 242 243 from SeismicHandler.core.parser import script, symbol 244 245 s = symbol() 246 x = script("script3", s, searchpath=["data"]) 247 x.run() 248 249 expect = 'ONE "FOO" QUX\nFOO "BAR" QUX\nONE "bar" QUX\n' 250 251 res = self.getResults() 252 self.assertEqual(res, expect) 253 236 254 def testScript1(self): 237 255 """ … … 256 274 x.run() 257 275 258 expect = "SCRIPT2 :23 BAR 1\nSCRIPT1: 42\n"276 expect = "SCRIPT2.SHC 23 BAR 1\nSCRIPT1: 42\n" 259 277 260 278 res = self.getResults() … … 262 280 263 281 def suite(): 264 return unittest.makeSuite(parserTestCase, 'test ')282 return unittest.makeSuite(parserTestCase, 'test2') 265 283 266 284 if __name__ == "__main__":
Note: See TracChangeset
for help on using the changeset viewer.