news: Output reStructuredText for the ASCII version

The ASCII output our scripts produce is already very close to
reStructuredText, and with just a few extra tweaks we can get
almost all of the way there.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Andrea Bolognani 2020-06-02 12:24:45 +02:00
parent 1482f2148c
commit 0ccfcd0361
2 changed files with 43 additions and 17 deletions

View File

@ -8,36 +8,48 @@
<!-- Document --> <!-- Document -->
<xsl:template match="/libvirt"> <xsl:template match="/libvirt">
<xsl:text>libvirt releases <xsl:text>================
libvirt releases
================ ================
This is the list of official releases for libvirt, along with an overview of
the changes introduced by each of them.
For a more fine-grained view, use the `git log`_.
</xsl:text> </xsl:text>
<xsl:apply-templates select="release"/> <xsl:apply-templates select="release"/>
<xsl:text> <xsl:text>
==============================================================================
Older libvirt releases didn't have proper release notes: if you are interested Older libvirt releases didn't have proper release notes: if you are interested
in changes between them, you should check out docs/news-*.html or the full git in changes between them, you should check out docs/news-\*.html or the full git
log (see instructions in ChangeLog). log (see instructions in ChangeLog).
.. _git log: https://gitlab.com/libvirt/libvirt/-/commits/master
</xsl:text> </xsl:text>
</xsl:template> </xsl:template>
<!-- Release --> <!-- Release -->
<xsl:template match="release"> <xsl:template match="release">
<xsl:text> <xsl:text>
# </xsl:text>
</xsl:text>
<xsl:value-of select="@version"/> <xsl:value-of select="@version"/>
<xsl:text> (</xsl:text> <xsl:text> (</xsl:text>
<xsl:value-of select="@date"/> <xsl:value-of select="@date"/>
<xsl:text>) <xsl:text>)
===================
</xsl:text> </xsl:text>
<xsl:apply-templates select="section"/> <xsl:apply-templates select="section"/>
</xsl:template> </xsl:template>
<!-- Section --> <!-- Section -->
<xsl:template match="section"> <xsl:template match="section">
<xsl:text> <xsl:text>
* </xsl:text> * **</xsl:text>
<xsl:value-of select="@title"/> <xsl:value-of select="@title"/>
<xsl:text> <xsl:text>**
</xsl:text> </xsl:text>
<xsl:apply-templates select="change"/> <xsl:apply-templates select="change"/>
</xsl:template> </xsl:template>
@ -60,10 +72,24 @@ log (see instructions in ChangeLog).
<!-- Change description --> <!-- Change description -->
<xsl:template match="description"> <xsl:template match="description">
<xsl:text>
</xsl:text>
<xsl:text>|</xsl:text> <!-- This will be removed when reformatting --> <xsl:text>|</xsl:text> <!-- This will be removed when reformatting -->
<xsl:value-of select="normalize-space()"/> <xsl:apply-templates/>
<xsl:text> <xsl:text>
</xsl:text> </xsl:text>
</xsl:template> </xsl:template>
<!-- Regular text in change description -->
<xsl:template match="description//text()">
<xsl:value-of select="normalize-space()"/>
</xsl:template>
<!-- <code> HTML tag in change description -->
<xsl:template match="description//code">
<xsl:text disable-output-escaping="yes"> ``</xsl:text>
<xsl:apply-templates/>
<xsl:text disable-output-escaping="yes">`` </xsl:text>
</xsl:template>
</xsl:stylesheet> </xsl:stylesheet>

View File

@ -61,22 +61,22 @@ def reformat(line):
# on the first character # on the first character
marker = line[0] marker = line[0]
# Release # Section
if marker == '#': if marker == '*':
initial_indent = 0 initial_indent = 0
indent = 2 indent = 2
# Section
elif marker == '*':
initial_indent = 2
indent = 4
# Change summary # Change summary
elif marker == '-': elif marker == '-':
initial_indent = 4 initial_indent = 2
indent = 6 indent = 4
# We use different markers to be able to tell apart the various
# possible indentation levels, but we want to always output the
# same marker in the generated file
line = '*' + line[1:]
# Change description # Change description
elif marker == '|': elif marker == '|':
initial_indent = 8 initial_indent = 4
indent = 8 indent = 4
# In this one case, the marker should not ultimately show # In this one case, the marker should not ultimately show
# up in the output file, so we strip it before moving on # up in the output file, so we strip it before moving on
line = line[1:] line = line[1:]