Curl Global Community
{br}の仕組みがわかりません - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: {br}の仕組みがわかりません (/showthread.php?tid=1371)



{br}の仕組みがわかりません - battiruno - 06-30-2016

お久しぶりです。 Battirunoです。

Curlで{br}という強制改行の手段があると思いますが
その内部の仕組みが知りたいです。

というのも、外部からtooltipの内容を取得し、コントロールのtooltipに設定するのですが
その値のテキストを改行させたいのです。
※Curlは変更しない方向です。値のみで対応できれば助かります。

外部の値の例:"ToolTipの内容です。\{br\}あいうえお"

{br}を文字コードLRLFに変更して試しましたが、ダメでした。

助けていただけたら幸いです。



RE: {br}の仕組みがわかりません - dyoshida - 06-30-2016

はじめまして
{br}ですが、Curlドキュメントをみると制御記号文字列などではなく、下記のような
TextVisualクラスのグラフィックオブジェクトを返すプロシージャのようです。

 br (テキストプロシージャ)
  {br }:TextVisual

例に挙げて頂いた "ToolTipの内容です。” はStringとして扱われると思いますので、
br (テキストプロシージャ)で生成したオブジェクトとの結合はできないと思います。

改行文字は、やはりCurlドキュメントで"改行"をキーワードにして検索すると、「改行文字」の
説明の項があり、他の言語でもおなじみの\n (改行文字)が使えるようです。

こちら既に試して期待通りに改行されていないかもしれませんが、これはHTML等と同じように
文字列の表示時には空白や改行文字が自動的に削除されているためだと思います。

文字列が表示される際に自動的に変換されるTextFlowBoxクラスには、text-preserve-whitespace?
オブションがありますので、これを明示的に指定することで改行が有効になるかと思います。

こんな感じで使うのではないでしょうか。
Code:
{curl 8.0 applet}
{curl-file-attributes character-encoding = "utf8"}

{define-proc {make-tooltip-text-box str:String}:TextFlowBox
    {return
        {TextFlowBox
            text-preserve-whitespace? = true,
            str
        }
    }
}

{value
    {Frame
        "AAAA",
        tooltip = {make-tooltip-text-box
                      "1行目\n2行目"
                  }
    }
}