aboutsummaryrefslogtreecommitdiffstats
path: root/w3m-doc/sample/w3mdoc.pl
diff options
context:
space:
mode:
Diffstat (limited to 'w3m-doc/sample/w3mdoc.pl')
-rwxr-xr-xw3m-doc/sample/w3mdoc.pl102
1 files changed, 0 insertions, 102 deletions
diff --git a/w3m-doc/sample/w3mdoc.pl b/w3m-doc/sample/w3mdoc.pl
deleted file mode 100755
index 6097926..0000000
--- a/w3m-doc/sample/w3mdoc.pl
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/local/bin/perl
-
-package w3mdoc;
-
-sub CHECK {
- my($a, @b) = @_;
- for(@b) {
- defined($a->{$_}) || die("\"$a->{id}.$_\" is not defined.\n");
- }
-}
-
-sub DEF {
- my($a, $b, $c) = @_;
-
- if (! defined($data->{$a})) {
- $data->{$a} = bless { id => $a };
- }
- $data->{$a}{$b} = $c;
-}
-
-sub SUB {
- local($_) = @_;
- my($a, $b);
-
- if (/^\@(\w+)\.(\w+)\@$/) {
- ($a, $b) = ($1, $2);
- defined($data->{$a}) || die("\"$a.$b\" is not defined.\n");
- $data->{$a}->CHECK($b);
- return $data->{$a}{$b};
- }
- if (/^\@(\w+)\((\w+)\)\@$/) {
- ($a, $b) = ($1, $2);
- defined(&{$a}) || die("\"$a()\" is not defined.\n");
- defined($data->{$b}) || die("\"$a($b)\" is not defined.\n");
- return $data->{$b}->$a();
- }
- return '@';
-}
-
-package main;
-
-@ARGV || unshift(@ARGV, "-");
-while(@ARGV) {
- $file = shift @ARGV;
- &make_doc($file);
-}
-
-sub make_doc {
- my($file) = @_;
- my($in_def, $in_code, $code, $a, $b);
- local(*F);
- local($_);
-
- open(F, $file) || die("$file: $!\n");
- $in_def = 0;
- $in_code = 0;
- while(<F>) {
- if ($in_def) {
- if (/^\@end/) {
- $in_def = 0;
- next;
- }
- s/^\s+//;
- s/^(\w+)\.(\w+)// || next;
- ($a, $b) = ($1, $2);
- s/^\s+//;
- s/\s+$//;
- &w3mdoc::DEF($a, $b, $_);
- next;
- }
- if ($in_code) {
- if (/^\@end/) {
- eval "package w3mdoc; $code";
- $in_code = 0;
- next;
- }
- $code .= $_;
- next;
- }
- if (/^\@define/) {
- $in_def = 1;
- next;
- }
- if (/^\@code/) {
- $in_code = 1;
- $code = "";
- next;
- }
- if (s/^\@include\s+//) {
- s/\s+$//;
- &make_doc($_);
- next;
- }
- if (/^\@/) {
- die("unknown command: $_");
- }
- s/(\\@|\@(\w+(\.\w+|\(\w+\)))\@)/&w3mdoc::SUB($1)/eg;
- print;
- }
- close(F);
-}
-