|
「hoge>」の引用行判定は、言葉で説明するのが難しいのでソースコードを
そのまま載せます。(^^;
//ν
//χ V1.22 引用記号を多少カスタマイズできるようにする。
//ψ V1.40 fFoundAscii関係の修正。
BOOL CText::IsQuotedString( char* psz, int cchMax ) {
if( !INI::data.fColorQuote ) {
return FALSE;
}
if( IsQuotedStringSub( psz ) ) {
return TRUE;
}
//χ WinYAT32対応
if( *psz == ' ' ) {
if( psz[1] > ' ' ) {
if( IsQuotedStringSub( psz + 1 ) ) {
return TRUE;
}
} else if( psz[1] == ' ' && psz[2] > ' ' ) {
if( IsQuotedStringSub( psz + 2 ) ) {
return TRUE;
}
}
}
if( INI::data.fColorQuote & COLORQUOTEFLAG_HOGE ) {
// hoge> のような形式を引用とする場合。
int x = 0;
BOOL fFoundAscii = FALSE;
if( cchMax > 15 ) {
cchMax = 15;
}
while( x < cchMax && psz[x] != '\0' ) {
if( psz[x] == '>' ) {
return fFoundAscii;
}
//ω 全角空白を含む場合も除外。
if( IsDBCSLeadByte_InText( psz[x] ) ) {
if( psz[x] == '\x81' && psz[x+1] == '\x40' ) {
break;
}
x += 2;
fFoundAscii = TRUE;
} else {
if( psz[x] == '<' || (psz[x] < '0' && psz[x] != '-')
|| psz[x] >= '{' ) {
break;
}
if( !fFoundAscii ) {
if( psz[x] >= 'a'
|| (psz[x] >= 'A' && psz[x] <= 'Z')
|| (psz[x] >= '0' && psz[x] <= '9') ) {
fFoundAscii = TRUE;
}
}
x ++;
}
}
}
return FALSE;
}
BOOL CText::IsQuotedStringSub( char* psz ) {
if( *psz == '>'
|| (*psz == 0x81 && psz[1] == 0x84) // > = 0x8184
|| (*psz == 0x81 && psz[1] == 0x74) // 》 = 0x8174
) {
return TRUE;
}
if( INI::data.fColorQuote & COLORQUOTEFLAG_BAR ) {
if( *psz == '|'
|| (*psz == 0x81 && psz[1] == 0x62) // | = 0x8162
) {
return TRUE;
}
}
return FALSE;
}
でもって、全角文字については、全角空白のみ対象外とし、それ以外は認め
ています。
>ただ半角の「[{」といった括弧と同様
>``「」'' など全角の括弧も除外してよいかと思います。
んではおもむろに全角空白以外にもいくつか除外対象文字を拡大してみます。
> 逆に「]」については、「|」と同じ扱い (「"|" (縦棒) で始まる行も引用
>行と見なす」のオプションと連動) で良いと思うのですが、如何でしょうか?
しいてそうしてもいいですけど、「|」に比べるとカラー化のミス(カラー
化すべきじゃない所もカラー化してしまう可能性)が増えるような気がします。
|
|