Helpviewer/Bookmarks/BookmarksImporters/HtmlImporter.py

changeset 1732
b140a24e147a
parent 1725
d7a3430f7cbf
child 1965
96f5a76e1845
--- a/Helpviewer/Bookmarks/BookmarksImporters/HtmlImporter.py	Sat Mar 24 19:30:26 2012 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/HtmlImporter.py	Sun Mar 25 14:01:25 2012 +0200
@@ -8,73 +8,16 @@
 """
 
 import os
-import tempfile
 
-from PyQt4.QtCore import QCoreApplication, QXmlStreamReader, QDate, Qt
-from PyQt4.QtWebKit import QWebPage
+from PyQt4.QtCore import QCoreApplication, QDate, Qt
 
 from ..BookmarkNode import BookmarkNode
-from ..XbelReader import XbelReader
+from ..NsHtmlReader import NsHtmlReader
 
 from .BookmarksImporter import BookmarksImporter
 
 import UI.PixmapCache
 
-##########################################################################################
-
-extract_js = r"""
-function walk() {
-    var parent = arguments[0];
-    var indent = arguments[1];
-
-    var result = "";
-    var children = parent.childNodes;
-    var folderName = "";
-    var folded = "";
-    for (var i = 0; i < children.length; i++) {
-        var object = children.item(i);
-        if (object.nodeName == "HR") {
-            result += indent + "<separator/>\n";
-        }
-        if (object.nodeName == "H3") {
-            folderName = object.innerHTML;
-            folded = object.folded;
-            if (object.folded == undefined)
-                folded = "false";
-            else
-                folded = "true";
-        }
-        if (object.nodeName == "A") {
-            result += indent + "<bookmark href=\"" + encodeURI(object.href).replace(/&/g, '&amp;') + "\">\n";
-            result += indent + indent + "<title>" + object.innerHTML + "</title>\n";
-            result += indent + "</bookmark>\n";
-        }
-
-        var currentIndent = indent;
-        if (object.nodeName == "DL" && folderName != "") {
-            result += indent + "<folder folded=\"" + folded + "\">\n";
-            indent += "    ";
-            result += indent + "<title>" + folderName + "</title>\n";
-        }
-        result += walk(object, indent);
-        if (object.nodeName == "DL" && folderName != "") {
-            result += currentIndent + "</folder>\n";
-        }
-    }
-    return result;
-}
-
-var xbel = walk(document, "    ");
-
-if (xbel != "") {
-    xbel = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE xbel>\n<xbel version=\"1.0\">\n" + xbel + "</xbel>\n";
-}
-
-xbel;
-"""
-
-##########################################################################################
-
 
 def getImporterInfo(id):
     """
@@ -144,36 +87,8 @@
         
         @return imported bookmarks (BookmarkNode)
         """
-        try:
-            f = open(self.__fileName, "r", encoding="utf-8")
-            contents = f.read()
-            f.close()
-        except IOError as err:
-            self._error = True
-            self._errorString = self.trUtf8("File '{0}' cannot be read.\nReason: {1}")\
-                .format(self.__fileName, str(err))
-            return None
-        
-        reader = XbelReader()
-        webpage = QWebPage()
-        webpage.mainFrame().setHtml(contents)
-        result = webpage.mainFrame().evaluateJavaScript(extract_js)
-        
-        fd, name = tempfile.mkstemp(text=True)
-        f = os.fdopen(fd, "w")
-        f.write(result)
-        f.close()
-        importRootNode = reader.read(name)
-        os.remove(name)
-        
-        if reader.error() != QXmlStreamReader.NoError:
-            self._error = True
-            self._errorString = self.trUtf8(
-                """Error when importing bookmarks on line {0}, column {1}:\n{2}""")\
-                .format(reader.lineNumber(),
-                        reader.columnNumber(),
-                        reader.errorString())
-            return None
+        reader = NsHtmlReader()
+        importRootNode = reader.read(self.__fileName)
         
         importRootNode.setType(BookmarkNode.Folder)
         if self._id == "html":

eric ide

mercurial