def generateHtml (self, page): resultFileName = self.getHtmlPath() cache = self._getCacher (page, self._application) # Проверим, можно ли прочитать уже готовый HTML if (cache.canReadFromCache() and os.path.exists (resultFileName)) or page.readonly: try: return readTextFile (resultFileName) except IOError: MessageBox (_(u"Can't read file {}".format (resultFileName)), _(u"Error"), wx.ICON_ERROR | wx.OK) return u"" style = Style() stylepath = style.getPageStyle (page) generator = self._getHtmlGenerator (page) try: html = generator.makeHtml(stylepath) cache.saveHash() except IOError: MessageBox (_(u"Can't create HTML file"), _(u"Error"), wx.ICON_ERROR | wx.OK) return html
def testLinkToFilesHtml(self): """ Тест на то, что ссылки на прикрепленные файлы изменяютcя. Проверка на HTML-странице """ from export2html.exporterfactory import ExporterFactory pagename = u"Страница 1" exporter = ExporterFactory.getExporter(self.root[pagename]) exporter.export(outdir=self.outputdir, exportname=pagename, imagesonly=True, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, pagename + ".html")) self.assertTrue(u'<img src="{pagename}/add.png">'.format(pagename=pagename) in text) self.assertTrue(u'<img alt="Картинка" src="{pagename}/add.png" border="1">'.format(pagename=pagename) in text) self.assertTrue(u'<a href="{pagename}/wall1.gif">ссылка на файл</a>.'.format(pagename=pagename) in text) self.assertTrue( u'<a title="Это title" href="{pagename}/wall1.gif">ссылка на файл</a>.'.format(pagename=pagename) in text ) self.assertTrue( u'<a href="{pagename}/wall1.gif" title="Это title">ссылка на файл</a>.'.format(pagename=pagename) in text ) self.assertTrue(u"А этот __attach/ содержится в тексте" in text) self.assertFalse(u'<img src="__attach/add.png">' in text)
def testPreprocessing_01(self): """ Тест на работу препроцессинга """ Application.wikiroot = self.wikiroot Application.selectedPage = self.wikiroot[u"HTML-страница"] Application.onPreprocessing += self._onPreProcessing pageView = Application.mainWindow.pagePanel.pageView # Сначала по умолчанию выбирается вкладка с просмотром wx.GetApp().Yield() # Переключимся на вкладку с кодом pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX wx.GetApp().Yield() pageView.codeEditor.SetText(u"Абырвалг") # Переключимся на результирующий HTML pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX wx.GetApp().Yield() Application.onPreprocessing -= self._onPreProcessing result = readTextFile( os.path.join(self.wikiroot[u"HTML-страница"].path, PAGE_RESULT_HTML)) self.assertIn(u"Абырвалг 000", result)
def testPreprocessing_01(self): """ Тест на работу препроцессинга """ Application.wikiroot = self.wikiroot Application.selectedPage = self.wikiroot[u"HTML-страница"] Application.onPreprocessing += self._onPreProcessing pageView = Application.mainWindow.pagePanel.pageView # Сначала по умолчанию выбирается вкладка с просмотром wx.GetApp().Yield() # Переключимся на вкладку с кодом pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX wx.GetApp().Yield() pageView.codeEditor.SetText(u"Абырвалг") # Переключимся на результирующий HTML pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX wx.GetApp().Yield() Application.onPreprocessing -= self._onPreProcessing result = readTextFile(os.path.join(self.wikiroot[u"HTML-страница"].path, PAGE_RESULT_HTML)) self.assertIn(u"Абырвалг 000", result)
def testImproved1 (self): src = u"""<ul><li>Несортированный список. Элемент 1</li><li>Несортированный список. Элемент 2</li><li>Несортированный список. Элемент 3</li><ol><li>Вложенный сортированный список. Элемент 1</li><li>Вложенный сортированный список. Элемент 2</li><li>Вложенный сортированный список. Элемент 3</li><li>Вложенный сортированный список. Элемент 4</li><ul><li>Совсем вложенный сортированный список. Элемент 1</li><li>Совсем вложенный сортированный список. Элемент 2</li></ul><li>Вложенный сортированный список. Элемент 5</li></ol><ul><li>Вложенный несортированный список. Элемент 1</li></ul></ul>""" expectedResult = u"""<ul> <li>Несортированный список. Элемент 1</li> <li>Несортированный список. Элемент 2</li> <li>Несортированный список. Элемент 3</li> <ol> <li>Вложенный сортированный список. Элемент 1</li> <li>Вложенный сортированный список. Элемент 2</li> <li>Вложенный сортированный список. Элемент 3</li> <li>Вложенный сортированный список. Элемент 4</li> <ul> <li>Совсем вложенный сортированный список. Элемент 1</li> <li>Совсем вложенный сортированный список. Элемент 2</li> </ul> <li>Вложенный сортированный список. Элемент 5</li> </ol> <ul> <li>Вложенный несортированный список. Элемент 1</li> </ul> </ul>""" templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate (readTextFile (templatepath).strip()) result = tpl.substitute (BrHtmlImprover().run (src)) self.assertIn (expectedResult, result)
def testLinkToFilesWiki(self): """ Тест на то, что ссылки на прикрепленные файлы изменяютcя. Проверка на вики-странице """ from export2html.exporterfactory import ExporterFactory fullpagename = u"Типы страниц/wiki-страница" pagename = u"wiki-страница" exporter = ExporterFactory.getExporter(self.root[fullpagename]) exporter.export(outdir=self.outputdir, exportname=pagename, imagesonly=True, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, pagename + ".html")) self.assertTrue(u'<img src="{pagename}/add.png"/>'.format( pagename=pagename) in text) self.assertTrue( u'<a href="{pagename}/wall1.gif">ссылка на файл</a>'.format( pagename=pagename) in text) self.assertTrue(u'А этот __attach/ содержится в тексте' in text) self.assertTrue( u'<a href="{pagename}/image.jpg"><img src="{pagename}/__thumb/th_maxsize_250_image.jpg"/></a>' .format(pagename=pagename) in text)
def testImproved1(self): src = u"""<ul><li>Несортированный список. Элемент 1</li><li>Несортированный список. Элемент 2</li><li>Несортированный список. Элемент 3</li><ol><li>Вложенный сортированный список. Элемент 1</li><li>Вложенный сортированный список. Элемент 2</li><li>Вложенный сортированный список. Элемент 3</li><li>Вложенный сортированный список. Элемент 4</li><ul><li>Совсем вложенный сортированный список. Элемент 1</li><li>Совсем вложенный сортированный список. Элемент 2</li></ul><li>Вложенный сортированный список. Элемент 5</li></ol><ul><li>Вложенный несортированный список. Элемент 1</li></ul></ul>""" expectedResult = u"""<ul> <li>Несортированный список. Элемент 1</li> <li>Несортированный список. Элемент 2</li> <li>Несортированный список. Элемент 3</li> <ol> <li>Вложенный сортированный список. Элемент 1</li> <li>Вложенный сортированный список. Элемент 2</li> <li>Вложенный сортированный список. Элемент 3</li> <li>Вложенный сортированный список. Элемент 4</li> <ul> <li>Совсем вложенный сортированный список. Элемент 1</li> <li>Совсем вложенный сортированный список. Элемент 2</li> </ul> <li>Вложенный сортированный список. Элемент 5</li> </ol> <ul> <li>Вложенный несортированный список. Элемент 1</li> </ul> </ul>""" templatepath = os.path.join(getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate(readTextFile(templatepath).strip()) result = tpl.substitute(BrHtmlImprover().run(src)) self.assertIn(expectedResult, result)
def testLinkToPagesHtmlTitleNames(self): """ Тест для проверки того, как исправляются ссылки на страницы """ from export2html.titlenamegenerator import TitleNameGenerator from export2html.branchexporter import BranchExporter pagename = u"Страница 1" namegenerator = TitleNameGenerator(self.outputdir) branchExporter = BranchExporter(self.root[pagename], namegenerator, Application) branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, u"Страница 6.html")) self.assertTrue(u'<A HREF="/Типы страниц">/Типы страниц</A>' in text) self.assertTrue( u'<A HREF="Страница 2 (2).html">/Страница 1/Страница 2/Страница 6/Страница 7/Страница 2</A>' in text ) self.assertTrue(u'<A HREF="Страница 2 (2).html">Страница 7/Страница 2</A>' in text) self.assertTrue(u'<A HREF="Страница 2 (2).html">Еще одна ссылка</A>' in text) self.assertTrue(u'<A HREF="Страница 7.html">Страница 7</A>' in text) self.assertTrue( u'<A HREF="Страница 2 (2).html" title="бла-бла-бла">Ссылка на /Страница 1/Страница 2/Страница 6/Страница 7/Страница 2</A>' in text ) self.assertTrue(u'<A HREF="Страница 7.html" title="бла-бла-бла">Ссылка на Страницу 7</A>' in text)
def testChangeFontSize (self): self.config.fontSize.value = 20 content = u"бла-бла-бла" templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate (readTextFile (templatepath).strip()) result = tpl.substitute (content=content) self.assertIn (u"font-size:20pt;", result)
def testChangeFontSize(self): self.config.fontSize.value = 20 content = u"бла-бла-бла" templatepath = os.path.join(getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate(readTextFile(templatepath).strip()) result = tpl.substitute(content=content) self.assertIn(u"font-size:20pt;", result)
def generateHtml (self, page): path = self.getHtmlPath () if page.readonly and os.path.exists (path): # Если страница открыта только для чтения и html-файл уже существует, то покажем его return readTextFile (path) style = Style() stylepath = style.getPageStyle (page) try: tpl = HtmlTemplate (readTextFile (stylepath)) except: MessageBox (_(u"Page style Error. Style by default is used"), _(u"Error"), wx.ICON_ERROR | wx.OK) tpl = HtmlTemplate (readTextFile (style.getDefaultStyle())) content = self._changeContentByEvent (self.page, PreprocessingParams (page.content), Application.onPreprocessing) if page.autoLineWrap: content = self._changeContentByEvent (self.page, PreHtmlImprovingParams (content), Application.onPreHtmlImproving) config = HtmlRenderConfig (Application.config) improverFactory = HtmlImproverFactory (Application) text = improverFactory[config.HTMLImprover.value].run (content) else: text = content userhead = u"<title>{}</title>".format (page.title) result = tpl.substitute (content = text, userhead = userhead) result = self._changeContentByEvent (self.page, PostprocessingParams (result), Application.onPostprocessing) return result
def _loadCustomDict (self): """ Load and show custom dictionary """ self.customDict.SetValue (u'') try: text = readTextFile (self._getCustomDictFileName()) except (IOError, SystemError): return self.customDict.SetValue (self._sanitizeDictText (text))
def _loadCustomDict(self): """ Load and show custom dictionary """ self.customDict.SetValue(u'') try: text = readTextFile(self._getCustomDictFileName()) except (IOError, SystemError): return self.customDict.SetValue(self._sanitizeDictText(text))
def testChangeUserStyleRussian (self): style = u"p {background-color: maroon; /* Цвет фона под текстом параграфа */ color: white; /* Цвет текста */ }" self.config.userStyle.value = style content = u"бла-бла-бла" templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate (readTextFile (templatepath).strip()) result = tpl.substitute (content=content) self.assertTrue (style in result, result)
def makeHtml (self, stylepath): parser = Parser() content = parser.convert (self.page.content) text = BrHtmlImprover().run (content) head = u"" tpl = HtmlTemplate (readTextFile (stylepath)) result = tpl.substitute (content=text, userhead=head) return result
def testDefault (self): content = u"бла-бла-бла" result_right = ur"""<body> бла-бла-бла </body> </html>""" templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate (readTextFile (templatepath).strip()) result = tpl.substitute (content=content) self.assertIn (result_right, result.replace ("\r\n", "\n"))
def makeHtml(self, stylepath): parser = Parser() content = parser.convert(self.page.content) text = BrHtmlImprover().run(content) head = u"" tpl = HtmlTemplate(readTextFile(stylepath)) result = tpl.substitute(content=text, userhead=head) return result
def generateHtml(self, page): path = self.getHtmlPath() if page.readonly and os.path.exists(path): # Если страница открыта только для чтения и html-файл уже существует, то покажем его return readTextFile(path) style = Style() stylepath = style.getPageStyle(page) try: tpl = HtmlTemplate(readTextFile(stylepath)) except: MessageBox(_(u"Page style Error. Style by default is used"), _(u"Error"), wx.ICON_ERROR | wx.OK) tpl = HtmlTemplate(readTextFile(style.getDefaultStyle())) content = self._changeContentByEvent(self.page, PreprocessingParams(page.content), Application.onPreprocessing) if page.autoLineWrap: content = self._changeContentByEvent( self.page, PreHtmlImprovingParams(content), Application.onPreHtmlImproving) config = HtmlRenderConfig(Application.config) improverFactory = HtmlImproverFactory(Application) text = improverFactory[config.HTMLImprover.value].run(content) else: text = content userhead = u"<title>{}</title>".format(page.title) result = tpl.substitute(content=text, userhead=userhead) result = self._changeContentByEvent(self.page, PostprocessingParams(result), Application.onPostprocessing) return result
def testChangeUserStyleRussian(self): style = u"p {background-color: maroon; /* Цвет фона под текстом параграфа */ color: white; /* Цвет текста */ }" self.config.userStyle.value = style content = u"бла-бла-бла" templatepath = os.path.join(getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate(readTextFile(templatepath).strip()) result = tpl.substitute(content=content) self.assertTrue(style in result, result)
def testDefault(self): content = u"бла-бла-бла" result_right = ur"""<body> бла-бла-бла </body> </html>""" templatepath = os.path.join(getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate(readTextFile(templatepath).strip()) result = tpl.substitute(content=content) self.assertIn(result_right, result.replace("\r\n", "\n"))
def testImproved2 (self): src = ur"""<h2>Attach links</h2>Attach:file.odt<br><a href="__attach/file.odt">file.odt</a><br><a href="__attach/file.odt">alternative text</a><br><a href="__attach/file with spaces.pdf">file with spaces.pdf</a><h2>Images</h2>""" expectedResult = ur"""<h2>Attach links</h2> Attach:file.odt<br> <a href="__attach/file.odt">file.odt</a><br> <a href="__attach/file.odt">alternative text</a><br> <a href="__attach/file with spaces.pdf">file with spaces.pdf</a> <h2>Images</h2>""" templatepath = os.path.join (getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate (readTextFile (templatepath).strip()) result = tpl.substitute (BrHtmlImprover().run (src)) self.assertIn (expectedResult, result)
def _updateHtmlCode (self): if self.htmlcodePageIndex == -1: # Нет вкладки с кодом HTML. Ничего не делаем return try: html = readTextFile (self.getHtmlPath()) self.htmlCodeWindow.SetReadOnly (False) self.htmlCodeWindow.SetText (html) self.htmlCodeWindow.SetReadOnly (True) except IOError, e: MessageBox (_(u"Can't load file %s") % (unicode (e.filename)), _(u"Error"), wx.ICON_ERROR | wx.OK)
def testImproved2(self): src = ur"""<h2>Attach links</h2>Attach:file.odt<br><a href="__attach/file.odt">file.odt</a><br><a href="__attach/file.odt">alternative text</a><br><a href="__attach/file with spaces.pdf">file with spaces.pdf</a><h2>Images</h2>""" expectedResult = ur"""<h2>Attach links</h2> Attach:file.odt<br> <a href="__attach/file.odt">file.odt</a><br> <a href="__attach/file.odt">alternative text</a><br> <a href="__attach/file with spaces.pdf">file with spaces.pdf</a> <h2>Images</h2>""" templatepath = os.path.join(getTemplatesDir(), "__default", "__style.html") tpl = HtmlTemplate(readTextFile(templatepath).strip()) result = tpl.substitute(BrHtmlImprover().run(src)) self.assertIn(expectedResult, result)
def testLinkToPageByProticolLongNames(self): """ Тест на проверку того, что заменяются ссылки вида page://... """ from export2html.longnamegenerator import LongNameGenerator from export2html.branchexporter import BranchExporter Application.wikiroot = self.root namegenerator = LongNameGenerator(self.root) branchExporter = BranchExporter(self.root, namegenerator, Application) branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, u"samplewiki_Страница 1.html")) self.assertIn(u'<a href="samplewiki_Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html">', text)
def testRelativeLinkTitleNames_02(self): """ Тест на проверку того, что заменяются ссылки вида page://... """ from export2html.titlenamegenerator import TitleNameGenerator from export2html.branchexporter import BranchExporter Application.wikiroot = self.root namegenerator = TitleNameGenerator(self.outputdir) branchExporter = BranchExporter(self.root, namegenerator, Application) branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, u"Страница 2 (2).html")) self.assertIn(u'<a href="Страница 7.html">', text)
def testBranchContentTitleNames2(self): """ Экспорт дерева с короткими именами """ from export2html.titlenamegenerator import TitleNameGenerator from export2html.branchexporter import BranchExporter pagename = u"Страница 1" namegenerator = TitleNameGenerator(self.outputdir) branchExporter = BranchExporter(self.root[pagename], namegenerator, Application) branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, u"Страница 2 (2).html")) self.assertTrue(u'<img src="Страница 2 (2)/cd.png"/>' in text) self.assertTrue(u'<a href="Страница 2 (2)/cd_go.png">cd_go.png</a>' in text)
def testLinkToPagesHtmlLongNames(self): """ Тест для проверки того, как исправляются ссылки на страницы """ from export2html.longnamegenerator import LongNameGenerator from export2html.branchexporter import BranchExporter pagename = u"Страница 1" namegenerator = LongNameGenerator(self.root[pagename]) branchExporter = BranchExporter(self.root[pagename], namegenerator, Application) branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False) text = readTextFile( os.path.join(self.outputdir, u"Страница 1_Страница 2_Страница 6.html")) self.assertTrue(u'<A HREF="/Типы страниц">/Типы страниц</A>' in text) self.assertTrue( u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html">/Страница 1/Страница 2/Страница 6/Страница 7/Страница 2</A>' in text) self.assertTrue( u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html">Страница 7/Страница 2</A>' in text) self.assertTrue( u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html">Еще одна ссылка</A>' in text) self.assertTrue( u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7.html">Страница 7</A>' in text) self.assertTrue( u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7_Страница 2.html" title="бла-бла-бла">Ссылка на /Страница 1/Страница 2/Страница 6/Страница 7/Страница 2</A>' in text) self.assertTrue( u'<A HREF="Страница 1_Страница 2_Страница 6_Страница 7.html" title="бла-бла-бла">Ссылка на Страницу 7</A>' in text)
def testLinkToPageByProticolTitleNames_01(self): """ Тест на проверку того, что заменяются ссылки вида page://... """ from export2html.titlenamegenerator import TitleNameGenerator from export2html.branchexporter import BranchExporter Application.wikiroot = self.root namegenerator = TitleNameGenerator(self.outputdir) branchExporter = BranchExporter(self.root, namegenerator, Application) branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, u"Страница 1.html")) self.assertIn(u'<a href="Страница 2 (2).html">', text)
def testPostprocessing_02(self): """ Тест на работу постпроцессинга """ Application.wikiroot = self.wikiroot Application.selectedPage = self.wikiroot[u"HTML-страница"] Application.onPostprocessing += self._onPostProcessing pageView = Application.mainWindow.pagePanel.pageView # В начале по умолчанию выбирается вкладка с просмотром wx.GetApp().Yield() # Переключимся на вкладку с кодом pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX wx.GetApp().Yield() pageView.codeEditor.SetText(u"Абырвалг") # Попереключаемся между вкладками pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX wx.GetApp().Yield() pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX wx.GetApp().Yield() pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX wx.GetApp().Yield() pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX wx.GetApp().Yield() Application.onPostprocessing -= self._onPostProcessing result = readTextFile( os.path.join(self.wikiroot[u"HTML-страница"].path, PAGE_RESULT_HTML)) self.assertTrue(result.endswith(u" 111")) self.assertFalse(result.endswith(u" 111 111"))
def testLinkToFilesHtml(self): """ Тест на то, что ссылки на прикрепленные файлы изменяютcя. Проверка на HTML-странице """ from export2html.exporterfactory import ExporterFactory pagename = u"Страница 1" exporter = ExporterFactory.getExporter(self.root[pagename]) exporter.export(outdir=self.outputdir, exportname=pagename, imagesonly=True, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, pagename + ".html")) self.assertTrue(u'<img src="{pagename}/add.png">'.format( pagename=pagename) in text) self.assertTrue( u'<img alt="Картинка" src="{pagename}/add.png" border="1">'.format( pagename=pagename) in text) self.assertTrue( u'<a href="{pagename}/wall1.gif">ссылка на файл</a>.'.format( pagename=pagename) in text) self.assertTrue( u'<a title="Это title" href="{pagename}/wall1.gif">ссылка на файл</a>.' .format(pagename=pagename) in text) self.assertTrue( u'<a href="{pagename}/wall1.gif" title="Это title">ссылка на файл</a>.' .format(pagename=pagename) in text) self.assertTrue(u'А этот __attach/ содержится в тексте' in text) self.assertFalse(u'<img src="__attach/add.png">' in text)
def testBranchContentTitleNames2(self): """ Экспорт дерева с короткими именами """ from export2html.titlenamegenerator import TitleNameGenerator from export2html.branchexporter import BranchExporter pagename = u"Страница 1" namegenerator = TitleNameGenerator(self.outputdir) branchExporter = BranchExporter(self.root[pagename], namegenerator, Application) branchExporter.export(outdir=self.outputdir, imagesonly=False, alwaysOverwrite=False) text = readTextFile( os.path.join(self.outputdir, u"Страница 2 (2).html")) self.assertTrue(u'<img src="Страница 2 (2)/cd.png"/>' in text) self.assertTrue( u'<a href="Страница 2 (2)/cd_go.png">cd_go.png</a>' in text)
def testPostprocessing_02(self): """ Тест на работу постпроцессинга """ Application.wikiroot = self.wikiroot Application.selectedPage = self.wikiroot[u"HTML-страница"] Application.onPostprocessing += self._onPostProcessing pageView = Application.mainWindow.pagePanel.pageView # В начале по умолчанию выбирается вкладка с просмотром wx.GetApp().Yield() # Переключимся на вкладку с кодом pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX wx.GetApp().Yield() pageView.codeEditor.SetText(u"Абырвалг") # Попереключаемся между вкладками pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX wx.GetApp().Yield() pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX wx.GetApp().Yield() pageView.selectedPageIndex = HtmlPageView.RESULT_PAGE_INDEX wx.GetApp().Yield() pageView.selectedPageIndex = HtmlPageView.CODE_PAGE_INDEX wx.GetApp().Yield() Application.onPostprocessing -= self._onPostProcessing result = readTextFile(os.path.join(self.wikiroot[u"HTML-страница"].path, PAGE_RESULT_HTML)) self.assertTrue(result.endswith(u" 111")) self.assertFalse(result.endswith(u" 111 111"))
def testDownloading_css_url_02 (self): from webpage.downloader import Downloader, DownloadController template = u'url("{url}")' controller = DownloadController(self._tempDir, self._staticDirName) downloader = Downloader () examplePath = u'../test/webpage/example1/' exampleHtmlPath = os.path.join (examplePath, u'example1.html') downloader.start (self._path2url (exampleHtmlPath), controller) fname2_text = readTextFile (os.path.join (self._tempDir, self._staticDirName, u'fname2.css')) self.assertIn (template.format (url = u'basic2.css'), fname2_text) self.assertIn (template.format (url = u'basic4.css'), fname2_text) self.assertIn (template.format (url = u'basic5.css'), fname2_text) self.assertIn (template.format (url = u'basic6.css'), fname2_text) self.assertIn ('basic3.css', fname2_text) self.assertIn ('basic5.css', fname2_text)
def makeHtml (self, stylepath): # Get content content = (self.page.content if self.page.content else EmptyContent (Application.config).content) content = self._changeContentByEvent (self.page, PreprocessingParams (content), Application.onPreprocessing) # Create parser factory = ParserFactory () parser = factory.make(self.page, Application.config) config = HtmlRenderConfig (Application.config) # Parse wiki content html = parser.toHtml (content) # Improve HTML html = self._changeContentByEvent (self.page, PreHtmlImprovingParams (html), Application.onPreHtmlImproving) improverFactory = HtmlImproverFactory (Application) text = improverFactory[config.HTMLImprover.value].run (html) head = parser.head # Create final HTML file tpl = HtmlTemplate (readTextFile (stylepath)) result = tpl.substitute (content=text, userhead=head) result = self._changeContentByEvent (self.page, PostprocessingParams (result), Application.onPostprocessing) return result
def testDownloading_css_url_01 (self): from webpage.downloader import Downloader, DownloadController template = u'url("{url}")' controller = DownloadController(self._tempDir, self._staticDirName) downloader = Downloader () examplePath = u'../test/webpage/example1/' exampleHtmlPath = os.path.join (examplePath, u'example1.html') downloader.start (self._path2url (exampleHtmlPath), controller) fname1_text = readTextFile (os.path.join (self._tempDir, self._staticDirName, u'fname1.css')) self.assertIn (template.format (url = u'import1.css'), fname1_text) self.assertIn (template.format (url = u'back_img_01.png'), fname1_text) self.assertIn (template.format (url = u'back_img_02.png'), fname1_text) self.assertIn (template.format (url = u'back_img_03.png'), fname1_text) self.assertIn (template.format (url = u'back_img_04.png'), fname1_text) self.assertIn (template.format (url = u'back_img_05.png'), fname1_text) self.assertIn (template.format (url = u'back_img_06.png'), fname1_text)
def makeHtml(self, stylepath): # Get content content = (self.page.content if self.page.content else EmptyContent( Application.config).content) content = self._changeContentByEvent(self.page, PreprocessingParams(content), Application.onPreprocessing) # Create parser factory = ParserFactory() parser = factory.make(self.page, Application.config) config = HtmlRenderConfig(Application.config) # Parse wiki content html = parser.toHtml(content) # Improve HTML html = self._changeContentByEvent(self.page, PreHtmlImprovingParams(html), Application.onPreHtmlImproving) improverFactory = HtmlImproverFactory(Application) text = improverFactory[config.HTMLImprover.value].run(html) head = parser.head # Create final HTML file tpl = HtmlTemplate(readTextFile(stylepath)) result = tpl.substitute(content=text, userhead=head) result = self._changeContentByEvent(self.page, PostprocessingParams(result), Application.onPostprocessing) return result
def testLinkToFilesWiki(self): """ Тест на то, что ссылки на прикрепленные файлы изменяютcя. Проверка на вики-странице """ from export2html.exporterfactory import ExporterFactory fullpagename = u"Типы страниц/wiki-страница" pagename = u"wiki-страница" exporter = ExporterFactory.getExporter(self.root[fullpagename]) exporter.export(outdir=self.outputdir, exportname=pagename, imagesonly=True, alwaysOverwrite=False) text = readTextFile(os.path.join(self.outputdir, pagename + ".html")) self.assertTrue(u'<img src="{pagename}/add.png"/>'.format(pagename=pagename) in text) self.assertTrue(u'<a href="{pagename}/wall1.gif">ссылка на файл</a>'.format(pagename=pagename) in text) self.assertTrue(u"А этот __attach/ содержится в тексте" in text) self.assertTrue( u'<a href="{pagename}/image.jpg"><img src="{pagename}/__thumb/th_maxsize_250_image.jpg"/></a>'.format( pagename=pagename ) in text )