From 68a07bf03b7624c9924065cce9ffa45497225834 Mon Sep 17 00:00:00 2001 From: Akinori Ito Date: Thu, 8 Nov 2001 05:14:08 +0000 Subject: Initial revision --- w3m-doc/sample/README | 41 +++++++ w3m-doc/sample/define.wd | 4 + w3m-doc/sample/html.wd | 18 +++ w3m-doc/sample/keymap.cgi | 268 +++++++++++++++++++++++++++++++++++++++++++++ w3m-doc/sample/s.wd | 8 ++ w3m-doc/sample/sample.html | 6 + w3m-doc/sample/sample.wd | 11 ++ w3m-doc/sample/w3mdoc.pl | 102 +++++++++++++++++ 8 files changed, 458 insertions(+) create mode 100644 w3m-doc/sample/README create mode 100644 w3m-doc/sample/define.wd create mode 100644 w3m-doc/sample/html.wd create mode 100755 w3m-doc/sample/keymap.cgi create mode 100644 w3m-doc/sample/s.wd create mode 100644 w3m-doc/sample/sample.html create mode 100644 w3m-doc/sample/sample.wd create mode 100755 w3m-doc/sample/w3mdoc.pl (limited to 'w3m-doc/sample') diff --git a/w3m-doc/sample/README b/w3m-doc/sample/README new file mode 100644 index 0000000..7bb9dab --- /dev/null +++ b/w3m-doc/sample/README @@ -0,0 +1,41 @@ + +使い方 + perl w3mdoc.pl sample.wd > sample.html + +展開されるもの + +* @xxx.yyy@ + + @define 〜 @end 内で定義された値に展開される。 + +* @YYY(xxx)@ + + @code 〜 @end 内で定義された関数を呼び出して展開される。 + + 例) + URL(xxx) xxx.url + LINK(xxx) xxx.title + MAILTO(xxx) xxx.name + +コマンド一覧 + +* 定義 + @define + xxx.yyy zzz + @end + + xxx.yyy を zzz と定義する。xxx は以下の関数の引数にもなる。 + 例は define.wd を参照。 + +* コード(関数定義) + @code + コード + @end + + w3mdoc を実装している言語のコードを直接書く。とりあえず perl5。 + 例は html.wd を参照。 + +* インクルード + @include file + + ファイルを include する。 diff --git a/w3m-doc/sample/define.wd b/w3m-doc/sample/define.wd new file mode 100644 index 0000000..f588f4c --- /dev/null +++ b/w3m-doc/sample/define.wd @@ -0,0 +1,4 @@ +@define +hsaka.url http://www2u.biglobe.ne.jp/~hsaka/ +hsaka.title 坂本浩則のホームページ +@end diff --git a/w3m-doc/sample/html.wd b/w3m-doc/sample/html.wd new file mode 100644 index 0000000..1b1d7f2 --- /dev/null +++ b/w3m-doc/sample/html.wd @@ -0,0 +1,18 @@ +@code +sub URL { + $_[0]->CHECK(qw(url)); + $_[0]->{url}; +} +sub LINK { + $_[0]->CHECK(qw(url title)); + "{url}\">$_[0]->{title}"; +} +sub LINK_SEC { + $_[0]->CHECK(qw(url section title)); + "{url}\">$_[0]->{section} $_[0]->{title}"; +} +sub MAILTO { + $_[0]->CHECK(qw(address name)); + "{address}\">$_[0]->{name}"; +} +@end diff --git a/w3m-doc/sample/keymap.cgi b/w3m-doc/sample/keymap.cgi new file mode 100755 index 0000000..f68f5fb --- /dev/null +++ b/w3m-doc/sample/keymap.cgi @@ -0,0 +1,268 @@ +#!/usr/local/bin/perl + +$QUERY = $ENV{'QUERY_STRING'}; +$KEYMAP = "$ENV{'HOME'}/.w3m/keymap"; + +if ($QUERY) { + # &write_keymap($QUERY); + print <) { + s/^keymap\s+// || next; + (($k, $_) = &getQWord($_)) || next; + (($f, $_) = &getWord($_)) || next; + $FUNC_EXIST{$f} || next; + ($d, $_) = &getQWord($_); + push(@key, $k); + push(@func, $f); + push(@data, $d); +} +close(KEYMAP); + +$N = @key; + +print <Keymap Setting +

Keymap Setting

+
+ +
 Key Command Argument +
+ + +

+EOF +$i = 0; +while(@key) { + $k = &Q(shift @key); + $f = shift @func; + $d = &Q(shift @data); + print <
 $k + +Delete +EOF + $i++; +} +print < + +EOF + +sub write_keymap { + local($query) = @_; + @key = (); + @func = (); + @data = (); + + for $q (split('&', $query)) { + ($_, $d) = split('=', $q); + if (s/^k_//) { + $key[$_] = $d; + } elsif (s/^f_//) { + $func[$_] = $d; + } elsif (s/^d_//) { + $data[$_] = $d; + } elsif (s/^del_//) { + $del[$_] = 1; + } + } + open(KEYMAP, "> ${KEYMAP}") || next; + while(@key) { + $k = &UQ(shift @key); + $f = shift @func; + $d = &UQ(shift @data); + ($f =~ /^\w/) || next; + (shift @del) && next; + print KEYMAP "keymap\t$k\t$f"; + if ($d ne '') { + if ($d =~ /[\"\'\\\s]/) { + $d =~ s/([\"\\])/\\$1/g; + print KEYMAP "\t\t\"$d\""; + } else { + $d =~ s/([\"\\])/\\$1/g; + print KEYMAP "\t\t$d"; + } + } + print KEYMAP "\n"; + } + close(KEYMAP); +} + +sub UQ { + local($_) = @_; + s/\+/ /g; + s/%([\da-f][\da-f])/pack('c', hex($1))/egi; + return $_; +} + +sub Q { + local($_) = @_; + s/\&/\&/g; + s/\/\>/g; + s/\"/\"/g; + return $_; +} + +sub getQWord { + local($_) = @_; + local($x) = ''; + s/^\s+//; + while($_ ne '') { + if (s/^\'(([^\'\\]|\\.)*)\'// || + s/^\"(([^\"\\]|\\.)*)\"// || + s/^([^\'\"\\\s]+)// || s/^\\(.)//) { + $x .= $1; + } else { + last; + } + } + return ($x, $_); +} + +sub getWord { + local($_) = @_; + s/^\s+//; + s/^(\S+)// || return (); + return ($1, $_); +} + +sub print_func { + local($f) = @_; + for(@FUNC_LIST) { + if ($f eq $_) { + print "