Ruby-Snippet: Texte ordentlich kürzen

Die folgende Methode wird auf String-Objekte angewendet. Sie kürzt den übergebenen Text bis zu einer angegebenen Zeichenzahl, "rundet" auf ganze Wörter ab und gibt ihn dann zurück. Eine sinvolle Implementierung in einem Ruby-on-Rails-Projekt wäre im Modul ApplicationHelper. Sie kann dann ganz einfach in den Templates angewendet werden.

Lerne mehr über Ruby on Rails mit Martin Labuschins
Ruby on Rails Link Library.

def shorten (string, count = 30)
			# String::shorten (naiv)
			# Autor: Martin Labuschin
			# Erstellt am 29.Juli 2007
			# String wird auf die durch count (optional, standard 30) bestimmte Anzahl von Zeichen gekürzt. Es werden dann ganze Wörter (erkannt durch Leerräume) zurückgegeben. Falls wirklich eine Kürzung duchgeführt wurde, wird ' ...' angehangen.
			# BEMERKUNG: Es wird nur Plaintext erwartet
			if string.length >= count 
				shortened = string[0, count]
				splitted = shortened.split(/ /)
				words = splitted.length
				splitted[0, words-1].join(" ") + ' ...'
			else 
				string
			end
		end

veröffentlicht am 29.07.2007 um 22:00 von Martin Labuschin in ,

Hat dir der Artikel gefallen?

Der Ansatz ist nett, aber ich hätte das so gelöst:

class String
def word_shorten ( length = 30 )
if self.length >= length
short = self[0, length].split(/ /)

short[0, short.length-1].join(" ") + ' …'
else
self
end
end

end

puts "Lorem ipsum dolor sit amet.".word_shorten(10)

Hier noch mal sinnvoller eingerückt: http://pastie.caboo.se/83383

Funktionieren tun beide Beispiele. Du erweiterst aber die Klasse 'String', ich das Modul 'ApplicationHelper'. Ich denke in Rails-Projekten ist mein Ansatz mE die saubere Lösung.


Jedoch muss ich zugeben, dass deine einfacher anzuwenden ist.

Hm, kann sein dass es in Rails besser ist diesen ApplicationHelper dazu zu verwenden. Ich habe nie mit Rails gearbeitet, deshalb kenne ich die Struktur nicht.

Das Modul ApplicationHelper stellt darin enthaltene Methoden nur in dem Views (Templates) des MVC-Models bereit. In den meisten Anwendungsfällen würde das ausreichen.

Ich hatte diese Seite jetzt schon unendlich lange als Tab geöffnet, heute konnte ich es endlich einsetzen und mir eine ähnliche Funktion ableiten.


Danke für das Snippet!

Nächste mal einfach bookmarken. Als Tab nervt's doch irgendwann... oder nicht ;)

blog comments powered by Disqus
The Ruby on Rails Link Library Spanning Sync SEO-Dokumentation Gowalla
ProWebApps WellDone (β) Pinboard (α)
Blogs Bücher Frameworks iPhone Mac Web-Apps