[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r18396 - in gnunet-gtk: . contrib
From: |
gnunet |
Subject: |
[GNUnet-SVN] r18396 - in gnunet-gtk: . contrib |
Date: |
Tue, 29 Nov 2011 21:52:51 +0100 |
Author: grothoff
Date: 2011-11-29 21:52:51 +0100 (Tue, 29 Nov 2011)
New Revision: 18396
Added:
gnunet-gtk/contrib/svn2cl.xsl
Removed:
gnunet-gtk/ChangeLog
Modified:
gnunet-gtk/Makefile.am
Log:
adding code for ChangeLog generation
Deleted: gnunet-gtk/ChangeLog
===================================================================
--- gnunet-gtk/ChangeLog 2011-11-29 20:51:13 UTC (rev 18395)
+++ gnunet-gtk/ChangeLog 2011-11-29 20:52:51 UTC (rev 18396)
@@ -1,258 +0,0 @@
-Mon Oct 31 11:53:57 CET 2011
- Releasing gnunet-gtk 0.9.0pre4.
-
-Mon Sep 19 14:25:55 CEST 2011
- Releasing gnunet-gtk 0.9.0pre3.
-
-Fri Sep 9 10:43:26 CEST 2011
- Initial draft for gnunet-peerinfo-gtk.
- Fixing issues when compiling against Gtk 3.0 (which is now
- required since we are clearly getting increasingly
- incompatible with Gtk 2.6).
-
-Mon Aug 15 16:18:22 CEST 2011
- Merging gnunet-setup and gnunet-gtk projects.
-
-Mon Nov 1 13:03:59 CET 2010
- gnunet-setup started.
-
-Thu Dec 23 23:37:09 CET 2010
- Releasing gnunet-gtk 0.9.0pre2.
-
-Sat Jul 3 20:47:22 CEST 2010
- Releasing gnunet-gtk 0.9.0pre1.
-
-Sun Jun 6 00:47:21 CEST 2010
- Upgrade to gettext-0.17.
- Starting to track changes for gnunet-gtk 0.9.x-branch.
-
-Fri Feb 12 22:30:44 CET 2010
- Releasing gnunet-gtk 0.8.1a.
-
-Tue Dec 29 12:24:04 CET 2009
- Releasing gnunet-gtk 0.8.1.
-
-Sun Jul 20 15:28:04 MDT 2008
- Releasing gnunet-gtk 0.8.0a.
-
-Sat Jun 14 00:54:39 MDT 2008
- Releasing gnunet-gtk 0.8.0.
-
-Wed Jun 11 23:00:38 MDT 2008
- Fixed icon installation and telling GTK about our
- icon path.
-
-Sat Jun 7 17:54:49 MDT 2008
- Added support for new namespace APIs. Chat now uses
- an icon to indicate which of the room members is the
- local user. Allowed user to leave chat room. Fixed
- warnings and various minor UI glitches.
-
-Sun Jun 1 21:11:54 MDT 2008
- Releasing 0.8.0pre1.
-
-Sun May 18 17:28:43 MDT 2008
- Removed libltdl tests and directory. We do not need
- those anymore since we use libgnunetutil anyway.
-
-Sun Mar 2 19:13:39 MST 2008
- Releasing gnunet-gtk 0.8.0pre0.
-
-Sat Mar 1 23:07:18 MST 2008
- Added DHT (dstore) utilization statistics.
- Added trust (earned/spend/awarded) statistics.
-
-Sat Feb 9 19:39:24 MST 2008
- Fixed lifelock caused by buggy semaphore operations
- in event thread handler. Added suspend/resume for
- searches. Added visual changes on aborted searches.
- Removed timeout and max-result options from search
- dialog (no longer required by ECRS/FSUI). Fixed
- signed/unsigned type issues in stats. Migrated
- gnunet-gtk GLADE file to GLADE-3 GUI (still getting
- warnings).
-
-Thu Dec 20 19:54:19 MST 2007
- Releasing gnunet-gtk 0.7.3.
-
-Sat Sep 29 16:57:14 MDT 2007
- Releasing gnunet-gtk 0.7.2c.
-
-Fri Aug 24 19:49:21 MDT 2007
- Fixing a few memory leaks. Reducing memory
- consumption of flag images (by sharing flag
- instances between different peers).
-
-Mon Jul 30 00:39:20 MDT 2007
- Releasing gnunet-gtk 0.7.2b.
-
-Sat Jul 7 02:37:10 MDT 2007
- Releasing gnunet-gtk 0.7.2a.
-
-Fri Jul 6 23:07:42 MDT 2007
- Fixed build issues with autoconf 1.10.
-
-Sun Jun 17 00:09:13 MDT 2007
- Releasing gnunet-gtk 0.7.2.
-
-Sun Jun 10 19:32:33 MDT 2007
- Completed support for namespaces.
-
-Thu May 31 20:53:50 MDT 2007
- Added peer-info tab. You must load the new "peers" module
- to see it.
-
-Thu May 31 01:30:23 MDT 2007
- Added color-coding of search results.
- Added warning (red background) if anonymity level is zero.
- Fixed (rare) deadlock.
-
-Sun Mar 25 13:49:12 MDT 2007
- Releasing gnunet-gtk 0.7.1c.
-
-Thu Mar 1 00:03:44 MST 2007
- Fixing issues with gettext (wrong path).
-
-Sat Feb 24 15:43:14 MST 2007
- Improved performance of statistics querying code
- (O(n^2) to O(n) where n is number of stats).
-
-Thu Feb 15 21:54:15 MST 2007
- Added IO load statistics.
-
-Sun Feb 11 13:53:13 MST 2007
- Releasing GNUnet 0.7.1b.
-
-Thu Feb 8 13:40:11 MST 2007
- Upgrade to gettext-0.16.1.
- Minor bugfix in build process (#1182).
-
-Sat Feb 3 22:03:52 MST 2007
- Added ability to open gnunet-directory.
-
-Sat Feb 3 21:00:23 MST 2007
- Added ability to save search results as gnunet-directory
- (in right-click context menu).
-
-Sun Jan 28 20:16:46 MST 2007
- Added ability to copy URIs of search results and
- uploads to clipboard.
-
-Fri Dec 22 19:21:07 MST 2006
- Releasing gnunet-gtk 0.7.1.
-
-Mon Dec 11 21:41:58 MST 2006
- Releasing gnunet-gtk 0.7.1pre2.
-
-Sun Dec 10 00:35:16 MST 2006
- Fixed deadlocks in FS plugin.
-
-Sun Dec 3 14:47:46 MST 2006
- Buttons that cannot be used are now disabled.
- Started downloads are marked using a yellow
- background for size field in the search dialog.
- Completed downloads are marked using a green
- background. When manually entering a path
- for uploads, switch between recursive and
- file-only is now automatic. It is now possible
- to remove keywords and metadata in the upload
- dialog.
-
-Wed Nov 15 23:17:36 MST 2006
- Updated to GNUnet 0.7.1pre0 APIs. Disabled
- incomplete or broken portions of FS API.
- Added additional statistics on datastore.
- Releasing gnunet-gtk 0.7.1pre0.
-
-Sat May 20 08:37:02 PDT 2006
- Fixed some deadlocks and other minor bugs.
- Releasing gnunet-gtk 0.7.0e.
-
-Sat May 13 19:45:41 PDT 2006
- Added some additional stats.
-
-Sat May 6 00:17:59 PDT 2006
- Releasing gnunet-gtk 0.7.0d.
-
-Wed Apr 26 10:33:43 PDT 2006
- Added french translation.
-
-Sun Apr 23 05:30:17 PDT 2006
- Cleaner shutdown code for open search windows, avoiding some
- (harmless) crashes in certain versions of GTK library on exit.
-
-Sat Apr 22 13:50:39 PDT 200
- Improved signaling in gtk-common library, resulting in better response
times
- (especially noticeable during shutdown).
-
-Sat Apr 1 16:24:27 PST 2006
- Improved shutdown code.
-
-Sat Mar 25 10:14:44 PST 2006
- Adding .desktop support.
-
-Sat Jan 7 02:38:37 PST 2006
- Adding Swedish translation.
-
-Fri Dec 23 15:59:19 PST 2005
- Releasing 0.7.0b.
-
-Sat Nov 19 16:13:19 PST 2005
- Releasing 0.7.0a.
-
-Sun Aug 28 01:17:43 PDT 2005
- Fixed various minor bugs, cleaned up name selection for downloads.
- Releasing 0.7.0.
-
-Tue Aug 23 00:47:31 PDT 2005
- Fixed bugs in shutdown sequence (unclean with respect to LOG,
- resulted in warnings under certain circumstances).
-
-Sun Aug 21 19:57:19 PDT 2005
- Fixed deadlock in download abort code.
-
-Sun Aug 21 18:42:14 PDT 2005
- Fixed deadlock in gnunet-gtk shutdown.
-
-Sat Aug 20 21:06:56 PDT 2005
- Added support for toggling collection of file identifiers.
-
-Sat Aug 20 13:51:01 PDT 2005
- Releasing 0.7.0pre6.
-
-Thu Aug 18 21:18:28 PDT 2005
- Made quotations match GNU standards.
-
-Wed Aug 17 23:51:13 PDT 2005
- Fixed various minor bugs, including memory leaks.
- Implemented auto-renaming.
-
-Mon Jul 18 01:30:09 CEST 2005
- Releasing 0.7.0pre5.
-
-Fri Jul 15 13:06:40 CEST 2005
- Fixed problem with gnunet-gtk hanging on shutdown.
-
-Sun Jul 10 00:59:03 CEST 2005
- Added stats plugin. Made gettext (internationalization)
- work. Minor bugfixes.
-
-Tue Jul 5 01:48:30 CEST 2005
- Refactored code to use plugins for the different
- applications (die monolithic code, die!).
-
-Sat Jul 2 17:21:07 CEST 2005
- Fixed omissions from glade file. Implemented
- aborting downloads and clearing completed
- downloads. Releasing 0.7.0pre4.
-
-Mon Jun 27 17:21:09 CEST 2005
- Merged old GNUnet po files for i18n.
- Updated glade file for proper interaction
- with intltool (do not translate dummy labels).
-
-Sun Jun 26 18:21:17 CEST 2005
- Released 0.7.0pre3 (first release).
-
-Mon May 23 11:06:02 EST 2005
- Started serious coding on glade-based gnunet-gtk.
Modified: gnunet-gtk/Makefile.am
===================================================================
--- gnunet-gtk/Makefile.am 2011-11-29 20:51:13 UTC (rev 18395)
+++ gnunet-gtk/Makefile.am 2011-11-29 20:52:51 UTC (rev 18396)
@@ -19,3 +19,16 @@
EXTRA_DIST = \
config.rpath \
install-sh mkinstalldirs
+
+ChangeLog:
+ if test -f $(top_srcdir)/.svn/entries; then \
+ svn log -v --xml -r HEAD:18395 | \
+ xsltproc --stringparam ignore-message-starting "-" \
+ --stringparam strip-prefix "gnunet" \
+ --stringparam include-rev "yes"
$(top_srcdir)/contrib/svn2cl.xsl - > $@; \
+ fi
+
+dist: ChangeLog
+
+.PHONY: ChangeLog
+
Added: gnunet-gtk/contrib/svn2cl.xsl
===================================================================
--- gnunet-gtk/contrib/svn2cl.xsl (rev 0)
+++ gnunet-gtk/contrib/svn2cl.xsl 2011-11-29 20:52:51 UTC (rev 18396)
@@ -0,0 +1,494 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+
+ svn2cl.xsl - xslt stylesheet for converting svn log to a normal
+ changelog
+
+ version 0.11
+
+ Usage (replace ++ with two minus signs which aren't allowed
+ inside xml comments):
+ svn ++verbose ++xml log | \
+ xsltproc ++stringparam strip-prefix `basename $(pwd)` \
+ ++stringparam linelen 75 \
+ ++stringparam groupbyday yes \
+ ++stringparam separate-daylogs yes \
+ ++stringparam include-rev yes \
+ ++stringparam include-actions yes \
+ ++stringparam breakbeforemsg yes/2 \
+ ++stringparam reparagraph yes \
+ ++stringparam authorsfile FILE \
+ ++stringparam ignore-message-starting \
+ svn2cl.xsl - > ChangeLog
+
+ This file is based on several implementations of this conversion
+ that I was not completely happy with and some other common
+ xslt constructs found on the web.
+
+ Copyright (C) 2004, 2005, 2006, 2007 Arthur de Jong.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. The name of the author may not be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+ IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-->
+
+<!DOCTYPE xsl:stylesheet [
+ <!ENTITY space " ">
+]>
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+ <xsl:output
+ method="text"
+ encoding="utf-8"
+ media-type="text/plain"
+ omit-xml-declaration="yes"
+ standalone="yes"
+ indent="no" />
+
+ <xsl:strip-space elements="*" />
+
+ <!-- the prefix of pathnames to strip -->
+ <xsl:param name="strip-prefix" select="'/'" />
+
+ <!-- the length of a line to wrap messages at -->
+ <xsl:param name="linelen" select="75" />
+
+ <!-- whether entries should be grouped by day -->
+ <xsl:param name="groupbyday" select="'no'" />
+
+ <!-- whether to seperate log messages by empty lines -->
+ <xsl:param name="separate-daylogs" select="'no'" />
+
+ <!-- whether a revision number should be included -->
+ <xsl:param name="include-rev" select="'no'" />
+
+ <!-- whether aaction labels should be added to files -->
+ <xsl:param name="include-actions" select="'no'" />
+
+ <!-- whether the log message should start on a new line -->
+ <xsl:param name="breakbeforemsg" select="'no'" />
+
+ <!-- whether the message should be rewrapped within one paragraph -->
+ <xsl:param name="reparagraph" select="'no'" />
+
+ <!-- whether certain messages should be ignored -->
+ <xsl:param name="ignore-message-starting" select="''" />
+
+ <!-- location of authors file if any -->
+ <xsl:param name="authorsfile" select="''" />
+ <xsl:key name="author-lookup" match="author" use="@uid" />
+ <xsl:variable name="authors-top" select="document($authorsfile)/authors" />
+
+ <!-- match the topmost log entry -->
+ <xsl:template match="log">
+ <xsl:choose>
+ <xsl:when test="$ignore-message-starting != ''">
+ <!-- only handle logentries with don't contain the string -->
+ <xsl:apply-templates
select="logentry[not(starts-with(msg,$ignore-message-starting))]" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates select="logentry" />
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- add newlines at the end of the changelog -->
+ <xsl:text>
</xsl:text>
+ </xsl:template>
+
+ <!-- format one entry from the log -->
+ <xsl:template match="logentry">
+ <xsl:choose>
+ <!-- if we're grouping we should omit some headers -->
+ <xsl:when test="$groupbyday='yes'">
+ <!-- save log entry number -->
+ <xsl:variable name="pos" select="position()" />
+ <!-- fetch previous entry's date -->
+ <xsl:variable name="prevdate">
+ <xsl:apply-templates select="../logentry[position()=(($pos)-1)]/date" />
+ </xsl:variable>
+ <!-- fetch previous entry's author -->
+ <xsl:variable name="prevauthor">
+ <xsl:value-of
select="normalize-space(../logentry[position()=(($pos)-1)]/author)" />
+ </xsl:variable>
+ <!-- fetch this entry's date -->
+ <xsl:variable name="date">
+ <xsl:apply-templates select="date" />
+ </xsl:variable>
+ <!-- fetch this entry's author -->
+ <xsl:variable name="author">
+ <xsl:value-of select="normalize-space(author)" />
+ </xsl:variable>
+ <!-- check if header is changed -->
+ <xsl:if test="($prevdate!=$date) or ($prevauthor!=$author)">
+ <!-- add newline -->
+ <xsl:if test="not(position()=1)">
+ <xsl:text>
</xsl:text>
+ </xsl:if>
+ <!-- date -->
+ <xsl:value-of select="$date" />
+ <!-- two spaces -->
+ <xsl:text>&space;&space;</xsl:text>
+ <!-- author's name -->
+ <xsl:apply-templates select="author" />
+ <!-- two newlines -->
+ <xsl:text>
</xsl:text>
+ <xsl:if
test="$separate-daylogs!='yes'"><xsl:text>
</xsl:text></xsl:if>
+ </xsl:if>
+ </xsl:when>
+ <!-- write the log header -->
+ <xsl:otherwise>
+ <!-- add newline -->
+ <xsl:if test="not(position()=1)">
+ <xsl:text>
</xsl:text>
+ </xsl:if>
+ <!-- date -->
+ <xsl:apply-templates select="date" />
+ <!-- two spaces -->
+ <xsl:text>&space;&space;</xsl:text>
+ <!-- author's name -->
+ <xsl:apply-templates select="author" />
+ <!-- two newlines -->
+ <xsl:text>

</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- get paths string -->
+ <xsl:variable name="paths">
+ <xsl:apply-templates select="paths" />
+ </xsl:variable>
+ <!-- get revision number -->
+ <xsl:variable name="rev">
+ <xsl:if test="$include-rev='yes'">
+ <xsl:text>[r</xsl:text>
+ <xsl:value-of select="@revision" />
+ <xsl:text>]&space;</xsl:text>
+ </xsl:if>
+ </xsl:variable>
+ <!-- trim trailing newlines -->
+ <xsl:variable name="msg">
+ <!-- add a line break before the log message -->
+ <xsl:choose>
+ <xsl:when test="$breakbeforemsg='yes'">
+ <xsl:text>
</xsl:text>
+ </xsl:when>
+ <xsl:when test="number($breakbeforemsg)>0">
+ <xsl:call-template name="newlines">
+ <xsl:with-param name="count" select="number($breakbeforemsg)" />
+ </xsl:call-template>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:call-template name="trim-newln">
+ <xsl:with-param name="txt" select="msg" />
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- add newline here if separate-daylogs is in effect -->
+ <xsl:if test="$groupbyday='yes' and
$separate-daylogs='yes'"><xsl:text>
</xsl:text></xsl:if>
+ <!-- first line is indented (other indents are done in wrap template) -->
+ <xsl:text>	*&space;</xsl:text>
+ <!-- set up the text to wrap -->
+ <xsl:variable name="txt">
+ <xsl:value-of select="$rev" />
+ <xsl:if test="$paths!=''">
+ <xsl:value-of select="concat($paths,':&space;')" />
+ </xsl:if>
+ <xsl:value-of select="$msg" />
+ </xsl:variable>
+ <!-- print the paths and message nicely wrapped -->
+ <xsl:call-template name="wrap">
+ <xsl:with-param name="txt" select="$txt" />
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- format date -->
+ <xsl:template match="date">
+ <xsl:variable name="date" select="normalize-space(.)" />
+ <!-- output date part -->
+ <xsl:value-of select="substring($date,1,10)" />
+ <!-- output time part -->
+ <xsl:if test="$groupbyday!='yes'">
+ <xsl:text>&space;</xsl:text>
+ <xsl:value-of select="substring($date,12,5)" />
+ </xsl:if>
+ </xsl:template>
+
+ <!-- format author -->
+ <xsl:template match="author">
+ <xsl:variable name="uid" select="normalize-space(.)" />
+ <!-- try to lookup author in authorsfile -->
+ <xsl:choose>
+ <xsl:when test="$authorsfile!=''">
+ <xsl:for-each select="$authors-top">
+ <xsl:variable name="author" select="key('author-lookup',$uid)" />
+ <!-- present result -->
+ <xsl:choose>
+ <xsl:when test="string($author/.)">
+ <xsl:apply-templates select="$author/node()" mode="copy" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$uid" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$uid" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- copy but normalize text -->
+ <xsl:template match="text()" mode="copy">
+ <xsl:value-of select="normalize-space(.)" />
+ </xsl:template>
+
+ <!-- simple copy template -->
+ <xsl:template match="@*|node()" mode="copy">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()" mode="copy" />
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- present a list of paths names -->
+ <xsl:template match="paths">
+ <xsl:choose>
+ <!-- only handle paths that begin with the path and strip the path -->
+ <xsl:when test="$strip-prefix != ''">
+ <!-- if strip-prefix does not start with a slash, prepend it -->
+ <xsl:variable name="tmpstrip1">
+ <xsl:choose>
+ <xsl:when test="starts-with($strip-prefix,'/')">
+ <xsl:value-of select="$strip-prefix" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat('/',$strip-prefix)" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- strip trailing slash from strip-prefix -->
+ <xsl:variable name="tmpstrip2">
+ <xsl:choose>
+ <xsl:when test="substring($tmpstrip1,string-length($tmpstrip1),1)='/'">
+ <xsl:value-of
select="substring($tmpstrip1,1,string-length($tmpstrip1)-1)" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tmpstrip1" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- filter on all entries within directory -->
+ <xsl:for-each
select="path[starts-with(concat(normalize-space(.),'/'),concat($tmpstrip2,'/'))]">
+ <xsl:sort select="normalize-space(.)" data-type="text" />
+ <!-- unless we are the first entry, add a comma -->
+ <xsl:if test="not(position()=1)">
+ <xsl:text>,&space;</xsl:text>
+ </xsl:if>
+ <!-- print the path name -->
+ <xsl:call-template name="printpath">
+ <xsl:with-param name="path"
select="substring(normalize-space(.),string-length($strip-prefix)+3)" />
+ </xsl:call-template>
+ <!-- add the action flag -->
+ <xsl:if test="$include-actions='yes'">
+ <xsl:apply-templates select="." mode="action"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:when>
+ <!-- print a simple list of all paths -->
+ <xsl:otherwise>
+ <xsl:for-each select="path">
+ <xsl:sort select="normalize-space(.)" data-type="text" />
+ <!-- unless we are the first entry, add a comma -->
+ <xsl:if test="not(position()=1)">
+ <xsl:text>,&space;</xsl:text>
+ </xsl:if>
+ <!-- print the path name -->
+ <xsl:value-of select="normalize-space(.)" />
+ <!-- add the action flag -->
+ <xsl:if test="$include-actions='yes'">
+ <xsl:apply-templates select="." mode="action"/>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="path" mode="action">
+ <xsl:choose>
+ <xsl:when test="@action='D'">
+ <xsl:text>[DEL]</xsl:text>
+ </xsl:when>
+ <xsl:when test="@copyfrom-path">
+ <xsl:text>[CPY]</xsl:text>
+ </xsl:when>
+ <xsl:when test="@action='D'">
+ <xsl:text>[ADD]</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- transform path to something printable -->
+ <xsl:template name="printpath">
+ <!-- fetch the pathname -->
+ <xsl:param name="path" />
+ <!-- strip leading slash -->
+ <xsl:variable name="tmp1">
+ <xsl:choose>
+ <xsl:when test="starts-with($path,'/')">
+ <xsl:value-of select="substring($path,2)" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$path" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- translate empty string to dot -->
+ <xsl:choose>
+ <xsl:when test="$tmp1 = ''">
+ <xsl:text>.</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$tmp1" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- string-wrapping template -->
+ <xsl:template name="wrap">
+ <xsl:param name="txt" />
+ <xsl:variable name="normtxt" select="normalize-space($txt)" />
+ <xsl:choose>
+ <xsl:when test="contains($txt,'
')">
+ <!-- text contains newlines, do the first line -->
+ <xsl:call-template name="wrap">
+ <xsl:with-param name="txt" select="substring-before($txt,'
')" />
+ </xsl:call-template>
+ <!-- print tab -->
+ <xsl:text>	&space;&space;</xsl:text>
+ <!-- wrap the rest of the text -->
+ <xsl:call-template name="wrap">
+ <xsl:with-param name="txt" select="substring-after($txt,'
')" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="(string-length($normtxt) < (($linelen)-9)) or
not(contains($normtxt,' '))">
+ <!-- this is easy, nothing to do -->
+ <xsl:value-of select="$normtxt" />
+ <!-- add newline -->
+ <xsl:text>
</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- find the first line -->
+ <xsl:variable name="tmp" select="substring($normtxt,1,(($linelen)-9))" />
+ <xsl:variable name="line">
+ <xsl:choose>
+ <!-- if our attempt contains spaces wrap on that -->
+ <xsl:when test="contains($tmp,' ')">
+ <xsl:call-template name="find-line">
+ <xsl:with-param name="txt" select="$tmp" />
+ </xsl:call-template>
+ </xsl:when>
+ <!-- otherwise use the first non-space characters from the text -->
+ <xsl:otherwise>
+ <xsl:value-of select="substring-before($normtxt,' ')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- print line -->
+ <xsl:value-of select="$line" />
+ <!-- print newline and tab -->
+ <xsl:text>
	&space;&space;</xsl:text>
+ <!-- wrap the rest of the text -->
+ <xsl:call-template name="wrap">
+ <xsl:with-param name="txt"
select="normalize-space(substring($normtxt,string-length($line)+1))" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- template to trim line to contain space as last char -->
+ <xsl:template name="find-line">
+ <xsl:param name="txt" />
+ <xsl:choose>
+ <xsl:when test="substring($txt,string-length($txt),1)=' '">
+ <xsl:value-of select="substring($txt,1,string-length($txt)-1)" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="find-line">
+ <xsl:with-param name="txt"
select="substring($txt,1,string-length($txt)-1)" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- template to trim trailing and starting newlines -->
+ <xsl:template name="trim-newln">
+ <xsl:param name="txt" />
+ <xsl:choose>
+ <!-- find starting newlines -->
+ <xsl:when test="substring($txt,1,1) = '
'">
+ <xsl:call-template name="trim-newln">
+ <xsl:with-param name="txt" select="substring($txt,2)" />
+ </xsl:call-template>
+ </xsl:when>
+ <!-- find trailing newlines -->
+ <xsl:when test="substring($txt,string-length($txt),1) = '
'">
+ <xsl:call-template name="trim-newln">
+ <xsl:with-param name="txt"
select="substring($txt,1,string-length($txt)-1)" />
+ </xsl:call-template>
+ </xsl:when>
+ <!-- if the message has paragrapgs, find the first one -->
+ <xsl:when test="$reparagraph='yes' and contains($txt,'

')">
+ <!-- remove newlines from first paragraph -->
+ <xsl:value-of
select="normalize-space(substring-before($txt,'

'))" />
+ <!-- paragraph separator -->
+ <xsl:text>

</xsl:text>
+ <!-- do the rest of the text -->
+ <xsl:call-template name="trim-newln">
+ <xsl:with-param name="txt" select="substring-after($txt,'

')" />
+ </xsl:call-template>
+ </xsl:when>
+ <!-- remove more single newlines -->
+ <xsl:when test="$reparagraph='yes'">
+ <xsl:value-of select="normalize-space($txt)" />
+ </xsl:when>
+ <!-- no newlines found, we're done -->
+ <xsl:otherwise>
+ <xsl:value-of select="$txt" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- insert a number of newlines -->
+ <xsl:template name="newlines">
+ <xsl:param name="count" />
+ <xsl:text>
</xsl:text>
+ <xsl:if test="$count>1">
+ <xsl:call-template name="newlines">
+ <xsl:with-param name="count" select="($count)-1" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r18396 - in gnunet-gtk: . contrib,
gnunet <=