<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Thomas Schwärzl &#187; Filter</title>
	<atom:link href="http://schwaerzl.de/category/python/django/filter/feed/" rel="self" type="application/rss+xml" />
	<link>http://schwaerzl.de</link>
	<description>It was hard to write, so it MUST be hard to read!</description>
	<lastBuildDate>Mon, 08 Mar 2010 16:48:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Filter: Truncate Words</title>
		<link>http://schwaerzl.de/2007/10/filter-truncate-words/</link>
		<comments>http://schwaerzl.de/2007/10/filter-truncate-words/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 18:48:00 +0000</pubDate>
		<dc:creator>Jam</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Filter]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[truncate]]></category>

		<guid isPermaLink="false">http://schwaerzl.de/?p=54</guid>
		<description><![CDATA[Wer kennt sie nicht. Die übermütigen Superkommentatoren in diversen Newspostings. Von &#8220;erst0r&#8221; bis &#8220;looooooooooooooooooooooooooooooooool&#8221; ist alles vertreten. Und da sind wir auch schon beim Problem. Dieses super-extra-lange Wort. Vielen Designern sind solche Dinge ein Dorn im Auge. Dank Django können wir die ganze Sache rapide kürzen. Wir verwenden im Template einfach einen slice, z.B. so [...]]]></description>
			<content:encoded><![CDATA[<p>Wer kennt sie nicht. Die übermütigen Superkommentatoren in diversen Newspostings. Von <em>&#8220;erst0r&#8221;</em> bis <em>&#8220;looooooooooooooooooooooooooooooooool&#8221;</em> ist alles vertreten. Und da sind wir auch schon beim Problem. Dieses super-extra-lange Wort. Vielen Designern sind solche Dinge ein Dorn im Auge. Dank Django können wir die ganze Sache rapide kürzen.</p>
<p>Wir verwenden im Template einfach einen slice, z.B. so<strong><em> {{ comment.comment|slice:&#8221;:5&#8243; }}</em></strong></p>
<p>Tja, schön und gut&#8230;.aber was tut man wenn <em>&#8220;waaaaaaaaaaaaaaaaaaaaaaaaaas geeeeeeeeeeeht aaaaaab?!?!?&#8221;</em> gespamt wird? Bei einem slice von z.B. 5 Zeichen würde nur noch <em>&#8220;waaaa&#8230;&#8221;</em> dran stehen. Wollen wir das? Nö.</p>
<p>Also muss der eigene Filter her. Damit man nicht groß nachdenken muss, wie / wo / was &#8211; hier fertig von mir geschrieben <img src='http://schwaerzl.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> django <span style="color: #ff7700;font-weight:bold;">import</span> template
register = template.<span style="color: black;">Library</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
@register.<span style="color: #008000;">filter</span>
<span style="color: #ff7700;font-weight:bold;">def</span> truncatewords<span style="color: black;">&#40;</span>s, num<span style="color: black;">&#41;</span>:
<span style="color: #483d8b;">&quot;&quot;&quot;
Truncates a word after a given number of chars
Argument: Number of chars to truncate after
&quot;&quot;&quot;</span>
    length = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>num<span style="color: black;">&#41;</span>
    <span style="color: #dc143c;">string</span> = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> word <span style="color: #ff7700;font-weight:bold;">in</span> s.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>word<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&amp;</span>gt<span style="color: #66cc66;">;</span> length:
            <span style="color: #dc143c;">string</span>.<span style="color: black;">append</span><span style="color: black;">&#40;</span>word<span style="color: black;">&#91;</span>:length<span style="color: black;">&#93;</span>+<span style="color: #483d8b;">'...'</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            <span style="color: #dc143c;">string</span>.<span style="color: black;">append</span><span style="color: black;">&#40;</span>word<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> u<span style="color: #483d8b;">' '</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">string</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Was geschieht nun, wenn man den Filter einsetzt? Der Filter schneidet bei jedem Wort die angegebene Anzahl ab, also wird aus unserem oben genannten &#8220;Was geht ab&#8221; ein <em>&#8220;waaaa&#8230; geeee&#8230; aaaaa&#8230;&#8221;</em>. Ist zwar auch nicht die Krönung der Schöpfung aber immerhin, ne? <img src='http://schwaerzl.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>In diesem Sinne &#8211; viel Spaß damit.</p>
]]></content:encoded>
			<wfw:commentRss>http://schwaerzl.de/2007/10/filter-truncate-words/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
