/[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 - (show 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
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