/[suikacvs]/markup/h2h/implementation/classic/H2H/V090.pm
Suika

Contents of /markup/h2h/implementation/classic/H2H/V090.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Sat Jul 19 12:46:44 2003 UTC (22 years, 11 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Branch point for: norakuro-d
Imported to CVS

1 wakaba 1.1
2     =head1 NAME
3    
4     H2H::V090.pm
5    
6     =head1 DESCRIPTION
7    
8     H2H/0.9 -> HTML converter core module
9    
10     =cut
11    
12     package H2H::V090;
13     $VERSION = '0.90';
14    
15     =head1 parse()
16    
17     Convert to HTML.
18    
19     =head2 EXAMPLE
20    
21     my $converted_html = H2H::V090->parse([2000,8,13,'diary'], @H2H_DOCUMENT);
22    
23     =cut
24    
25     sub parse {
26     my ($self, $prefix, @HNF) = @_;
27     &H2H::Template::init($prefix->{year},$prefix->{month},$prefix->{day},
28     $prefix->{prefix});
29     my ($header, $cd, %c) = (1, 0);
30     my ($retheader, $rethtml) = &H2H::HnfFile::start();
31    
32     for (@HNF) {
33     my $ret = $_;
34     $ret =~ tr/\x0d\x0a//d;
35     $ret =~ s/[ \t]+$//;
36     if ($ret) {
37     if ($header) {
38     if ($ret eq 'OK') {
39     $header = 0;
40     $retheader .= &H2H::HnfFile::endheader();
41     } else {
42     if ($ret =~ /^([0-9A-Z]+) +(.+)$/) {
43     $retheader .= &H2H::HnfFile::headervar($1, $2);
44     } elsif ($ret =~ /^([0-9A-Z]+)\* +([^ ]+) +(.+)$/) {
45     $retheader .= &H2H::HnfFile::headervar($1, $3, $2);
46     } else {
47     $retheader .= $H2H::error::invalidheader.$ret;
48     }
49     } undef $ret;
50     } elsif ($c{$cd}{fn}) {
51     if ($ret eq '/FN') {
52     &H2H::Command::endFN(); $c{$cd}{fn} = 0; undef $ret;
53     } elsif ($ret =~ /^LINK +([^ ]+) +(.+)$/) {
54     undef $ret;
55     &H2H::Command::textFN(&H2H::Command::textLINK($1, $2));
56     } elsif ($ret =~ /^RUBY +([^ ]+) +(.+)$/) {
57     undef $ret;
58     &H2H::Command::textFN(&H2H::Command::textRUBY($1, $2));
59     } else {
60     &H2H::Command::textFN($ret); undef $ret;
61     }
62     } elsif ($c{$cd}{ul} || $c{$cd}{ol}) {
63     if ($ret eq '/UL') {
64     $ret = &H2H::Command::endUL(); $c{$cd}{ul} = 0;
65     } elsif ($ret eq '/OL') {
66     $ret = &H2H::Command::endOL(); $c{$cd}{ol} = 0;
67     } elsif ($ret =~ /^LI\* +([^ ]+) +(.+)/) {
68     $ret = &H2H::Command::textLI(&H2H::Command::textLINK($1,$2));
69     } else {
70     $ret =~ s/^LI +//;
71     $ret = &H2H::Command::textLI($ret);
72     }
73     } else {
74     if ($ret eq 'P') {
75     undef $ret;
76     $ret = &H2H::Command::endP() if $c{$cd}{p};
77     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
78     $ret .= &H2H::Command::startP(); $c{$cd}{p} = 1;
79     } elsif ($ret =~ /^NEW +(.+)/) {
80     undef $ret;
81     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
82     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
83     $ret .= &H2H::Command::endDIV() if $c{$cd}{div}; $c{$cd}{div} = 0;
84     $ret .= &H2H::Command::endSUB() if $c{$cd}{sub}; $c{$cd}{sub} = 0;
85     $ret .= &H2H::Command::endNEW() if $c{$cd}{new};
86     $ret .= &H2H::Command::startNEW($1); $c{$cd}{new} = 1;
87     } elsif ($ret =~ /^NEW\* +([^ ]+) +(.+)/) {
88     undef $ret;
89     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
90     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
91     $ret .= &H2H::Command::endDIV() if $c{$cd}{div}; $c{$cd}{div} = 0;
92     $ret .= &H2H::Command::endSUB() if $c{$cd}{sub}; $c{$cd}{sub} = 0;
93     $ret .= &H2H::Command::endNEW() if $c{$cd}{new};
94     $ret .= &H2H::Command::startNEW($2,$1); $c{$cd}{new} = 1;
95     } elsif ($ret eq 'FN') {
96     $ret = &H2H::Command::startFN(); $c{$cd}{fn} = 1;
97     } elsif ($ret =~ /^YAMI(?: +(.+))?$/) {
98     if ($1) {
99     $ret = &H2H::Command::startYAMI($1);
100     } else {
101     undef $ret;
102     $ret = &H2H::Command::endYAMI() if $c{$cd}{yami}; $c{$cd}{yami} = 0;
103     $ret .= &H2H::Command::startYAMI(); $c{$cd}{yami} = 1;
104     }
105     } elsif ($ret eq '/YAMI') {
106     $ret = &H2H::Command::endYAMI($1); $c{$cd}{yami} = 0;
107     } elsif ($ret =~ /^RUBY +([^ ]+) +(.+)$/) {
108     $ret = &H2H::Command::textRUBY($1, $2);
109     } elsif ($ret =~ /^ACRONYM +([^ ]+) +(.+)$/) {
110     $ret = &H2H::Command::textACRONYM($1, $2);
111     } elsif ($ret =~ /^ABBR +([^ ]+) +(.+)$/) {
112     $ret = &H2H::Command::textABBR($1, $2);
113     } elsif ($ret =~ /^LINK +([^ ]+) +(.+)$/) {
114     $ret = &H2H::Command::textLINK($1, $2);
115     } elsif ($ret =~ /^PERSON +([^ ]+) +(.+)$/) {
116     $ret = &H2H::Command::textPERSON($1, $2);
117     } elsif ($ret =~ /^LDIARY +(\d\d\d\d) +(\d\d?) +(\d\d?) +(.+)$/) {
118     $ret = &H2H::Command::textLDIARY($1, $2, $3, $4);
119     } elsif ($ret=~/^LDIARY +(\d\d\d\d\d\d\d\d(?:i\d\d(?:s\d\d)?)?) +(.+)$/) {
120     $ret = &H2H::Command::textLDIARY2($1, $2);
121     } elsif ($ret=~/^SEE +([^ ]+) +(.+)$/) {
122     $ret = &H2H::Command::textSEE($1, $2);
123     } elsif ($ret =~ /^SUB +(.+)/) {
124     undef $ret;
125     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
126     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
127     $ret .= &H2H::Command::endDIV() if $c{$cd}{div}; $c{$cd}{div} = 0;
128     $ret .= &H2H::Command::endSUB() if $c{$cd}{sub};
129     $ret .= &H2H::Command::startSUB($1); $c{$cd}{sub} = 1;
130     } elsif ($ret =~ /^SUB\* +([^ ]+) +(.+)/) {
131     undef $ret;
132     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
133     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
134     $ret .= &H2H::Command::endDIV() if $c{$cd}{div}; $c{$cd}{div} = 0;
135     $ret .= &H2H::Command::endSUB() if $c{$cd}{sub};
136     $ret .= &H2H::Command::startSUB($2,$1); $c{$cd}{sub} = 1;
137     } elsif ($ret =~ /^CITE\*?(?: +([^ ]+)(?: +(.+))?)?$/) {
138     undef $ret;
139     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
140     $ret = &H2H::Command::startCITE($1, $2); $cd++;
141     } elsif ($ret eq '/CITE') {
142     undef $ret;
143     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
144     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
145     $ret .= &H2H::Command::endDIV() if $c{$cd}{div}; $c{$cd}{div} = 0;
146     $ret .= &H2H::Command::endYAMI() if $c{$cd}{yami}; $c{$cd}{yami} = 0;
147     $ret .= &H2H::Command::endCITE(); $cd--;
148     } elsif ($ret =~ /^DIV +(.+)$/) {
149     undef $ret;
150     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
151     $ret .= &H2H::Command::startDIV($1); $c{$cd}{div} = 1;
152     } elsif ($ret eq '/DIV') {
153     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
154     $ret = &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
155     $ret = &H2H::Command::endDIV(); $c{$cd}{div} = 0;
156     } elsif ($ret eq 'PRE') {
157     undef $ret;
158     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
159     $ret .= &H2H::Command::startPRE(); $c{$cd}{pre} = 1;
160     } elsif ($ret eq '/PRE') {
161     $ret = &H2H::Command::endPRE(); $c{$cd}{pre} = 0;
162     } elsif ($ret eq 'UL') {
163     undef $ret;
164     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
165     $ret = &H2H::Command::startUL(); $c{$cd}{ul} = 1;
166     } elsif ($ret eq 'OL') {
167     undef $ret;
168     $ret .= &H2H::Command::endPRE() if $c{$cd}{pre}; $c{$cd}{pre} = 0;
169     $ret = &H2H::Command::startOL(); $c{$cd}{ol} = 1;
170     } elsif ($ret =~ /^LMG +([^ ]+) +(.+)$/) {
171     $ret = &H2H::Command::textLMG($1,$2,$3);
172     } elsif ($ret =~ /^LIMG +([^ ]+) +[^ ] +([^ ]+) +(.+)$/) {
173     $ret = &H2H::Command::textLIMG($1,$2,$3);
174     } elsif ($ret =~ /^! +(.+)$/) {
175     $ret = &H2H::Command::textCOMMENT($1);
176     } elsif ($ret =~ /^!# +(.+)$/) {
177     $ret = &H2H::Command::textCOMMENT2($1);
178     } elsif ($ret eq '/P') {
179     $ret = &H2H::Command::endP() if $c{$cd}{p}; $c{$cd}{p} = 0;
180     }
181     }
182     $rethtml .= $ret.$H2H::nl if $ret;
183     }
184     }
185    
186     while ($cd) {
187     $rethtml .= &H2H::Command::endP() if $c{$cd}{p};
188     $rethtml .= &H2H::Command::endYAMI() if $c{$cd}{yami};
189     $rethtml .= &H2H::Command::endCITE(); $cd--;
190     }
191     $rethtml .= &H2H::Command::endP() if $c{0}{p};
192     $rethtml .= &H2H::Command::endYAMI() if $c{0}{yami};
193     $rethtml .= &H2H::Command::endSUB() if $c{0}{sub};
194     $rethtml .= &H2H::Command::endNEW() if $c{0}{new};
195     $rethtml .= &H2H::HnfFile::footnote();
196     $rethtml .= &H2H::HnfFile::end();
197     $self->{html} = $retheader.&H2H::HnfFile::tree().$rethtml;
198     $self->{html};
199     }
200    
201     =head1 LICENSE
202    
203     Public Domain.
204    
205     =head1 CHANGE
206    
207     2001-08-13 wakaba <wakaba@suika.fam.cx>
208    
209     * H2H::V090.pm: Copied. H2H/1.0 functions are removed.
210    
211     2001-04-29 wakaba
212    
213     * H2H::V100.pm: Forked.
214     * H2H::V100.pm: H2H/1.0 support.
215    
216     2001-04-03 wakaba
217    
218     * H2H.pm: Modulization.
219     * H2H.pm: Add `DIV' support.
220     * H2H.pm: Add `RUBY' support (in FN).
221    
222     2001-03-31 wakaba
223    
224     * H2H.pm: New file.
225    
226     =cut
227    
228     1;

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24