eric7/E5XML/HighlightingStylesWriter.py

branch
eric7
changeset 8351
7d13e08ddb3f
parent 8350
74a3b2a6a944
child 8352
879dc528461f
equal deleted inserted replaced
8350:74a3b2a6a944 8351:7d13e08ddb3f
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2008 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the writer class for writing a highlighting styles XML
8 file.
9 """
10
11 import time
12
13 from .XMLStreamWriterBase import XMLStreamWriterBase
14 from .Config import highlightingStylesFileFormatVersion
15
16 import Preferences
17
18
19 class HighlightingStylesWriter(XMLStreamWriterBase):
20 """
21 Class implementing the writer class for writing a highlighting styles XML
22 file.
23 """
24 def __init__(self, device, lexers):
25 """
26 Constructor
27
28 @param device reference to the I/O device to write to (QIODevice)
29 @param lexers list of lexer objects for which to export the styles
30 """
31 XMLStreamWriterBase.__init__(self, device)
32
33 self.lexers = lexers
34 self.email = Preferences.getUser("Email")
35
36 def writeXML(self):
37 """
38 Public method to write the XML to the file.
39 """
40 XMLStreamWriterBase.writeXML(self)
41
42 self.writeDTD(
43 '<!DOCTYPE HighlightingStyles SYSTEM'
44 ' "HighlightingStyles-{0}.dtd">'.format(
45 highlightingStylesFileFormatVersion))
46
47 # add some generation comments
48 self.writeComment(" Eric highlighting styles ")
49 self.writeComment(
50 " Saved: {0}".format(time.strftime('%Y-%m-%d, %H:%M:%S')))
51 self.writeComment(" Author: {0} ".format(self.email))
52
53 # add the main tag
54 self.writeStartElement("HighlightingStyles")
55 self.writeAttribute("version", highlightingStylesFileFormatVersion)
56
57 for lexer in self.lexers:
58 self.writeStartElement("Lexer")
59 self.writeAttribute("name", lexer.language())
60 for description, style, substyle in lexer.getStyles():
61 self.writeStartElement("Style")
62 self.writeAttribute("style", str(style))
63 self.writeAttribute("substyle", str(substyle))
64 self.writeAttribute("color",
65 lexer.color(style, substyle).name())
66 self.writeAttribute("paper",
67 lexer.paper(style, substyle).name())
68 self.writeAttribute("font",
69 lexer.font(style, substyle).toString())
70 self.writeAttribute("eolfill",
71 str(lexer.eolFill(style, substyle)))
72 self.writeStartElement("Description")
73 self.writeCharacters(description)
74 self.writeEndElement() # Description
75 if substyle >= 0:
76 self.writeStartElement("Words")
77 self.writeCharacters(lexer.words(style, substyle).strip())
78 self.writeEndElement() # Words
79 self.writeEndElement() # Style
80 self.writeEndElement() # Lexer
81
82 self.writeEndElement() # HighlightingStyles
83 self.writeEndDocument()

eric ide

mercurial