-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmm2rst.xslt
104 lines (95 loc) · 3.56 KB
/
mm2rst.xslt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:template name="repeater">
<xsl:param name="theString" select="''"/>
<xsl:param name="numberOfTimes" select="0"/>
<xsl:if test="$numberOfTimes > 0">
<xsl:value-of select="$theString"/>
<xsl:call-template name="repeater">
<xsl:with-param name="theString" select="$theString"/>
<xsl:with-param name="numberOfTimes" select="$numberOfTimes - 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="replace">
<xsl:param name="text"/>
<!--<xsl:param name="replace"/>-->
<xsl:param name="by"/>
<xsl:choose>
<xsl:when test="contains($text,' ')">
<xsl:value-of select="substring-before($text,' ')"/>
<xsl:value-of select="$by"/>
<xsl:call-template name="replace">
<xsl:with-param name="text" select="substring-after($text,' ')"/>
<!--<xsl:with-param name="replace" select="$replace"/>-->
<xsl:with-param name="by" select="$by"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:output method="text" encoding="UTF-8" />
<xsl:strip-space elements="*"/>
<xsl:template match="/map/node">
<xsl:value-of select="@TEXT"/><xsl:text> </xsl:text>
<xsl:call-template name="repeater">
<xsl:with-param name="theString" select="'='"/>
<xsl:with-param name="numberOfTimes" select="string-length(@TEXT)"/>
</xsl:call-template>
<xsl:text> </xsl:text>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="/map/node/node">
<xsl:text> </xsl:text>
<xsl:value-of select="@TEXT"/><xsl:text> </xsl:text>
<xsl:call-template name="repeater">
<xsl:with-param name="theString" select="'-'"/>
<xsl:with-param name="numberOfTimes" select="string-length(@TEXT)"/>
</xsl:call-template>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="hook[@NAME='accessories/plugins/NodeNote.properties']/text">
<xsl:text> </xsl:text>
<xsl:variable name="indent">
<xsl:call-template name="repeater">
<xsl:with-param name="theString" select="' '"/>
<xsl:with-param name="numberOfTimes" select="count(ancestor::*) - 4"/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="$indent"/>
<xsl:call-template name="replace">
<xsl:with-param name="text" select="text()"/>
<xsl:with-param name="by" select="concat(' ', $indent)"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="node[not(child::icon) and not(count(ancestor::*) <= 2)]">
<xsl:text> </xsl:text>
<xsl:call-template name="repeater">
<xsl:with-param name="theString" select="' '"/>
<xsl:with-param name="numberOfTimes" select="count(ancestor::*) - 3"/>
</xsl:call-template>
<xsl:text>* </xsl:text>
<xsl:if test="@LINK">
<xsl:text>`</xsl:text>
</xsl:if>
<xsl:value-of select="@TEXT"/>
<xsl:if test="@LINK">
<xsl:text> <</xsl:text>
<xsl:value-of select="@LINK"/>
<xsl:text>>`_</xsl:text>
</xsl:if>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="node[child::icon]">
<xsl:text> </xsl:text>
<xsl:call-template name="repeater">
<xsl:with-param name="theString" select="' '"/>
<xsl:with-param name="numberOfTimes" select="count(ancestor::*) - 3"/>
</xsl:call-template>
<xsl:text>.. </xsl:text><xsl:value-of select="@TEXT"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="icon"/>
</xsl:stylesheet>