管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || アンテナ || PUT || more≫ ≫omit
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage ||[edit]
category: WikiLab/WorkReport

WikiLab/WorkReport/Include - S式プラグインから include を拝借する試み。

LastModified : Sat Dec 11 19:37:34 2004
[管理]

S式プラグインから include を拝借する試み。 S式プラグインについては、こちら。test:PlugIn

ページの include

[TOP↑] [管理]
sub embedded_to_html {
---------- 略 ----------
    } elsif ($embedded =~ /$embed_include/) {
        return &include($1);
sub include {
    my @targets = @_;
    return "" unless @targets;
    my @ret;
    foreach my $target (@targets) {
        next if $target eq $form{mypage};
        my $content = $database{$target};
        $content =~ s/^(\*+)/'!' x length($1)/mge;
        $content =~ s/$embedded_name//go;
        push @ret, qq(<div class="included">);
        push @ret, "'''from ["."[$target]"."]'''\n";
        push @ret, CGI::escapeHTML($content);
        push @ret, qq(</div>);
    }
    return join "\n", @ret;
}
sub embedded_to_html {
---------- 略 ----------
    } elsif ($embedded =~ /$embed_include/) {
        return &make_include($1);
sub make_include {
    my @lines = map { "- " . $_ } include(@_);
    my $html = &text_to_html(join("\n", @lines));
    return $html; # さっきこれ入れ忘れてた。けど平気だった。これは何? 美味しいの?
}

変更/追加箇所。

[TOP↑] [管理]
my $embed_include = '\[\[#include:(\S+)\]\]$';    # SHIMADA add [included]
        # SHIMADA add [included] start
        } elsif (/^(!{1,$header_level})(.*)/) {
            push(@result, splice(@saved), sprintf('<h%d> %s</h%d>', length($1) + 1, &inline($2), length($1) + 1));
        # SHIMADA add [included] end
    # Walrus add [import recent changes] end
    # SHIMADA add [included]start
    } elsif ($embedded =~ /$embed_include/) {
        return &make_include($1);
    # SHIMADA add [included] end
sub make_include {
}
sub include {
}

会議場。

[TOP↑] [管理]

残念ですが根本的なところで大きな間違いがあります。そこを直さないとどうにもなりません。

そこは「SHIMADA add」じゃなくて「rica add」だぁぁぁぁ!!!!

…はぁはぁ。

で、お呼びになりました?

…(´・_・`)…。↑ SHIMADA さんですか…? だって、コピペしただけなんですもん(T_T)。 でも早速 rica add にしたところ、[You are a liar.] というエラーが出て、斧を一つなくしました…。

ええと、用件は、下の「めも」にある、<div class="included"> </div> が、それぞれ <p> タグで括られてしまうのを、何とか直せないかなぁ、ということだったのですが。- rica 2003/12/05(Fri) 11:25:57

これって、includeプラグインの問題ではなく、WalWikiYukiWiki)本体の<p>タグ整形の問題じゃないんですか?- たろう 2003/12/05(Fri) 11:57:04

そうかなぁとは思ったのですが、「そこを何とか!」と…。一言コメントとかは <form></form> の外を <p> で括ったりはしてないので、何とかなるのかなぁとか(また根本的に間違ってるのか…!?) - rica 2003/12/05(Fri) 12:06:14

実験場のS式includeは本体のWiki書式変換前にHTML出力してしまう(S式プラグインの処理タイミング)のためにかなり難しいと思います。WalWiki本体にinclude処理を組み込む話なら、一言コメントのHTML生成と同じタイミングで処理すればいいかと…

もしくは、<div class="included">タグに変換する「Wiki書式」を出力するとか…たしかdivタグに変換するFormatってありませんでしたっけ?

Clockworksでも「Wiki書式の変換処理」、「不要なHTMLタグのエスケープ」、「S式プラグインの処理」のタイミングを調整するのに苦労しました…で、この前の実験に繋がるのです。 - たろう 2003/12/05(Fri) 12:50:44

あ、そうか。> プラグインと WalWiki に組み込む際の変換処理のタイミング。…以外には、難しすぎてコメントできないらしい…。 divタグに変換するFormat はないですねぇ。…ここの Wiki はありますけど…。 でも class 属性は FormatRules で定義しているので、それをソースに書くのはちょっと躊躇われるかも…。 - rica 2003/12/05(Fri) 13:00:48

まず決めるべきこと

いいならコードはもっとすっきりします。

必要なければ削るだけでよい。必要ならtext_to_html()の処理の外側で入れる必要があります。

どうしますか? --SHIMADA 2003/12/05(Fri) 13:30:51

本当は、「見出し毎の include」がやりたかったのですが、こっちは本格的に「何ができるのか」「何がしたいのか」解らなかったので、「できそうなところから手を動かしてみる」という感じで始めてしまったので。- rica 2003/12/05(Fri) 14:11:46

とりあえず、includeするページ名はひとつだけという前提で組むと、 コンナ感じ。--SHIMADA 2003/12/06(Sat) 09:52:16

sub include {
  my $target = shift;
  return unless $target;
  return if $target eq $form{mypage};

  my $content = $database{$target};
  $content =~ s/^(\*+)/'!' x length($1)/mge;
  $content =~ s/$embedded_name//go;
  qq('''from [[$target]]'''\n) . escape($content);
}
sub make_include {
  my $target = shift;
  my $html = text_to_html(include($target));
  my $div_start = qq(<div class="included">);
  my $div_end = qq(</div>);

  return $div_start . $html . $div_end;
}

ありがとうございます!! 何でこうなるのかは、これから考えます…。

qq('''from [[$target]]'''\n) . escape($content);

ここのところ、改行がもう一つないと、ページ名に1行目の subjectline が並んでしまうようです。- rica 2003/12/06(Sat) 12:18:39

修正。2004/03/13(Sat)

[TOP↑] [管理]

てすと。

[TOP↑] [管理]

見出し

test

↑えええ。せっかくだからもっとテストしてってくださいよぉ。
こんなの とか こんなの とか。

_ほげほげ_tag-links テストちう。 ほげほげほげほげ tag-links テストちう。

てすてす本文

乱してストン。見出してすとん。

include の見出してすとん。

見出し毎の include

[TOP↑] [管理]

書式をさて置かれてしまうと話が進まないのですが、(見た目から入るおれカネゴンSHIMADA)

[[#include(StoreRoom*,rica)]]

という感じで指定するのがいいのでしょうか。 第二引数(検索文字列)を指定すると該当パラグラフのみを取り込むという仕様案。 ページ名に「*」で複数指定は必要? ちなみに今日の日付を引っ張ってくるには

[[#include_today(WikiLab*)]]

と別にしたほうがいいかも。--SHIMADA 2003/12/07(Sun) 14:11:42

SHIMADAさん ≠ カネゴン φ(..)。
ページ名に「*」で複数指定は必要? 必要な気がする…というより、カッコイイ…。 書式ですが、細かいことを言えば、従来通りの間の「:」が欲しいです。- rica 2003/12/07(Sun) 14:32:14

めも。

[TOP↑] [管理]
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage || [edit]
select css: default | sakura | mono | greenheck | snow | NN4.x用(多分) || LinuZau!! | VikiWiki!? || others |

管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || PUT