Added novelWriter flavour markdown as an export format, and cleaned up windows/unix line endings code
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""novelWriter Concatenated File
|
||||
|
||||
novelWriter – Concatenated File
|
||||
=================================
|
||||
Concatenate the standard novelWriter files to a single file
|
||||
|
||||
File History:
|
||||
Created: 2019-10-26 [0.3.1]
|
||||
|
||||
"""
|
||||
|
||||
import logging
|
||||
import nw
|
||||
|
||||
from os import path
|
||||
from PyQt5.QtWidgets import QMessageBox
|
||||
|
||||
from nw.convert.file.text import TextFile
|
||||
from nw.convert.tokenizer import Tokenizer
|
||||
from nw.enum import nwAlert, nwItemLayout
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class ConcatFile(TextFile):
|
||||
|
||||
def __init__(self, theProject, theParent):
|
||||
TextFile.__init__(self, theProject, theParent)
|
||||
|
||||
self.theConv = Tokenizer(self.theProject, self.theParent)
|
||||
|
||||
return
|
||||
|
||||
def addText(self, tHandle):
|
||||
|
||||
logger.verbose("Parsing content of item '%s'" % tHandle)
|
||||
|
||||
theItem = self.theProject.getItem(tHandle)
|
||||
isNone = theItem.itemLayout == nwItemLayout.NO_LAYOUT
|
||||
isNote = theItem.itemLayout == nwItemLayout.NOTE
|
||||
isNovel = not isNone and not isNote
|
||||
|
||||
if isNone:
|
||||
return False
|
||||
if isNote and not self.expNotes:
|
||||
return False
|
||||
if isNovel and not self.expNovel:
|
||||
return False
|
||||
|
||||
self.theConv.setText(tHandle)
|
||||
|
||||
theResult = self.theConv.theText
|
||||
|
||||
if self.winEnding:
|
||||
self.theConv.windowsEndings()
|
||||
|
||||
if theResult is not None and self.outFile is not None:
|
||||
self.outFile.write(theResult.rstrip())
|
||||
self.outFile.write(self.endLine)
|
||||
self.outFile.write(self.endLine)
|
||||
|
||||
return True
|
||||
|
||||
##
|
||||
# Internal Functions
|
||||
##
|
||||
|
||||
def _doOpenFile(self, filePath):
|
||||
try:
|
||||
self.outFile = open(filePath,mode="w+")
|
||||
except Exception as e:
|
||||
self.makeAlert(["Failed to open file.",str(e)], nwAlert.ERROR)
|
||||
return False
|
||||
return True
|
||||
|
||||
def _doCloseFile(self):
|
||||
if self.outFile is not None:
|
||||
self.outFile.close()
|
||||
return True
|
||||
|
||||
# END Class ConcatFile
|
||||
+10
-10
@@ -35,14 +35,14 @@ class HtmlFile(TextFile):
|
||||
def _doOpenFile(self, filePath):
|
||||
try:
|
||||
self.outFile = open(filePath,mode="w+")
|
||||
self.outFile.write("<!DOCTYPE html>\n")
|
||||
self.outFile.write("<html>\n")
|
||||
self.outFile.write("<head>\n")
|
||||
self.outFile.write("<style>\n")
|
||||
self.outFile.write(" pre {background-color: #ffff99;}\n")
|
||||
self.outFile.write("</style>\n")
|
||||
self.outFile.write("</head>\n")
|
||||
self.outFile.write("<body>\n")
|
||||
self.outFile.write("<!DOCTYPE html>"+self.endLine)
|
||||
self.outFile.write("<html>"+self.endLine)
|
||||
self.outFile.write("<head>"+self.endLine)
|
||||
self.outFile.write("<style>"+self.endLine)
|
||||
self.outFile.write(" pre {background-color: #ffff99;}"+self.endLine)
|
||||
self.outFile.write("</style>"+self.endLine)
|
||||
self.outFile.write("</head>"+self.endLine)
|
||||
self.outFile.write("<body>"+self.endLine)
|
||||
except Exception as e:
|
||||
self.makeAlert(["Failed to open file.",str(e)], nwAlert.ERROR)
|
||||
return False
|
||||
@@ -50,8 +50,8 @@ class HtmlFile(TextFile):
|
||||
|
||||
def _doCloseFile(self):
|
||||
if self.outFile is not None:
|
||||
self.outFile.write("</body>\n")
|
||||
self.outFile.write("</html>\n")
|
||||
self.outFile.write("</body>"+self.endLine)
|
||||
self.outFile.write("</html>"+self.endLine)
|
||||
self.outFile.close()
|
||||
return True
|
||||
|
||||
|
||||
@@ -34,16 +34,11 @@ class LaTeXFile(TextFile):
|
||||
|
||||
def _doOpenFile(self, filePath):
|
||||
|
||||
if self.winEnding:
|
||||
tN = "\r\n"
|
||||
else:
|
||||
tN = "\n"
|
||||
|
||||
try:
|
||||
self.outFile = open(filePath,mode="w+")
|
||||
self.outFile.write(r"\documentclass[12pt]{report}"+tN+tN)
|
||||
self.outFile.write(r"\usepackage[utf8]{inputenc}"+tN+tN)
|
||||
self.outFile.write(r"\begin{document}"+tN+tN)
|
||||
self.outFile.write(r"\documentclass[12pt]{report}"+self.endLine)
|
||||
self.outFile.write(r"\usepackage[utf8]{inputenc}"+self.endLine)
|
||||
self.outFile.write(r"\begin{document}"+self.endLine)
|
||||
except Exception as e:
|
||||
self.makeAlert(["Failed to open file.",str(e)], nwAlert.ERROR)
|
||||
return False
|
||||
@@ -52,13 +47,8 @@ class LaTeXFile(TextFile):
|
||||
|
||||
def _doCloseFile(self):
|
||||
|
||||
if self.winEnding:
|
||||
tN = "\r\n"
|
||||
else:
|
||||
tN = "\n"
|
||||
|
||||
if self.outFile is not None:
|
||||
self.outFile.write(r"\end{document}"+tN)
|
||||
self.outFile.write(r"\end{document}"+self.endLine)
|
||||
self.outFile.close()
|
||||
|
||||
return True
|
||||
|
||||
@@ -34,7 +34,7 @@ class TextFile():
|
||||
self.theText = ""
|
||||
self.expNovel = True
|
||||
self.expNotes = False
|
||||
self.winEnding = False
|
||||
self.winEnding = self.mainConf.osWindows
|
||||
|
||||
self.theConv = ToText(self.theProject, self.theParent)
|
||||
self.makeAlert = self.theParent.makeAlert
|
||||
@@ -43,6 +43,11 @@ class TextFile():
|
||||
self.setMeta(False)
|
||||
self.setWordWrap(80)
|
||||
|
||||
if self.winEnding:
|
||||
self.endLine = "\r\n"
|
||||
else:
|
||||
self.endLine = "\n"
|
||||
|
||||
return
|
||||
|
||||
##
|
||||
@@ -158,10 +163,8 @@ class TextFile():
|
||||
"""
|
||||
try:
|
||||
self.outFile = open(filePath,mode="w+")
|
||||
if self.winEnding:
|
||||
self.outFile.write("\r\n\r\n")
|
||||
else:
|
||||
self.outFile.write("\n\n")
|
||||
self.outFile.write(self.endLine)
|
||||
self.outFile.write(self.endLine)
|
||||
except Exception as e:
|
||||
self.makeAlert(["Failed to open file.",str(e)], nwAlert.ERROR)
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user