From: "Ulrich Müller" <ulm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/devmanual:master commit in: /
Date: Tue, 31 Oct 2023 20:03:15 +0000 (UTC) [thread overview]
Message-ID: <1698682702.cfb9ec62837857402c691a7c3ff096a9bb89dbbb.ulm@gentoo> (raw)
commit: cfb9ec62837857402c691a7c3ff096a9bb89dbbb
Author: Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 28 09:38:42 2023 +0000
Commit: Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Mon Oct 30 16:18:22 2023 +0000
URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=cfb9ec62
devbook.xsl: Rewrite the uri template
Create relative links with correct depth. Assign some variables,
instead of computing things multiple times. Simplify.
Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>
devbook.xsl | 132 ++++++++++++++++++++++++++++++++----------------------------
1 file changed, 71 insertions(+), 61 deletions(-)
diff --git a/devbook.xsl b/devbook.xsl
index f4ecc3e..1d101c1 100644
--- a/devbook.xsl
+++ b/devbook.xsl
@@ -290,30 +290,60 @@
<xsl:value-of select="translate($lcdata, translate($lcdata, $allowed, ''), '')"/>
</xsl:template>
+<xsl:template name="relative-path">
+ <xsl:param name="path"/>
+ <xsl:param name="self"/>
+ <xsl:choose>
+ <xsl:when test="$path = '' or $self = '' or substring-before($path, '/') != substring-before($self, '/')">
+ <xsl:call-template name="str:repeatString">
+ <xsl:with-param name="count" select="string-length($self) - string-length(translate($self, '/', ''))"/>
+ <xsl:with-param name="append">../</xsl:with-param>
+ </xsl:call-template>
+ <xsl:value-of select="$path"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="relative-path">
+ <xsl:with-param name="path" select="substring-after($path, '/')"/>
+ <xsl:with-param name="self" select="substring-after($self, '/')"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
<xsl:template match="uri">
<xsl:param name="class" />
<xsl:choose>
+ <!-- Intra-document reference -->
<xsl:when test="starts-with(@link, '::')">
- <!-- Ideally we would work out how many levels to nest down to save
- a few bytes but going down to root level works just as well
- (and is faster). -->
- <xsl:variable name="relative_path_depth"
- select="string-length(/guide/@self) - string-length(translate(/guide/@self, '/' , ''))"/>
- <xsl:variable name="relative_path_depth_recursion">
- <xsl:call-template name="str:repeatString">
- <xsl:with-param name="count" select="$relative_path_depth"/>
- <xsl:with-param name="append">../</xsl:with-param>
+ <xsl:variable name="link_address">
+ <xsl:choose>
+ <xsl:when test="contains(@link, '#')">
+ <xsl:value-of select="substring-before(@link, '#')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@link"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="path">
+ <xsl:value-of select="substring-after($link_address, '::')"/>
+ <xsl:if test="substring($link_address, string-length($link_address)) != '/'">/</xsl:if>
+ </xsl:variable>
+ <xsl:variable name="path_rel">
+ <xsl:call-template name="relative-path">
+ <xsl:with-param name="path" select="$path"/>
+ <xsl:with-param name="self" select="/guide/@self"/>
</xsl:call-template>
</xsl:variable>
+ <xsl:variable name="path_html">
+ <!-- Omit index.html if referencing an anchor in the same file. -->
+ <xsl:if test="$path_rel != ''">
+ <xsl:value-of select="concat($path_rel, 'index.html')"/>
+ </xsl:if>
+ </xsl:variable>
<xsl:choose>
<xsl:when test="contains(@link, '##')">
- <xsl:variable name="slash">
- <xsl:if test="substring(substring-before(@link, '##'),
- string-length(substring-before(@link, '##'))) != '/'">/</xsl:if>
- </xsl:variable>
- <a class="{$class}"
- href="{concat($relative_path_depth_recursion, substring-after(substring-before(@link, '##'), '::'),
- $slash, 'index.html#', substring-after(@link, '##'))}">
+ <a class="{$class}" href="{concat($path_html, '#', substring-after(@link, '##'))}">
<xsl:value-of select="."/>
</a>
</xsl:when>
@@ -323,62 +353,42 @@
<xsl:with-param name="data" select="substring-after(@link, '#')"/>
</xsl:call-template>
</xsl:variable>
- <xsl:variable name="slash">
- <xsl:if test="substring(substring-before(@link, '#'),
- string-length(substring-before(@link, '#'))) != '/'">/</xsl:if>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test=". != ''">
- <a class="{$class}"
- href="{concat($relative_path_depth_recursion, substring-after(substring-before(@link, '#'), '::'),
- $slash, 'index.html#', $anchor)}">
+ <a class="{$class}" href="{concat($path_html, '#', $anchor)}">
+ <xsl:choose>
+ <xsl:when test=". != ''">
<xsl:value-of select="."/>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <a class="{$class}"
- href="{concat($relative_path_depth_recursion, substring-after(substring-before(@link, '#'), '::'),
- $slash, 'index.html#', $anchor)}">
+ </xsl:when>
+ <xsl:otherwise>
<xsl:value-of select="substring-after(@link, '#')"/>
- </a>
- </xsl:otherwise>
- </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
</xsl:when>
<xsl:otherwise>
- <xsl:variable name="slash">
- <xsl:if test="substring(@link, string-length(@link)) != '/'">/</xsl:if>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test=". != ''">
- <a class="{$class}"
- href="{concat($relative_path_depth_recursion, substring-after(@link, '::'), $slash, 'index.html')}">
+ <a class="{$class}" href="{$path_html}">
+ <xsl:choose>
+ <xsl:when test=". != ''">
<xsl:value-of select="."/>
- </a>
- </xsl:when>
- <xsl:when test="starts-with(@link, '::eclass-reference/')
- and substring-after(@link, '::eclass-reference/') != ''">
- <!-- Eclass reference pages are generated with man2html,
- so there isn't any text.xml that could be loaded.
- Use the name of the eclass as link text. #442194 -->
- <a class="{$class}"
- href="{concat($relative_path_depth_recursion, substring-after(@link, '::'), $slash, 'index.html')}">
- <xsl:value-of select="substring-before(concat(substring-after(@link, '::eclass-reference/'), $slash), '/')"/>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <a class="{$class}"
- href="{concat($relative_path_depth_recursion, substring-after(@link, '::'), $slash, 'index.html')}">
- <xsl:value-of select="document(concat(/guide/@self, $relative_path_depth_recursion,
- substring-after(@link, '::'), '/text.xml'))/guide/chapter[1]/title"/>
- </a>
- </xsl:otherwise>
- </xsl:choose>
+ </xsl:when>
+ <xsl:when test="starts-with($path, 'eclass-reference/') and substring-after($path, '/') != ''">
+ <!-- Eclass reference pages are generated with man2html,
+ so there isn't any text.xml that could be loaded.
+ Use the name of the eclass as link text. #442194 -->
+ <xsl:value-of select="substring-before(substring-after($path, '/'), '/')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="document(concat($path, 'text.xml'))/guide/chapter[1]/title"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </a>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
+ <!-- External reference, URI in link attribute -->
<xsl:when test="@link">
<a class="{$class}" href="{@link}"><xsl:value-of select="."/></a>
</xsl:when>
+ <!-- External reference, URI in body text -->
<xsl:when test="contains(., '://')">
<a class="{$class}" href="{.}"><xsl:value-of select="."/></a>
</xsl:when>
next reply other threads:[~2023-10-31 20:03 UTC|newest]
Thread overview: 214+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-31 20:03 Ulrich Müller [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-01-06 21:39 [gentoo-commits] proj/devmanual:master commit in: / Ulrich Müller
2024-11-12 18:51 Ulrich Müller
2024-11-09 6:58 Ulrich Müller
2024-11-06 20:00 Ulrich Müller
2024-11-05 22:13 Ulrich Müller
2024-11-01 20:01 Ulrich Müller
2024-11-01 17:27 Ulrich Müller
2024-11-01 11:20 Ulrich Müller
2024-11-01 11:20 Ulrich Müller
2024-10-31 18:59 Ulrich Müller
2024-10-31 11:08 Ulrich Müller
2024-10-31 11:08 Ulrich Müller
2024-10-28 16:19 Ulrich Müller
2024-10-27 7:55 Ulrich Müller
2024-07-30 14:30 Ulrich Müller
2024-06-11 16:24 Ulrich Müller
2024-06-10 15:41 Ulrich Müller
2024-05-08 6:43 Ulrich Müller
2024-04-22 18:19 Ulrich Müller
2024-03-23 7:10 Ulrich Müller
2024-01-28 17:40 Ulrich Müller
2023-11-23 17:24 Ulrich Müller
2023-11-05 16:44 Ulrich Müller
2023-11-02 17:08 Ulrich Müller
2023-11-02 17:06 Ulrich Müller
2023-11-02 17:06 Ulrich Müller
2023-10-31 20:03 Ulrich Müller
2023-10-31 20:03 Ulrich Müller
2023-10-31 20:03 Ulrich Müller
2023-10-31 20:03 Ulrich Müller
2023-10-22 11:44 Ulrich Müller
2023-10-22 11:44 Ulrich Müller
2023-10-05 20:43 Ulrich Müller
2022-06-24 10:51 Ulrich Müller
2022-06-22 14:35 Ulrich Müller
2022-06-17 8:00 Ulrich Müller
2022-06-10 17:20 Ulrich Müller
2022-01-24 18:16 Ulrich Müller
2022-01-19 11:30 Ulrich Müller
2022-01-16 21:52 Ulrich Müller
2021-10-11 10:53 Ulrich Müller
2021-10-10 10:34 Ulrich Müller
2021-10-10 10:34 Ulrich Müller
2021-09-08 17:52 Ulrich Müller
2021-09-08 17:52 Ulrich Müller
2021-07-14 12:27 Ulrich Müller
2021-03-10 19:51 Ulrich Müller
2021-03-10 19:51 Ulrich Müller
2021-03-10 19:51 Ulrich Müller
2021-03-10 19:51 Ulrich Müller
2021-03-10 19:51 Ulrich Müller
2021-03-10 18:39 Ulrich Müller
2021-03-07 17:40 Ulrich Müller
2021-03-03 19:08 Ulrich Müller
2021-02-27 15:47 Ulrich Müller
2021-02-25 23:49 Ulrich Müller
2021-02-25 19:30 Ulrich Müller
2021-02-25 19:30 Ulrich Müller
2021-02-24 19:36 Ulrich Müller
2021-02-06 10:39 Ulrich Müller
2021-01-25 10:34 Ulrich Müller
2021-01-18 12:17 Ulrich Müller
2021-01-17 22:09 Ulrich Müller
2020-08-28 17:46 Ulrich Müller
2020-03-06 16:30 Ulrich Müller
2020-03-03 8:30 Ulrich Müller
2020-03-03 8:18 Ulrich Müller
2020-03-02 10:23 Ulrich Müller
2020-03-02 10:23 Ulrich Müller
2020-02-28 7:20 Ulrich Müller
2020-02-28 7:20 Ulrich Müller
2020-02-28 7:17 Ulrich Müller
2020-02-28 7:15 Ulrich Müller
2020-02-28 7:15 Ulrich Müller
2020-02-28 7:15 Ulrich Müller
2020-02-26 20:41 Ulrich Müller
2020-02-26 20:41 Ulrich Müller
2020-02-26 18:59 Ulrich Müller
2020-02-26 18:53 Ulrich Müller
2020-02-26 18:53 Ulrich Müller
2020-02-26 18:53 Ulrich Müller
2020-02-16 13:16 Ulrich Müller
2020-02-11 11:30 Ulrich Müller
2020-02-10 17:31 Ulrich Müller
2020-02-07 14:01 Ulrich Müller
2020-02-07 5:34 Ulrich Müller
2020-02-06 20:53 Ulrich Müller
2020-02-03 10:06 Ulrich Müller
2020-02-03 0:07 Ulrich Müller
2020-02-03 0:07 Ulrich Müller
2020-02-03 0:07 Ulrich Müller
2020-01-30 13:45 Brian Evans
2020-01-27 20:44 Ulrich Müller
2020-01-27 19:58 Ulrich Müller
2020-01-27 19:58 Ulrich Müller
2020-01-22 18:24 Ulrich Müller
2020-01-21 21:53 Ulrich Müller
2020-01-16 18:53 Ulrich Müller
2020-01-15 7:06 Ulrich Müller
2020-01-14 8:15 Ulrich Müller
2020-01-12 9:23 Ulrich Müller
2020-01-09 7:34 Ulrich Müller
2020-01-09 7:34 Ulrich Müller
2020-01-02 13:38 Ulrich Müller
2020-01-02 12:54 Ulrich Müller
2020-01-02 12:54 Ulrich Müller
2020-01-02 12:54 Ulrich Müller
2019-12-26 21:36 Ulrich Müller
2019-12-26 20:33 Ulrich Müller
2019-12-26 17:06 Ulrich Müller
2019-12-26 16:47 Ulrich Müller
2019-12-21 5:19 Ulrich Müller
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-19 21:02 Göktürk Yüksek
2019-12-14 10:46 Ulrich Müller
2019-12-10 8:47 Ulrich Müller
2019-12-10 8:47 Ulrich Müller
2019-12-07 22:05 Ulrich Müller
2019-11-26 3:05 Göktürk Yüksek
2019-03-22 18:51 Brian Evans
2019-03-22 18:51 Brian Evans
2019-03-19 19:02 Brian Evans
2019-03-19 17:11 Brian Evans
2018-01-03 5:57 [gentoo-commits] proj/devmanual:codesample-indent-fix " Göktürk Yüksek
2018-01-03 21:59 ` [gentoo-commits] proj/devmanual:master " Göktürk Yüksek
2017-02-05 22:41 Ulrich Müller
2016-10-31 1:21 Göktürk Yüksek
2016-10-28 17:15 Ulrich Müller
2016-10-06 22:09 Mike Gilbert
2016-06-15 18:46 Ulrich Müller
2016-05-15 11:48 Ulrich Müller
2016-05-15 11:48 Ulrich Müller
2016-04-02 8:54 Ulrich Müller
2016-02-05 8:41 Ulrich Müller
2016-01-01 21:59 NP Hardass
2015-09-05 15:48 Markos Chandras
2015-08-27 6:50 Justin Lecher
2015-08-21 6:36 Justin Lecher
2015-08-21 6:36 Justin Lecher
2015-08-20 7:06 Justin Lecher
2015-08-20 7:04 Justin Lecher
2015-08-18 11:47 Justin Lecher
2015-08-09 12:39 Justin Lecher
2015-08-09 12:39 Justin Lecher
2015-08-09 9:30 Justin Lecher
2015-08-09 9:30 Justin Lecher
2015-07-22 1:15 Jorge Manuel B. S. Vicetto
2015-06-17 12:05 Ulrich Müller
2015-06-01 18:41 Ulrich Müller
2015-06-01 15:38 Ulrich Müller
2015-05-31 10:45 Markus Meier
2015-05-31 10:45 Markus Meier
2015-03-30 18:21 Markos Chandras
2015-03-11 18:26 Markos Chandras
2015-02-15 9:54 Markos Chandras
2015-01-17 9:07 Markos Chandras
2014-11-14 18:07 Markos Chandras
2014-11-14 18:07 Markos Chandras
2014-11-14 18:07 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-11-08 12:27 Markos Chandras
2014-10-18 17:36 Markos Chandras
2014-10-18 17:36 Markos Chandras
2014-10-18 17:36 Markos Chandras
2014-10-18 17:35 Markos Chandras
2014-07-24 18:06 ` Markos Chandras
2014-10-18 17:35 Markos Chandras
2014-07-24 18:06 ` Markos Chandras
2014-10-18 17:35 Markos Chandras
2014-07-24 18:06 ` Markos Chandras
2014-07-24 18:06 Markos Chandras
2014-10-18 17:35 ` Markos Chandras
2014-03-16 10:24 Markos Chandras
2014-03-16 10:24 Markos Chandras
2014-03-16 10:24 Markos Chandras
2014-03-08 14:53 Markos Chandras
2014-01-05 12:35 Markos Chandras
2014-01-04 11:23 Markos Chandras
2014-01-03 18:32 Markos Chandras
2013-09-26 7:41 Markos Chandras
2013-09-21 12:23 Markos Chandras
2013-09-21 12:23 Markos Chandras
2013-07-25 8:28 Justin Lecher
2013-05-19 8:38 Markos Chandras
2013-05-15 12:57 Dirkjan Ochtman
2013-05-12 19:25 Markos Chandras
2013-05-12 15:06 Markos Chandras
2013-05-11 19:02 Markos Chandras
2012-10-12 17:44 Ulrich Mueller
2012-08-08 19:23 Markos Chandras
2012-03-18 0:16 Markos Chandras
2011-12-20 12:39 Torsten Veller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1698682702.cfb9ec62837857402c691a7c3ff096a9bb89dbbb.ulm@gentoo \
--to=ulm@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox