引用行の扱いNo.04048
ひろ さん 01/10/29 18:05
 
 秀まるおさん今日は、ひろです。
 引用業の扱いについてですが、「"hoge>" のような形式で始まる行も引用
行と見なす」が ON の場合、どういった文字を引用行としているのでしょう
か? 詳細を教えていただいても当方が理解できないので(^^;、その点につい
ては割愛して頂いて構いません。ただ半角の「[{」といった括弧と同様
``「」'' など全角の括弧も除外してよいかと思います。

 逆に「]」については、「|」と同じ扱い (「"|" (縦棒) で始まる行も引用
行と見なす」のオプションと連動) で良いと思うのですが、如何でしょうか?

[ ]
RE:04048 引用行の扱いNo.04050
秀まるお さん 01/10/31 17:25
 
 「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;
}

 でもって、全角文字については、全角空白のみ対象外とし、それ以外は認め
ています。

>ただ半角の「[{」といった括弧と同様
>``「」'' など全角の括弧も除外してよいかと思います。

 んではおもむろに全角空白以外にもいくつか除外対象文字を拡大してみます。

> 逆に「]」については、「|」と同じ扱い (「"|" (縦棒) で始まる行も引用
>行と見なす」のオプションと連動) で良いと思うのですが、如何でしょうか?

 しいてそうしてもいいですけど、「|」に比べるとカラー化のミス(カラー
化すべきじゃない所もカラー化してしまう可能性)が増えるような気がします。

[ ]
RE:04050 引用行の扱いNo.04053
ひろ さん 01/10/31 23:01
 
 秀まるおさん今日は、ひろです。
>  「hoge>」の引用行判定は、言葉で説明するのが難しいのでソースコードを
> そのまま載せます。(^^;
 やはり言葉で説明するのはかえって難しいのね(^^)。

>  んではおもむろに全角空白以外にもいくつか除外対象文字を拡大してみます。
 宜しくお願いします。

>  しいてそうしてもいいですけど、「|」に比べるとカラー化のミス(カラー
> 化すべきじゃない所もカラー化してしまう可能性)が増えるような気がします。
 これは承知の上ですが、「]」については NetNews でしか実際には見たこ
とがありませんので、他の方から要望があったときに改めて検討して頂けれ
十分です。今回は取り下げます。

[ ]