Changeset 375
- Timestamp:
- 03/22/07 16:17:19 (2 years ago)
- Files:
-
- trunk/SSATagParsing.m.rl (modified) (7 diffs)
- trunk/TextSubCodec.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/SSATagParsing.m.rl
r370 r375 432 432 433 433 action nl_handler { 434 NSString *append = @"\n"; 434 435 parsetmp = [NSString stringWithCharacters:skipbegin length:(p-2)-skipbegin]; 435 436 [output appendString:parsetmp]; … … 437 438 skipbegin = p; 438 439 439 [output appendString:@"\n"]; 440 if (*(p - 1) == 'h') append = @" "; 441 442 [output appendString:append]; 440 443 441 444 lengthreduce++; … … 443 446 444 447 action enter_tag { 445 parsetmp = [NSString stringWithCharacters:skipbegin length:p-skipbegin]; 448 unsigned taglen = p - skipbegin; 449 parsetmp = [NSString stringWithCharacters:skipbegin length:taglen]; 446 450 [output appendString:parsetmp]; 447 448 449 451 skipbegin = p; 450 452 … … 469 471 470 472 action exit_tag { 473 // XXX exit_tag ideally should run one char later, so we just pretend it does 474 p++; 471 475 outputoffset += p - skipbegin; 472 476 skipbegin = p; … … 494 498 re = nre; 495 499 } 500 p--; 496 501 } 497 502 … … 577 582 ); 578 583 579 cmd = "\\" cmd_specific; 580 581 tag = "{" :> ((cmd*) | ([^\\}]*)) "}"; 582 583 nl = "\\" [Nn]; 584 585 special = nl % nl_handler | 586 (tag > enter_tag % exit_tag); 584 cmd = ("\\" :> cmd_specific)+; 585 586 plaintext = [^}]*; 587 588 tag = "{" (cmd | plaintext) % exit_tag "}"; 589 590 nl = "\\" [Nnh]; 591 592 special = nl % nl_handler | (tag > enter_tag); 587 593 588 594 text = any*; … … 606 612 607 613 } 608 609 614 return rentities; 610 615 } trunk/TextSubCodec.c
r351 r375 305 305 if (!buf) return noErr; 306 306 CFStringFindAndReplace(buf, CFSTR("<i>"), CFSTR("{\\i1}"), CFRangeMake(0,CFStringGetLength(buf)), 0); 307 CFStringFindAndReplace(buf, CFSTR("<b>"), CFSTR("{\\b1}"), CFRangeMake(0,CFStringGetLength(buf)), 0);308 307 CFStringFindAndReplace(buf, CFSTR("</i>"), CFSTR("{\\i0}"), CFRangeMake(0,CFStringGetLength(buf)), 0); 309 CFStringFindAndReplace(buf, CFSTR("</b>"), CFSTR("{\\b0}"), CFRangeMake(0,CFStringGetLength(buf)), 0);310 308 CFStringFindAndReplace(buf, CFSTR("<"), CFSTR("{"), CFRangeMake(0,CFStringGetLength(buf)), 0); 311 309 CFStringFindAndReplace(buf, CFSTR(">"), CFSTR("}"), CFRangeMake(0,CFStringGetLength(buf)), 0);
