TFountain
TFountain とは HEditor のパーサークラス。パース処理を本体から分離して、テキストの色分けを HEditor わ参照する事なしに実現します。
で HEditor の目玉でもある範囲着色。ブラケットと言うのですが、このブラケットは「ある文字列からある文字列の間」を着色します。(正確に言えば着色の指示を本体に渡します)
ですが、ソースコードのコメントなどでは「行末まで」と言うケースも多い。これはいくつかの既成 Fountain が「コメント用」という別処理を与えているのですが、自作の Fountain の度に実装しなきゃいけない。面倒だ。
でブラケットで行末まで処理するようにしてみました。結構斬新だと思うのだけどなぁ(^-^;)
procedure TMYParser.BracketProc; {override}
var
RBS: String; {RightBracketString}
begin
RBS := FFountain.Brackets[FBracketIndex].RightBracket;
if (RBS = '') then
begin
FToken := toBracket;
FDrawBracketIndex := FBracketIndex;
FBracketIndex := NormalBracketIndex; // -1
while not (FP^ in [#0,#10,#13]) do
begin
if (FP^ in LeadBytes) then Inc(FP);
Inc(FP);
end;
end else
inherited BracketProc;
end;
アホみたいに単純(笑)
で HEditor の目玉でもある範囲着色。ブラケットと言うのですが、このブラケットは「ある文字列からある文字列の間」を着色します。(正確に言えば着色の指示を本体に渡します)
ですが、ソースコードのコメントなどでは「行末まで」と言うケースも多い。これはいくつかの既成 Fountain が「コメント用」という別処理を与えているのですが、自作の Fountain の度に実装しなきゃいけない。面倒だ。
でブラケットで行末まで処理するようにしてみました。結構斬新だと思うのだけどなぁ(^-^;)
procedure TMYParser.BracketProc; {override}
var
RBS: String; {RightBracketString}
begin
RBS := FFountain.Brackets[FBracketIndex].RightBracket;
if (RBS = '') then
begin
FToken := toBracket;
FDrawBracketIndex := FBracketIndex;
FBracketIndex := NormalBracketIndex; // -1
while not (FP^ in [#0,#10,#13]) do
begin
if (FP^ in LeadBytes) then Inc(FP);
Inc(FP);
end;
end else
inherited BracketProc;
end;
アホみたいに単純(笑)