Merge pull request #299 from vkbo/doc_view_bugfix

Markdown to HTML Converter Bug
This commit is contained in:
Veronica K. Berglyd Olsen
2020-06-08 09:45:20 +02:00
committed by GitHub
4 changed files with 59 additions and 36 deletions
+1
View File
@@ -216,6 +216,7 @@ def main(sysArgs=None):
logger.addHandler(cHandle) logger.addHandler(cHandle)
logger.setLevel(debugLevel) logger.setLevel(debugLevel)
logger.info("This is %s %s" % (__package__, __version__))
# Check Packages and Versions # Check Packages and Versions
errorData = [] errorData = []
+17 -16
View File
@@ -312,23 +312,24 @@ class ToHtml(Tokenizer):
refTags = [] refTags = []
if theBits[0] in nwLabels.KEY_NAME: if theBits[0] in nwLabels.KEY_NAME:
retText += "<span class='tags'>%s:</span>&nbsp;" % nwLabels.KEY_NAME[theBits[0]] retText += "<span class='tags'>%s:</span>&nbsp;" % nwLabels.KEY_NAME[theBits[0]]
if theBits[0] == nwKeyWords.TAG_KEY: if len(theBits) > 1:
retText += "<a name='tag_%s'>%s</a>" % ( if theBits[0] == nwKeyWords.TAG_KEY:
theBits[1], theBits[1] retText += "<a name='tag_%s'>%s</a>" % (
) theBits[1], theBits[1]
else: )
if self.genMode == self.M_PREVIEW:
for tTag in theBits[1:]:
refTags.append("<a href='#%s=%s'>%s</a>" % (
theBits[0][1:], tTag, tTag
))
retText += ", ".join(refTags)
else: else:
for tTag in theBits[1:]: if self.genMode == self.M_PREVIEW:
refTags.append("<a href='#tag_%s'>%s</a>" % ( for tTag in theBits[1:]:
tTag, tTag refTags.append("<a href='#%s=%s'>%s</a>" % (
)) theBits[0][1:], tTag, tTag
retText += ", ".join(refTags) ))
retText += ", ".join(refTags)
else:
for tTag in theBits[1:]:
refTags.append("<a href='#tag_%s'>%s</a>" % (
tTag, tTag
))
retText += ", ".join(refTags)
return "<div>%s</div>" % retText return "<div>%s</div>" % retText
+25 -15
View File
@@ -476,22 +476,32 @@ class GuiBuildNovel(QDialog):
noteRoot &= tItem.itemType == nwItemType.ROOT noteRoot &= tItem.itemType == nwItemType.ROOT
noteRoot &= tItem.itemClass != nwItemClass.NOVEL noteRoot &= tItem.itemClass != nwItemClass.NOVEL
if noteRoot: try:
# Add headers for root folders of notes if noteRoot:
makeHtml.addRootHeading(tItem.itemHandle) # Add headers for root folders of notes
makeHtml.doConvert() makeHtml.addRootHeading(tItem.itemHandle)
self.htmlText.append(makeHtml.getResult()) makeHtml.doConvert()
self.nwdText.append(makeHtml.getFilteredMarkdown()) self.htmlText.append(makeHtml.getResult())
self.nwdText.append(makeHtml.getFilteredMarkdown())
elif self._checkInclude(tItem, noteFiles, novelFiles, ignoreFlag): elif self._checkInclude(tItem, noteFiles, novelFiles, ignoreFlag):
makeHtml.setText(tItem.itemHandle) makeHtml.setText(tItem.itemHandle)
makeHtml.doAutoReplace() makeHtml.doAutoReplace()
makeHtml.tokenizeText() makeHtml.tokenizeText()
makeHtml.doHeaders() makeHtml.doHeaders()
makeHtml.doConvert() makeHtml.doConvert()
makeHtml.doPostProcessing() makeHtml.doPostProcessing()
self.htmlText.append(makeHtml.getResult()) self.htmlText.append(makeHtml.getResult())
self.nwdText.append(makeHtml.getFilteredMarkdown()) self.nwdText.append(makeHtml.getFilteredMarkdown())
except Exception as e:
logger.error("Failed to generate html of document '%s'" % tItem.itemHandle)
logger.error(str(e))
self.docView.setText((
"Failed to generate preview. "
"Document with title '%s' could not be parsed."
) % tItem.itemName)
return False
# Update progress bar, also for skipped items # Update progress bar, also for skipped items
self.buildProgress.setValue(nItt+1) self.buildProgress.setValue(nItt+1)
+16 -5
View File
@@ -135,11 +135,22 @@ class GuiDocViewer(QTextBrowser):
aDoc = ToHtml(self.theProject, self.theParent) aDoc = ToHtml(self.theProject, self.theParent)
aDoc.setPreview(True, self.mainConf.viewComments) aDoc.setPreview(True, self.mainConf.viewComments)
aDoc.setLinkHeaders(True) aDoc.setLinkHeaders(True)
aDoc.setText(tHandle)
aDoc.doAutoReplace() # Be extra careful here to prevent crashes when first opening a
aDoc.tokenizeText() # project as a crash here leaves no way of recovering.
aDoc.doConvert() # See issue #298
aDoc.doPostProcessing() try:
aDoc.setText(tHandle)
aDoc.doAutoReplace()
aDoc.tokenizeText()
aDoc.doConvert()
aDoc.doPostProcessing()
except Exception as e:
logger.error("Failed to generate preview for document with handle '%s'" % tHandle)
logger.error(str(e))
self.setText("An error occurred while generating the preview.")
return False
self.setHtml(aDoc.theResult) self.setHtml(aDoc.theResult)
if self.theHandle == tHandle: if self.theHandle == tHandle:
self.verticalScrollBar().setValue(sPos) self.verticalScrollBar().setValue(sPos)