~katsuhiko メッセージボード

back 1551-1600

1601-1650

1651-1700


1650 TEditor ver 2.34 & TPerlFountain ver100 コメント数:  0件
  本田勝彦   |  2001/09/23 (日) 23:25
TEditor ver 2.34 & TPerlFountain ver100
公開しました。



1649 Re^4: TPerlFountain べぃた コメント数:  0件
  本田勝彦   |  2001/09/23 (日) 13:17
> RubyFountainは単純に「/」の直後が空白であれば、
> 割り算に、空白以外の文字であれば正規表現のリテラルにしています。
> FPrevTokenを見ても割り算かどうかは簡単に判定は出来ないので、
> スクリプトを書く人が対処しやすいようにこうしています。
>
> / hoge$/ という正規表現も /\shoge$/ や /\ hoge$/ で
> 代用できるので、問題ないと思うのですが、
> 如何でしょう?

そうか、逆転の発想ですね。採用させて頂きます(^^)v



1648 Re^3: TPerlFountain べぃた コメント数:  1件
  みずほちゃん  | 2001/09/23 (日) 07:53
> げげ、今公開しようと思ってたのに(^^;
> わり算の / の前に許されるトークンにはどんなモンがあるのでしょう?
> ただの数値、変数、数値を返す式の他こっちの方が多いような(^^;
>
> m// の前に許されるトークンの方を調べた方が良さそうですね。
>
> なんとかなるのか怪しい気配が(^^;
RubyFountainは単純に「/」の直後が空白であれば、
割り算に、空白以外の文字であれば正規表現のリテラルにしています。
FPrevTokenを見ても割り算かどうかは簡単に判定は出来ないので、
スクリプトを書く人が対処しやすいようにこうしています。

/ hoge$/ という正規表現も /\shoge$/ や /\ hoge$/ で
代用できるので、問題ないと思うのですが、
如何でしょう?



1647 Re^2: TPerlFountain べぃた コメント数:  2件
  本田勝彦   |  2001/09/23 (日) 00:27
> 使ってみました。細かい色分けが可能そうですね〜。
> Perl はよくエディタでガリガリ書くので、助かります(^^)

私も少しストレスが減りそうで嬉しいっす。

> 不具合(?) だと思いますが、わり算として / があると、
> Pattern の開始と認識されてしまうようです。

げげ、今公開しようと思ってたのに(^^;
わり算の / の前に許されるトークンにはどんなモンがあるのでしょう?
ただの数値、変数、数値を返す式の他こっちの方が多いような(^^;

m// の前に許されるトークンの方を調べた方が良さそうですね。

なんとかなるのか怪しい気配が(^^;




1646 Re: TPerlFountain べぃた コメント数:  3件
  パンタグラフ  | 2001/09/22 (土) 17:35
 http://homepage1.nifty.com/cosm
使ってみました。細かい色分けが可能そうですね〜。
Perl はよくエディタでガリガリ書くので、助かります(^^)

不具合(?) だと思いますが、わり算として / があると、
Pattern の開始と認識されてしまうようです。



1645 Re^4: TPerlFountain べぃた コメント数:  0件
  本田勝彦   |  2001/09/22 (土) 03:01
みしてもらいました。

toStringLiteralWithEscapeSequence = Char(59);
toRegexpLiteralWithEscapeSequence = Char(61);

は、技ですねぇ。

これから pod の資料集めます。

> もうすぐサイトそのものが消えるので、早めに
> ダウンロードしてください。

あれまぁ。引っ越して落ち着かれたら、おしえてね。



1644 Re^3: TPerlFountain べぃた コメント数:  1件
  みずほちゃん  | 2001/09/21 (金) 12:50
> 人柱どうもです。
いや、ソースみただけでまだインストールしてないです(^^;

> > RubyFountainはこちらの方法でエスケープシーケンスの処理をしています。
>
> みしてね。
http://www.portnet.ne.jp/~mzh/archive/rbft-006.zip
に置いてあります。

もうすぐサイトそのものが消えるので、早めに
ダウンロードしてください。



1643 Re^2: TPerlFountain べぃた コメント数:  2件
  本田勝彦   |  2001/09/21 (金) 03:11
人柱どうもです。

> # RubyFountainではトークンを追加して
> # 無理やり判定できるようにしたのに(泣)

FRowAttribute, FPrevRowAttribute は怒られるなぁと思っておりました。

> 新しいフィールドのFDataStrとFRemainは
> 好きに使えってことでしょうか?

はい。デフォで文字列のコピーは嫌なので、拡張で利用する場合だけ更新される
のが吉かと思います。Remain = 「余り」だし(^^;

> 「hheStringList.pas」ってありますけど、間違いですよね?

あ、気が付きませんでした。テスト用の名前が残ってしまいましたね。直しました。

> 一つ気になったのはPerlのpod(RubyのRD)
> の対応がされていないことです。

言われて初めて知りました。ありがとうございます。ピアソンの入門書にそんなの
・・・一番最後に出てました(^^;

行頭の =pod で始まり、行頭の =cut で終わるようです。

> # ヒアドキュメント内でHTMLをトークンに分解するとは思いませんでした。

タグが一色で表示されるのが耐えられない体になっちゃってるんですよね(^^;

> RubyFountainはこちらの方法でエスケープシーケンスの処理をしています。

みしてね。



1642 Re: TPerlFountain べぃた コメント数:  3件
  みずほちゃん  | 2001/09/20 (木) 19:02
233との差分を取って、ざっと調べてみたんですが。

TFountainParserにFPrevRowAttributeや
FRowAttributeがあるので、
パースしている行やその前の行が折り返されているかどうか
判定できるようになってますね。

# RubyFountainではトークンを追加して
# 無理やり判定できるようにしたのに(泣)

新しいフィールドのFDataStrとFRemainは
好きに使えってことでしょうか?

あと、heStringList.pasの最初に
「hheStringList.pas」ってありますけど、間違いですよね?


PerlFountainの方はまだ良く分からないのですが、
一つ気になったのはPerlのpod(RubyのRD)
の対応がされていないことです。
多くのPerlのライブラリにはpodがあるので、
対応する方が良いのではないでしょうか?

# ヒアドキュメント内でHTMLをトークンに分解するとは思いませんでした。
# 私は面倒くさがりなので、そういうことはやらないです(^^;


ちなみに
> PerlFountain.pas より
> 従来の方式で、\ を発見したとき、次の " をスキップさせる方法もあるが、
RubyFountainはこちらの方法でエスケープシーケンスの処理をしています。





1641 TPerlFountain べぃた コメント数:  8件
  本田勝彦   |  2001/09/19 (水) 23:54
http://compodev.at.infoseek.co.jp/diary.html

見てね。



1640 Re^2: TEditor & RubyFountainサンプル コメント数:  0件
  sakazuki  | 2001/09/18 (火) 04:57
 http://homepage2.nifty.com/sakazuki/rde.html
こんにちは。sakazukiです。

> > 本田さんのTEditorと、KmさんのTEditorExとみずほちゃんのRubyFountainを使って公開しているソフト(Ruby開発環境)のソースを公開しました。
> > http://homepage2.nifty.com/sakazuki/rdesource.html
>
> 見たかったのですが、ダウンロードが旨く行きませんでした。なしてでしょ。

ここでは、カウンタのCGIをかませて転送しています。たまにネスケでダウンロードできないとの報告をいただきますが、原因は判ってません。(夜niftyのcgiサーバが非常に重いためでしょうか?)カウンタは、しばらくの間、とりたいので直リンクのURLを別途メールいたします。



1639 sed の y/// の y コメント数:  0件
  本田勝彦   |  2001/09/18 (火) 01:23
y は何の略なのでしょう?

ご存じの方ご覧になってましたら、ご教授下さいませ。

ただの y だったりして(^^;



1638 Re: TEditor & RubyFountainサンプル コメント数:  1件
  本田勝彦   |  2001/09/18 (火) 01:01
> 本田さんのTEditorと、KmさんのTEditorExとみずほちゃんのRubyFountainを使って公開しているソフト(Ruby開発環境)のソースを公開しました。
> http://homepage2.nifty.com/sakazuki/rdesource.html

見たかったのですが、ダウンロードが旨く行きませんでした。なしてでしょ。



1637 Re: ダブルクリックによる単語選択 コメント数:  0件
  本田勝彦   |  2001/09/18 (火) 00:48
> そういう仕様なのでしょうか?
> 単語のみを選択したいのですが・・・。

いへ、昔は SelectWordFromxxxx で出来たんですよね。
ver 2.10 でそういう仕様になってしまったようです。
バグともいう(^^;

SelectPosToken メソッドの実装部で、引数の Editor を見てませんね。
何か方法を考えてみます。

レポートありがとうございます。



1636 TEditor & RubyFountainサンプル コメント数:  2件
  sakazuki  | 2001/09/17 (月) 09:30
 http://homepage2.nifty.com/sakazuki/rde.html
こんにちは。sakazukiです。
本田さんのTEditorと、KmさんのTEditorExとみずほちゃんのRubyFountainを使って公開しているソフト(Ruby開発環境)のソースを公開しました。
http://homepage2.nifty.com/sakazuki/rdesource.html
TEditorを使って何か作ろうとされている方には、何らかの参考になるかもしれません。
ご参考まで。
ちなみに、Delphi5でコンパイル可能です。



1635 ダブルクリックによる単語選択 コメント数:  1件
  こうたん  | 2001/09/17 (月) 02:45
お世話になります。
題記の件ですが、
ある文字列をコメント行として認識させた場合、
Editor.SelectTokenFromCaret
Editor.SelectWordFromCaret
のどちらも コメント行まるまるが選択されるようですが、
そういう仕様なのでしょうか?
単語のみを選択したいのですが・・・。





1634 Re^5: タブ式エディターでクローズボタン コメント数:  0件
  本田勝彦   |  2001/09/16 (日) 03:09
> ありがとうございます。まだまだDelphiを始めたての私にはちんぷんかんぷんで、理解はまだ出来ませんが、良く考えて、自分なりにアレンジできるようにがんばります。開発がんばってください。

ありがとうございます。お互い頑張りましょうね。



1633 Re^25: もう一つ質問 コメント数:  0件
  本田勝彦   |  2001/09/16 (日) 03:07
> "hoge hoge hoge \<
> " foo"
>
> のような場合のことですよね。

んだんだ^^;

> RubyFountainで実装できたっぽいのですが、
> もし良かったらソース要りますか?
> テスト中なので、バグがあるかもしれませんが。

ぢつわ今さっき出来ちゃいました(^^;)すんまっせん。
q/ / と同じ方式で / のかわりに " を判別する方式です。
途中のトークンは一個ずつ取得して toDoubleQuotation に変換する。
\" は一個のトークンになるので、SymbolProc で " を処理することが無い
というパターンです。q/ / の実装を先に考えれば良かったという(^^;)

m[q[hoge]] に対応するために、ネストの段数を保持するためのデータ領域を
増やしてしまいました。残っていた8ビットを使い切ってしまいました。
8ビットなので256段のネストに耐えられます。

今は s[][] をやっています。
も少ししたら、ベータ版を公開出来ると思いますので、人柱して見て下さいね。



1632 Re^4: タブ式エディターでクローズボタン コメント数:  1件
  DINO  | 2001/09/15 (土) 23:46
ありがとうございます。まだまだDelphiを始めたての私にはちんぷんかんぷんで、理解はまだ出来ませんが、良く考えて、自分なりにアレンジできるようにがんばります。開発がんばってください。



1631 Re^24: もう一つ質問 コメント数:  1件
  みずほちゃん  | 2001/09/15 (土) 23:45
 http://www.portnet.ne.jp/~mzh/
> SigleQuotation, DoubleQuotation から始めていますが、\" が折り返しで分断
> された場合というところからつまずいてます。でも楽しいです。
これって、

"hoge hoge hoge \<
" foo"

のような場合のことですよね。
(例によって「<」が折り返しの記号です)

上の処理だったら、今日1日悩んで
RubyFountainで実装できたっぽいのですが、
もし良かったらソース要りますか?
テスト中なので、バグがあるかもしれませんが。



1630 Re^2: 日本語以外の文字セットについて コメント数:  0件
  こうたん  | 2001/09/15 (土) 18:41
> Delphi ドイツ語版でコンパイルすると LeadBytes が対応したものに
> なるので、ご指摘の状況はなくなるような気がしますが。どうでしょうね。

ほうほう。

> でも、TFountainParser はベタで日本語対応になっていますので、今のところ対応策はないですね。ドイツ語対応の TFountain コンポを作られると可能かもしれません。
>
> お役に立てないようで申し訳ないです。

難しそうですね・・・。
了解しました。




1629 Re^2: 検索について質問です コメント数:  0件
  こうたん  | 2001/09/15 (土) 18:40
> ないっす。すんません。

あら。(^^;

何か方法を考えてみます。
ありがとうございました。



1628 Re: 日本語以外の文字セットについて コメント数:  1件
  本田勝彦   |  2001/09/15 (土) 13:28
> 何か方法はありますでしょうか?

Delphi ドイツ語版でコンパイルすると LeadBytes が対応したものに
なるので、ご指摘の状況はなくなるような気がしますが。どうでしょうね。

でも、TFountainParser はベタで日本語対応になっていますので、今のところ対応策はないですね。ドイツ語対応の TFountain コンポを作られると可能かもしれません。

お役に立てないようで申し訳ないです。





1627 Re: 検索について質問です コメント数:  1件
  本田勝彦   |  2001/09/15 (土) 13:22
> 検索ではヒットしたような動きをしますが、
> 1000文字目にキャレットが移動するだけですよね。(?)
> 置換では、無限ループに陥ってしまうようなのですが・・・。
>
> 折り返しされていない場合の検索・置換に関して、
> うまい回避策はないでしょうか?

ないっす。すんません。



1626 Re^3: ウインドウ幅での折り返し コメント数:  0件
  本田勝彦   |  2001/09/15 (土) 13:18
> バッチリ動作しました。ありがとうございます。
> (あのサンプル、インデントがおかしいのとendが足りません)参考までに

今度なおします^^;

> それとついでにですが、CLX版TEditorは出るのでしょうか?

出したい。とだけ言っておこぉ^^;

> 出るとしたらいつ頃でしょうか?
> Kylix買ったんでLinuxに切り込もうと思っています。(目指すは一番乗り)

長い目でね。TL6 はさわってますが、開発環境にしたいとはあまし思わなかったので
それほど気乗りがしなかったというのもあったりします。でも TL7 はすごそうですね。




1625 Re^3: タブ式エディターでクローズボタン コメント数:  2件
  本田勝彦   |  2001/09/15 (土) 13:15
function TFormMain.GetEditors(Index: Integer): TEditor;
var
 I: Integer;
begin
 Result := nil;
 for I := 0 to PageControl1.Pages[Index].ControlCount - 1 do
  if PageControl1.Pages[Index].Controls[I] is TEditor then
  begin
   Result := PageControl1.Pages[Index].Controls[I] as TEditor;
   Break;
  end;
end;

こんな感じです。



1624 日本語以外の文字セットについて コメント数:  2件
  こうたん  | 2001/09/15 (土) 00:29
TEditorで指定可能なフォントですが、
ドイツ語等の外国語の入力には対応できないでしょうか?

ファイルを読み込んだ場合には一見正しく表示できますが、
1バイトの文字が2バイトで表示されます。
(見た目には2バイト目に半角スペース分の空白があるように見えます)

入力等を行なった場合には、
エラー等が出てしまうようなのですが、
何か方法はありますでしょうか?



1623 検索について質問です コメント数:  2件
  こうたん  | 2001/09/15 (土) 00:26
一行が1000文字を超える場合ですが、
検索や置換において1000文字目以降に検索文字列があった場合について教えてください。

検索ではヒットしたような動きをしますが、
1000文字目にキャレットが移動するだけですよね。(?)
置換では、無限ループに陥ってしまうようなのですが・・・。

折り返しされていない場合の検索・置換に関して、
うまい回避策はないでしょうか?



1622 Re^3: ウインドウ幅での折り返し コメント数:  0件
  M&I  | 2001/09/14 (金) 17:40
 http://member.nifty.ne.jp/m-and-i/
> それとついでにですが、CLX版TEditorは出るのでしょうか?

TEditorが内部で使用しているメッセージ処理がCLXでも実現出来るのかどうか、はたから見ても大変そうですね(^^;



1621 Re^2: ウインドウ幅での折り返し コメント数:  2件
  夜ゲイツ  | 2001/09/14 (金) 02:16
間違っていました。
> > そこで、最も簡単な解散方を教えていただけますか?(LeftBar等含めて)
解散ではなく計算でした。

> TEditor Q&A のページのいっちゃん最後にありますので見てね。
そういえば、見たことありましたがその時は気にとめていませんでした。
バッチリ動作しました。ありがとうございます。
(あのサンプル、インデントがおかしいのとendが足りません)参考までに

それとついでにですが、CLX版TEditorは出るのでしょうか?
出るとしたらいつ頃でしょうか?
Kylix買ったんでLinuxに切り込もうと思っています。(目指すは一番乗り)



1620 Re^2: タブ式エディターでクローズボタン コメント数:  3件
  DINO  | 2001/09/14 (金) 01:37
お返事ありがとうございます。
> Editors[I] は GetEditor(I): TEditor;
> のような関数を実装して置き換えて下さい。
この部分がよく分からなかったので、ためしにActiveEditorで置き換えたら、やはりうまくいきません。(あたりまえですよね^^;)
関数を実装とはどうすればいいのでしょうか?
とても基本的なことなのだろうとは思いますが、よろしくお願いします。




1619 Re^2: タブ式エディターでクローズボタン コメント数:  0件
  本田勝彦   |  2001/09/14 (金) 00:29
SaveFile, SaveFileAs メソッドも追加します。

function TFormMain.SaveFileAs(var FileName: String; Editor: TEditor): Boolean;
begin
 Result := False;
 SaveDialog1.FileName := FileName;
 if SaveDialog1.Execute then
 begin
  FileName := SaveDialog1.FileName;
  Result := SaveFile(FileName, Editor);
  if Result then
   SelectEditorProp(FileName, Editor);
 end;
end;

function TFormMain.SaveFile(var FileName: String; Editor: TEditor): Boolean;
begin
 if FileName = NewFile then // 無題の場合
  Result := SaveFileAs(FileName, Editor)
 else
begin
  Editor.Lines.SaveToFile(FileName);
  Result := True;
 end;
end;




1618 Re: タブ式エディターでクローズボタン コメント数:  5件
  本田勝彦   |  2001/09/14 (金) 00:23
私のエディタのですが、どうでしょう? Editors[I] は GetEditor(I): TEditor;
のような関数を実装して置き換えて下さい。

procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
 I, C: Integer;
 S: String;
begin
 C := 0;
 for I := 0 to PageControl1.PageCount - 1 do
  if Editors[I].Modified then
   Inc(C);
 if C > 0 then
 begin
  case MessageDlg(
      Format('変更のあるファイルが %3d 個あります', [C]) +
      #13#10#13#10 +
      '終了する前にこれらのファイルをセーブしますか?',
      mtConfirmation, [mbYes, mbNo, mbCancel], 0) of
   mrYes:
    for I := 0 to PageControl1.PageCount - 1 do
     if Editors[I].Modified then
     begin
      S := FFileList[I];
      if not SaveFile(S, Editors[I]) then
      begin
       CanClose := False;
       Exit;
      end;
      FFileList[I] := S;
     end;
   mrCancel: CanClose := False;
  end;
 end;
end;



1617 Re^23: もう一つ質問 コメント数:  2件
  本田勝彦   |  2001/09/14 (金) 00:18
> RubyFountain-005 の readme.rdがRDで書かれた文章です。

以前うかがいましたね。忘れとりました(^^;

> Perlの場合、構文解析もしないといけないみたいなので、
> 難しそうですが、頑張ってください。

SigleQuotation, DoubleQuotation から始めていますが、\" が折り返しで分断
された場合というところからつまずいてます。でも楽しいです。

> # 私はPerlにはトラウマがあって使えないんですよね

私も最初は仕様のいいかげんさに発狂しそうになりました。
今でもまだ読めるけど書けない状態です。使う機会自体がそう無いし。



1616 Re: ウインドウ幅での折り返し コメント数:  3件
  本田勝彦   |  2001/09/14 (金) 00:13
> ウインドウ幅での文章折り返し機能をお願いされてるんですが、
> リサイズとともにWrapByteを変化させれば良いのですよね、
> そこで、最も簡単な解散方を教えていただけますか?(LeftBar等含めて)
> 前にあったらごめんなさい。

TEditor Q&A のページのいっちゃん最後にありますので見てね。

> PS.
> PC9821Neおまけを付けて昨日発射致しました。

ありがとうございます。\(^o^)/



1615 タブ式エディターでクローズボタン コメント数:  6件
  DINO  | 2001/09/13 (木) 23:33
初めまして、DINOといいます。Delphi始めたばかりの者です。TEditorをダウンロードして、自分好みのタブ式エディターを作成中なのですが、どうしても分からないことがあるので質問します。
Formのクローズボタンを押したとき、変更のあったタブのエディターを保存するかどうかを確認しながらクローズするようにしたいのですが、うまくいきません。自分で考えたものを書きたいのですが文字数がオーバーしてしまって書き込めません。Sampleを例に説明してもらえるとうれしいです。

どうかよろしくお願いします。



1614 Re^22: もう一つ質問 コメント数:  3件
  みずほちゃん  | 2001/09/13 (木) 19:58
 http://www.portnet.ne.jp/~mzh/
> 人柱用げっとです。コメント消しちゃって良いですよ(^^;
> RDFountain というのが気になっているのですが。
RubyFountain-005 の readme.rdがRDで書かれた文章です。
同梱されている readme.html は readme.rd をRDtoolというフォマッターで
変換したものです。Rubyのマニュアルの多くは
RDで書かれています。

以前紹介したRubyのマニュアルのURLではCGIで
RDがHTMLに変換されたものが出力されています。

> おかげさまで、TPerlFountain を作成する気になってます。
> これから web で資料アサリです(^^;
Perlの場合、構文解析もしないといけないみたいなので、
難しそうですが、頑張ってください。

# 私はPerlにはトラウマがあって使えないんですよね

> > # RubyFountainはDelphiFountainから作ったんですが、
> > # もう面影はほとんどないですねえ。
>
> 初めからなかったような。(笑)
初めのころはtoSingleQuotationとかコメントにして残ってたりして、
少しは面影があったと思うのですが。



1613 ウインドウ幅での折り返し コメント数:  4件
  夜ゲイツ  | 2001/09/13 (木) 18:23
こんにちは、本田さん&皆様

ウインドウ幅での文章折り返し機能をお願いされてるんですが、
リサイズとともにWrapByteを変化させれば良いのですよね、
そこで、最も簡単な解散方を教えていただけますか?(LeftBar等含めて)
前にあったらごめんなさい。

PS.
PC9821Neおまけを付けて昨日発射致しました。



1612 Re^4: 引用行の強調表示 コメント数:  0件
  DR-X  | 2001/09/12 (水) 23:58

>Index を取得出来る LastTokenBracket メソッドを override して、
>折り返された行の場合 ElementIndex を更新しています。
>これによって、パースする際該当行の ElementIndex を判別して
>折り返された行かどうかを知ることが出来るようになりました。

 完全には理解できてませんが、これでいけそうです。
ありがとうございました。




1611 Re^21: もう一つ質問 コメント数:  4件
  本田勝彦   |  2001/09/11 (火) 23:37
> これでいけました。

いかったいかった。

> http://www.portnet.ne.jp/~mzh/delphi/rbft.html

人柱用げっとです。コメント消しちゃって良いですよ(^^;
RDFountain というのが気になっているのですが。

おかげさまで、TPerlFountain を作成する気になってます。
これから web で資料アサリです(^^;

> # RubyFountainはDelphiFountainから作ったんですが、
> # もう面影はほとんどないですねえ。

初めからなかったような。(笑)



1610 Re^20: もう一つ質問 コメント数:  5件
  みずほちゃん  | 2001/09/11 (火) 22:01
 http://www.portnet.ne.jp/~mzh/
> > PrevToken が更新されないのが原因です。
>
> 嘘です。toBracket と同様に閉じたトークンが折り返されている場合の処理が
> 必要になるからでした。LastTokenBracket を override したバージョンを
> 作成しましたので、試して見て頂けますでしょうか?
>
> http://compodev.at.infoseek.co.jp/arc/rubyfountain_kb2.lzh
これでいけました。
10本ほどRubyスクリプトを読みこませてみましたが、
大丈夫なようです。
今回は本当にご迷惑をおかけしました。

http://www.portnet.ne.jp/~mzh/delphi/rbft.html

にテスト用のRubyFountainを置いておきます。
良かったら試してみてください。

# RubyFountainはDelphiFountainから作ったんですが、
# もう面影はほとんどないですねえ。



1609 Re^19: もう一つ質問 コメント数:  6件
  本田勝彦   |  2001/09/11 (火) 12:48
> PrevToken が更新されないのが原因です。

嘘です。toBracket と同様に閉じたトークンが折り返されている場合の処理が
必要になるからでした。LastTokenBracket を override したバージョンを
作成しましたので、試して見て頂けますでしょうか?

http://compodev.at.infoseek.co.jp/arc/rubyfountain_kb2.lzh




1608 Re^18: もう一つ質問 コメント数:  7件
  本田勝彦   |  2001/09/11 (火) 00:06
> %Q| hoge hoge <
> hoge | after
>
> のような時に after まで %Q|| と同じトークンとして扱われて
> しまいます。
>
> 折り返し行は2回以上パースされるようなので、
> 2回目のパースの際にFElementIndexの値が
> デリミッターに対応しなくなることが原因のようです。

確認出来ました。なりますね。

> %Q| hoge hoge <
> hoge | after

1行目をパースする際2行目のデータを加えた文字列をパースするのですが、
PrevToken が更新されないのが原因です。何か方法を考えて見ます。



1607 Re^3: 引用行の強調表示 コメント数:  1件
  本田勝彦   |  2001/09/10 (月) 23:57
> 悩んでるのは、先頭に記号があるのかを調べるのにパーサー
> には物理行単位でわたってくるので、たとえば2行に折り返さ
> れているとき1行目の先頭に記号がない場合でも、2行目の
> 先頭に記号があると引用行になってしまうということなんです
> が・・・

わかり悪くて済みません。理解出来ました。確かに折り返された行かどうかは、
まんまでは解りませんね。
で、TEditorFountainEx を作って見ました。

http://compodev.at.infoseek.co.jp/arc/editorfountainexb1.lzh

Index を取得出来る LastTokenBracket メソッドを override して、
折り返された行の場合 ElementIndex を更新しています。
これによって、パースする際該当行の ElementIndex を判別して
折り返された行かどうかを知ることが出来るようになりました。

試して見て下さい。



1606 Re^17: もう一つ質問 コメント数:  8件
  みずほちゃん  | 2001/09/10 (月) 23:32
 http://www.portnet.ne.jp/~mzh/
> > 本田さんにはかなり迷惑をかけましたが、
> > 今のRubyFountainでほぼ完成のレベルに達したと思います。
修正していたら、折り返しの時にバグがでることが分りました。

%Q| hoge hoge <
hoge | after

のような時に after まで %Q|| と同じトークンとして扱われて
しまいます。

折り返し行は2回以上パースされるようなので、
2回目のパースの際にFElementIndexの値が
デリミッターに対応しなくなることが原因のようです。

# はっきり言って、バグの回避方法が思いつきません。

> いへいへ、TPerlFountain の叩き台にさしてもらいます。
> でもまだ、toSingleQuotation, toDoubleQuotation とそのネストと
> \" への対応があるのではないの?期待しているのですが(^^;
折り返しを無視すれば、エスケープは対応できる気がします。



1605 Re^2: 引用行の強調表示 コメント数:  2件
  DR-X  | 2001/09/10 (月) 11:37

 うーん、わかりません(>_<)

悩んでるのは、先頭に記号があるのかを調べるのにパーサー
には物理行単位でわたってくるので、たとえば2行に折り返さ
れているとき1行目の先頭に記号がない場合でも、2行目の
先頭に記号があると引用行になってしまうということなんです
が・・・

 いまひとつ EolToken の役割がわかってません。

 ちなみに OnDrawLine でやるのはうまくいってます。物理行
から論理行をもとめれば、あとはその先頭を調べるだけでした。

 しかし、なんとかパーサーでやりたいと思ってます。これは
印刷ルーチンからもパーサーを利用していて、カラーで印刷で
きるようにしているからです。

 よろしくお願いします。




1604 Re^16: もう一つ質問 コメント数:  9件
  本田勝彦   |  2001/09/09 (日) 23:59
> 本田さんにはかなり迷惑をかけましたが、
> 今のRubyFountainでほぼ完成のレベルに達したと思います。

いへいへ、TPerlFountain の叩き台にさしてもらいます。
でもまだ、toSingleQuotation, toDoubleQuotation とそのネストと
\" への対応があるのではないの?期待しているのですが(^^;

> 後はヒアドキュメントですが、これはちょっと無理な気がします。

データフィールドに string 型が必要になりますね・・・いやぢゃ。



1603 Re^15: もう一つ質問 コメント数:  0件
  本田勝彦   |  2001/09/09 (日) 23:51
> 少し修正しないといけませんが、頂いたRubyFountain.pas
> でほぼいけそうです。

いかったです。出来るぢゃんとPCに向かって初めて「やっぱデータ保存
フィールドが必要ぢゃ」となりまして、PrevToken が登場した次第(^^;

> 一つ目
> 元の版の SlashProc では「/」の扱いを決定するために
> 「/」の直後に空白があるか無いかを調べています。
> 本田さんの版で FP^ を (FP + 1)^ にしているということは
> 私のコードが間違えてます?

間違えてはいないと思いますよ。while ループを抜ける部分を変更したので、
私にとって解りやすい形に変えただけです。

> 二つ目
> PercentProc の最初に (FP + 1)^ in ['q', 'Q', 'r', 'x']
> で判定しているのはこれの方が処理が速いからですか?

速いかどうかは解りません。前処理を行った後で case 文を使いたかっただけでし。

> # ところで、定数の「=」を揃えているのって趣味ですか。

趣味っす(^^;



1602 TEditor ver 2.33 コメント数:  0件
  本田勝彦   |  2001/09/09 (日) 23:38
先日ご指摘を頂きました、3行以上に渡って折り返された一つのトークン取得
にかんするバグを修正しました。

Elements プロパティフィールドデータを8ビットにしました。
TFountainParser に EolToken メソッドを追加しました。



1601 Re: 引用行の強調表示 コメント数:  3件
  本田勝彦   |  2001/09/09 (日) 23:37
toComment の場合で言うと、折り返された次の行の Tokens プロパティに
toComment が格納され、これは、パーサー内部では FStartToken で知ることが
出来ます。

が、行末までを一つのトークンとして扱うことが出来るのは toComment だけ
でしたので、今公開したばかりの ver 2.33 では、パーサーの EolToken メソッド
で、行末までを一つのトークンとして扱うトークンを追加することが可能になりました。

これを override して例えば
Result := [toComment, toQuotationLine];
などとすることで toQuotationLine トークンを toComment と同じように扱えるようになります。

OnDrawLine でやると、Index を知ることが出来るので、
if Rows[Index - 1] <> raWrapped then
一発なのですがね(^^;