1 |
wakaba |
1.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> |