TFountain | 今宵は月が高い。注意されたし。

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;


アホみたいに単純(笑)