From: Antonio Ospite <ao2@ao2.it>
Date: Fri, 20 May 2016 09:10:43 +0000 (+0200)
Subject: rss_converter_twitter.com.xsl: use direct URLs for links, when possible
X-Git-Tag: v0.6~22
X-Git-Url: https://git.ao2.it/tweeper.git/commitdiff_plain/68dbd68eb630fe24eb8ca51756c8d95a44d51205?ds=sidebyside;hp=e6dab4aed3a61e569cb8d8bb2262ebc0d8f20aef

rss_converter_twitter.com.xsl: use direct URLs for links, when possible

Replace the t.co URLs with the actual location the link was originally
meant to point to.
---

diff --git a/rss_converter_twitter.com.xsl b/rss_converter_twitter.com.xsl
index 1903607..7367dd8 100644
--- a/rss_converter_twitter.com.xsl
+++ b/rss_converter_twitter.com.xsl
@@ -32,6 +32,52 @@
         <xsl:text>https://twitter.com</xsl:text>
     </xsl:variable>
 
+    <!-- Identity transform -->
+    <xsl:template match="@*|node()">
+        <xsl:copy>
+            <xsl:apply-templates select="@*|node()"/>
+        </xsl:copy>
+    </xsl:template>
+
+    <!--
+         Anchors to external links provide the direct URL in the
+         data-expanded-url attribute, so use this in the href attribute too
+         instead of the default short URL which uses the t.co redirection
+         service.
+
+         NOTE: when creating an element, attributes must be processed _before_
+         adding the contents (either children or a value):
+         http://stackoverflow.com/questions/21984867/
+    -->
+    <xsl:template match="a[@data-expanded-url]">
+        <!-- Prepend and append a white space for aestethic reasons -->
+        <xsl:text> </xsl:text>
+        <a>
+            <xsl:attribute name="href">
+                <xsl:value-of select="@data-expanded-url"/>
+            </xsl:attribute>
+            <!-- Also strip &nbsp; and &hellip; -->
+            <xsl:value-of select="translate(., '&#xA0;&#x2026;', '')"/>
+        </a>
+        <xsl:text> </xsl:text>
+    </xsl:template>
+
+    <!--
+         These are links to pic.twitter.com, use the direct link for those
+         too instead of the t.co redirections.
+    -->
+    <xsl:template match="a[@data-pre-embedded='true']">
+        <!-- Prepend and append a white space for aestethic reasons -->
+        <xsl:text> </xsl:text>
+        <a>
+            <xsl:attribute name="href">
+                <xsl:value-of select="concat('https://', .)"/>
+            </xsl:attribute>
+            <xsl:value-of select="concat('https://', .)"/>
+        </a>
+        <xsl:text> </xsl:text>
+    </xsl:template>
+
     <xsl:template match="a[@data-expanded-url]" mode="enclosure">
         <xsl:copy-of select="php:function('Tweeper::generateEnclosure', string(./@data-expanded-url))"/>
     </xsl:template>
@@ -69,7 +115,7 @@
             <description>
                 <xsl:value-of select="concat($user-name, ': ')"/>
                 <xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
-                <xsl:copy-of select="$item-content/node()"/>
+                <xsl:apply-templates select="$item-content/node()"/>
                 <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text>
             </description>
             <xsl:if test="$generate-enclosure = 1">