http://www.mediawiki.org/wiki/Special:Code/MediaWiki/94979

Revision: 94979
Author:   inez
Date:     2011-08-19 01:57:14 +0000 (Fri, 19 Aug 2011)
Log Message:
-----------
Early version of getWikiDom for ListBlock

Modified Paths:
--------------
    trunk/parsers/wikidom/lib/es/es.ListBlock.js

Modified: trunk/parsers/wikidom/lib/es/es.ListBlock.js
===================================================================
--- trunk/parsers/wikidom/lib/es/es.ListBlock.js        2011-08-19 01:13:18 UTC 
(rev 94978)
+++ trunk/parsers/wikidom/lib/es/es.ListBlock.js        2011-08-19 01:57:14 UTC 
(rev 94979)
@@ -355,10 +355,62 @@
 };
 
 es.ListBlock.prototype.getWikiDom = function() {
-       return {
-               'type': 'list',
-               'items': []
-       };
+       var previousStyle,
+               stack = [],
+               previousLevel = -1,
+               items = this.list.items;
+
+       for( var i = 0; i < items.length; i++) {
+               var item = items[i];
+
+               if(item.level === previousLevel) {
+                       if(item.style !== previousStyle) {
+                               var x = stack.pop();
+                               if(!stack[stack.length - 
1].items[stack[stack.length - 1].items.length - 1].lists) {
+                                       stack[stack.length - 
1].items[stack[stack.length - 1].items.length - 1].lists = [];
+                               }
+                               stack[stack.length - 
1].items[stack[stack.length - 1].items.length - 1].lists.push(x);
+                               stack.push( {
+                                       'items' : [],
+                                       'style' : item.style
+                               } );
+                               previousStyle = item.style;
+                       }
+               }
+               
+               if(item.level > previousLevel) {
+                       console.log(item.content.getText());
+                       stack.push( {
+                               'items' : [],
+                               'style' : item.style
+                       } );
+                       previousLevel = item.level;
+
+               }
+               
+               if(item.level < previousLevel) {
+                       var x = stack.pop();
+                       if(!stack[stack.length - 1].items[stack[stack.length - 
1].items.length - 1].lists) {
+                               stack[stack.length - 
1].items[stack[stack.length - 1].items.length - 1].lists = []
+                       }
+                       stack[stack.length - 1].items[stack[stack.length - 
1].items.length - 1].lists.push(x);
+
+                       previousLevel = item.level;
+                       previousStyle = item.style;
+               }
+               
+               if(item.level == previousLevel) {
+                       stack[stack.length - 1].items.push(
+                               {
+                                       'line' : 
item.content.getWikiDomLines()[0]
+                               }
+                       );
+                       previousStyle = item.style;
+               }
+       }
+       
+       stack[0].type = 'list';
+       return stack[0];
 };
 
 /* Registration */


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to