/[suikacvs]/markup/html/scripting-parser/parser.html
Suika

Contents of /markup/html/scripting-parser/parser.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations) (download) (as text)
Fri Apr 25 13:42:51 2008 UTC (18 years, 4 months ago) by wakaba
Branch: MAIN
Changes since 1.5: +103 -14 lines
File MIME type: text/html
<script src> in parsing algorithm is now supported

1 wakaba 1.1 <!DOCTYPE HTML>
2     <html lang=en>
3     <head>
4     <title>Demo of HTML5 Parsing Algorithm with Scripting Enabled</title>
5     <style>
6     textarea {
7     display: block;
8     width: 80%;
9     margin-left: auto;
10     margin-right: auto;
11     min-height: 20em;
12     }
13     output {
14     display: block;
15     font-family: monospace;
16 wakaba 1.4 white-space: -moz-pre-wrap;
17     white-space: pre-wrap;
18 wakaba 1.1 }
19     </style>
20     <script>
21     function update () {
22     document.logElement.textContent = '';
23 wakaba 1.2 var p = new Parser (new InputStream (document.sourceElement.value));
24 wakaba 1.4 var doc = p.doc;
25 wakaba 1.2 p.parse ();
26 wakaba 1.4 log (dumpTree (doc, ''));
27 wakaba 1.1 } // update
28    
29 wakaba 1.6 var logIndentLevel = 0;
30 wakaba 1.1 function log (s) {
31 wakaba 1.6 for (var i = 0; i < logIndentLevel; i++) {
32     s = ' ' + s;
33     }
34 wakaba 1.1 document.logElement.appendChild (document.createTextNode (s + "\n"));
35     } // log
36    
37     function InputStream (s) {
38     this.s = s;
39     } // InputStream
40    
41 wakaba 1.4 function Parser (i, doc) {
42 wakaba 1.1 this.parseMode = 'pcdata';
43 wakaba 1.4 if (!doc) {
44     doc = new JSDocument (this);
45     doc.manakaiIsHTML = true;
46     }
47     this.doc = doc;
48     this.openElements = [doc];
49 wakaba 1.2 this.in = i;
50 wakaba 1.4 this.scriptsExecutedAfterParsing = [];
51 wakaba 1.1 } // Parser
52    
53 wakaba 1.2