30. Juli 2007 in Ruby » Code-Schnipsel
Ruby-Snippet: Texte ordentlich kürzen
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(/\s/)
words = splitted.length
splitted[0, words-1].join(" ") + ' ...'
else
string
end
end
Diskussion geschlossen
Die Kommentarfunktion dieses Artikels wurde deaktiviert. Private Mitteilungen an Martin bitte per E-Mail an martin@labuschin.com. Danke.
7 Kommentare
Jeena Paradies am 30. Juli 2007 #
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(/\s/)
short[0, short.length-1].join(" ") + ' …'
else
self
end
end
end
puts "Lorem ipsum dolor sit amet.".word_shorten(10)
Jeena Paradies am 30. Juli 2007 #
Hier noch mal sinnvoller eingerückt: http://pastie.caboo.se/83383
Martin Labuschin am 30. Juli 2007 #
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.
Jeena Paradies am 30. Juli 2007 #
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.
Martin Labuschin am 30. Juli 2007 #
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.
Julian Schrader am 25. August 2007 #
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!
Martin Labuschin am 25. August 2007 #
Nächste mal einfach bookmarken. Als Tab nervt's doch irgendwann... oder nicht ;)