E5XML/HighlightingStylesWriter.py

Fri, 10 Sep 2010 08:54:33 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 10 Sep 2010 08:54:33 +0200
changeset 580
45c38566b001
parent 411
99409cddaaa9
child 593
32c9b36eec53
permissions
-rw-r--r--

Implemented the plug-in repository reader.

# -*- coding: utf-8 -*-

# Copyright (c) 2008 - 2010 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing the writer class for writing a highlighting styles XML file.
"""

import time

from .XMLWriterBase import XMLWriterBase
from .Config import highlightingStylesFileFormatVersion

import Preferences

class HighlightingStylesWriter(XMLWriterBase):
    """
    Class implementing the writer class for writing a highlighting styles XML file.
    """
    def __init__(self, file, lexers):
        """
        Constructor
        
        @param file open file (like) object for writing
        @param lexers list of lexer objects for which to export the styles
        """
        XMLWriterBase.__init__(self, file)
        
        self.lexers = lexers
        self.email = Preferences.getUser("Email")
        
    def writeXML(self):
        """
        Public method to write the XML to the file.
        """
        XMLWriterBase.writeXML(self)
        
        self._write('<!DOCTYPE HighlightingStyles SYSTEM "HighlightingStyles-{0}.dtd">'\
            .format(highlightingStylesFileFormatVersion))
        
        # add some generation comments
        self._write("<!-- Eric5 highlighting styles -->")
        self._write("<!-- Saved: {0} -->".format(time.strftime('%Y-%m-%d, %H:%M:%S')))
        self._write("<!-- Author: {0} -->".format(self.escape("{0}".format(self.email))))
        
        # add the main tag
        self._write('<HighlightingStyles version="{0}">'.format(
            highlightingStylesFileFormatVersion))
        
        for lexer in self.lexers:
            self._write('  <Lexer name="{0}">'.format(lexer.language()))
            for style in lexer.descriptions:
                self._write('    <Style style="{0:d}" '
                    'color="{1}" paper="{2}" font="{3}" eolfill="{4:d}">{5}</Style>'\
                    .format(style, lexer.color(style).name(), lexer.paper(style).name(), 
                            lexer.font(style).toString(), lexer.eolFill(style), 
                            self.escape(lexer.description(style)))
                )
            self._write('  </Lexer>')
        
        self._write("</HighlightingStyles>", newline = False)

eric ide

mercurial