• R/O
  • SSH
  • HTTPS

naniya: Commit


Commit MetaInfo

Revision210 (tree)
Zeit2008-08-19 17:50:45
Autornotanpe

Log Message

w2tの逆読みをちゃんとした

Ändern Zusammenfassung

Diff

--- trunk/w2t/w2t.c (revision 209)
+++ trunk/w2t/w2t.c (revision 210)
@@ -1,7 +1,6 @@
11 /*
22 todo
33 囲み target の場合の、[./]
4--Rの先頭は末尾
54 */
65 #include <stdio.h>
76 #include <stdlib.h>
@@ -75,7 +74,7 @@
7574 fprintf( stderr, "w2s [-e num] [-c num] [-w num] [-g num] [-u] [-s {2|4|5}] [-/] [-f] [-i] [-t] [-r] [-n] [-y] [-d {/|.}] [-m mark] [-p postit] [-R] [-v] [-h] [-?] [ifile]\n" );
7675 break;
7776 case TOTARGET:
78- fprintf( stderr, "word2target 1.6\n" );
77+ fprintf( stderr, "word2target 1.7\n" );
7978 fprintf( stderr, "w2t [-e num] [-c num] [-w num] [-g num] [-u] [-s {2|4|5}] [-/] [-f] [-i] [-t] [-r] [-n] [-y] [-d {/|.}] [-a] [-m mark] [-R] [-v] [-h] [-?] [ifile]\n" );
8079 break;
8180 case TOL2R:
@@ -481,11 +480,13 @@
481480 /* 3 パターン */
482481 /* オリジナルが全小/全大/先大のどれかなら出力しない */
483482 /* 全大とまとめられる場合もあるけど、まいっか */
484- /* here */
485- /* -R の先頭は末尾 */
486483 if ( !doorMode ) {
487484 if ( (needTailCheck && istail[tailChar]) || !needTailCheck ) {
488- make3Pattern( word, threePat );
485+ if ( reverse ) {
486+ make3PatternR( word, threePat );
487+ } else {
488+ make3Pattern( word, threePat );
489+ }
489490 for ( i = 0; i < 3; i++ ) {
490491 if ( threePat[i] == NULL ) {
491492 goto NEXT;
@@ -499,23 +500,29 @@
499500 }
500501 NEXT:
501502 /* 9[aA]bcd : 最初に現れるアルファベットのみ大小、残り小 */
503+ /* 逆読みの場合は、最後に現れる(r */
502504 if ( (needTailCheck && istail[tolower(tailChar)]) || !needTailCheck ) {
505+ int alphaIdx;
503506 printf( "%s", head );
507+ if ( reverse ) {
508+ for ( alphaIdx = wordLen - 1; alphaIdx >= 0; alphaIdx-- ) {
509+ if ( isalpha( word[alphaIdx] ) ) { break; }
510+ }
511+ } else {
512+ for ( alphaIdx = 0; alphaIdx < wordLen; alphaIdx++ ) {
513+ if ( isalpha( word[alphaIdx] ) ) { break; }
514+ }
515+ }
504516 for ( i = 0; i < wordLen; i++ ) {
505- if ( isalpha( word[i] ) ) {
517+ if ( i == alphaIdx ) {
506518 putchar( '[' );
507519 putchar( tolower( word[i] ) );
508520 putchar( toupper( word[i] ) );
509521 putchar( ']' );
510- i++;
511- break;
512522 } else {
513- putchar( word[i] );
523+ putchar( tolower( word[i] ) );
514524 }
515525 }
516- for ( ; i < wordLen; i++ ) {
517- putchar( tolower( word[i] ) );
518- }
519526 printf( "%s", tail );
520527 if ( mark[0] != '\0' ) {
521528 printf( "\t#%s", mark );
Show on old repository browser