1 |
<!DOCTYPE HTML> |
2 |
<title>$B$A$g(Bwwwwwwwwwww $B$J$s$>$3$l(Bwwwwwwwwwww</title> |
3 |
<link rel=stylesheet href="http://suika.fam.cx/www/style/html/xhtml"> |
4 |
<style> |
5 |
textarea { |
6 |
min-height: 10em; |
7 |
} |
8 |
</style> |
9 |
<script> |
10 |
function htescape (s) { |
11 |
return s.replace (/&/g, '&').replace (/</g, '<').replace (/"/g, '"'); |
12 |
} // htescape |
13 |
|
14 |
function wwwwwwwwwww2html (s) { |
15 |
s = s.split (/(\s+)/); |
16 |
var r = ['<!DOCTYPE HTML>']; |
17 |
var tagNames = []; |
18 |
|
19 |
for (var i = 0; i < s.length; i++) { |
20 |
var token = s[i]; |
21 |
var tagName; |
22 |
var attrs = {}; |
23 |
|
24 |
if (/^[w$B#w(B]+[^w$B#w(B]/.test (token)) { |
25 |
token = token.replace (/^[w$B#w(B]+([^w$B#w(B]+)[w$B#w(B]+/, function (_, t) { |
26 |
tagName = t; |
27 |
return ''; |
28 |
}); |
29 |
|
30 |
token = token.replace (/^[w$B#w(B]*[v$B#v(B]([^v$B#v(B]*)[v$B#v(B](?:([^v$B#v(B]*)[v$B#v(B])?/g, function (_, n, v) { |
31 |
attrs[n] = v; |
32 |
return ''; |
33 |
}); |
34 |
|
35 |
var tag = '<' + tagName; |
36 |
for (var n in attrs) { |
37 |
tag += ' ' + n + '="' + htescape (attrs[n]) + '"'; |
38 |
} |
39 |
tag += '>'; |
40 |
r.push (tag); |
41 |
|
42 |
if ({ |
43 |
p: true, li: true, dt: true, dd: true, div: true, table: true, |
44 |
ul: true, ol: true, dl: true, pre: true, form: true, |
45 |
h1: true, h2: true, h3: true, h4: true, h5: true, h6: true, |
46 |
section: true, article: true, header: true, hgroup: true, |
47 |
footer: true, nav: true, aside: true |
48 |
}[tagName] && {p: true, li: true, dt: true, dd: true}[tagNames[tagNames.length - 1]]) { |
49 |
tagNames.pop (); |
50 |
} |
51 |
tagNames.push (tagName); |
52 |
} else if (/^w+$/.test (token)) { |
53 |
r.push ('</' + tagNames.pop () + '>'); |
54 |
} else { |
55 |
r.push (htescape (token)); |
56 |
} |
57 |
} |
58 |
|
59 |
return r.join (''); |
60 |
} // wwwwwwwwwww2html |
61 |
|
62 |
function update () { |
63 |
document.getElementById ('html').innerHTML = htescape (wwwwwwwwwww2html (document.getElementById ('wwwwwwwwwww').value)); |
64 |
} |
65 |
|
66 |
window.onload = update; |
67 |
</script> |
68 |
|
69 |
<body class=has-abstract> |
70 |
|
71 |
<h1>wwwwwwwwwww</h1> |
72 |
|
73 |
<h2>$B%=!<%9(Bwwwwwwwwwwwwwwwwwwwwww</h2> |
74 |
|
75 |
<textarea id=wwwwwwwwwww onchange=" update () "> |
76 |
wwwwhtmlwwwwvlangvja-2chvwwww |
77 |
wwwwwwwwwwwheadwwwwwwwww |
78 |
wwwwwwtitlewwwwwwwww $B$A$g(Bwwwwwwwwwwww $B$J$s$>$3$l(Bwwwwwwwwwwwwww wwwwwwwwwwwwwwww |
79 |
wwwwwwwwwwwwwwwwwwwwwwww |
80 |
wwwwwwwwwwbodywwwwwwwwww |
81 |
wwwwwwwwwwh1wwwwwwwwwww |
82 |
$B$A$g#w#w#w#w#w#w#w#w#w#w#w#w#w#w(B $B$J$s$>$3$l#w#w#w#w#w$C$&$'#w$C$&$'#w(B |
83 |
wwwwwwwwwwwwwwwwwwwwwww |
84 |
|
85 |
$B#w#w#w#w#w#w#w#w#w#w#w#w#w(Bp$B#w#w#w#w#w#w#w#w(B $B$&#w#w#w#w$C$&$'$&$'$&$'#w#w#w#w#w#w#w#w(B |
86 |
wwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwww $B%F%i%+%*%9(Bwwwwwwwww $B$J$K$3$l#w#w#w#w#w#w#w(B |
87 |
|
88 |
$B#w#w#w#w#w#w#w#w#w#w#w#w#w(Bulwwwwwwwww |
89 |
wwwwwwwwwwwwwwwwliwwwwwwwww $B$"$o$o$"$o$o(Bwwwwwww $B$3$l$O$R$I$$(Bwwwwwwwww |
90 |
wwwwwwwwwwwwwwwliwwwwwwwwww $B$$$_$U(Bwwwwwwww wwwwwwwww |
91 |
wwwwwwwwwwliwwwwwwwwww $B:#KL;:6H(Bwwwwwwwww wwwww |
92 |
wwwwwwwwwww |
93 |
|
94 |
wwwwwwwwwwwwwwawwwwvhrefvhttp://www.google.com/vwwwwww $B$0$0$l%+%9(Bwwwwwwwwwwwwww wwww |
95 |
wwwwwwwwwwwwwwwwwwwwwwww |
96 |
wwwwwwwwwwwwwwwww |
97 |
</textarea> |
98 |
|
99 |
<h2>HTMLwwwwwwwwwww $BJQ497k2L(Bwwwwwwwwwwwwwwwwwwwwww</h2> |
100 |
|
101 |
<pre id=html></pre> |
102 |
|
103 |
<h2>$BJ8K!(Bwwwwwwwwwww</h2> |
104 |
|
105 |
<pre> |
106 |
wwwwwwwwwww := element *s |
107 |
element := stag content etag |
108 |
stag := 1*s 1*w tagname 1*w [attrs 1*w] |
109 |
etag := 1*s 1*w |
110 |
tagname := 1*<w, s $B0J30(B> |
111 |
attrs := *attr |
112 |
attr := v attr-name v [attr-value v] |
113 |
attr-name := 1*<v, s $B0J30(B> |
114 |
attr-value := 1*<v, s $B0J30(B> |
115 |
content := *(1*s <w, s $B0J30(B> *<s $B0J30(B> / element) |
116 |
s := <JavaScript /\s/> |
117 |
w := "w" / "$B#w(B" |
118 |
v := "v" / "$B#v(B" |
119 |
</pre> |
120 |
|
121 |
<p>$B$?$@$7(Bwwwwww |
122 |
<ul> |
123 |
<li>$B:G=i$N%?%0$NA0$N(B 1*s $B$O>JN,2DG=(Bwwwwwwwwwwww |
124 |
<li>p, div, ul $B$J$I0lIt%?%0$NA0$N(B etag $B$O!"$=$l$,(B p$B!"(Bli$B!"(Bdt$B!"(Bdd $B$N$$$:$l$+$NMWAG$N=*N;$r$"$i$o$9$J$i>JN,2DG=(Bwwwwwww |
125 |
</ul> |