Направляющие: Умное текстовое усечение

Это - потому что к любому повторяемому можно присоединиться, не только перечисляет, но и результатом и "столяром" всегда являются строки.

, Например:

import urllib2
print('\n############\n'.join(
    urllib2.urlopen('http://data.stackexchange.com/users/7095')))
10
задан Pesto 18 August 2009 в 13:01
поделиться

1 ответ

Я не видел такого плагина, но был аналогичный вопрос , который мог бы служить основой для библиотеки или вспомогательной функции.

Как вы покажите, что функция, кажется, помещает ее как расширение к String: если вы действительно не хотите иметь возможность делать это вне представления, я был бы склонен использовать функцию в application_helper.rb . Что-то вроде этого, может быть?

module ApplicationHelper

  def smart_truncate(s, opts = {})
    opts = {:words => 12}.merge(opts)
    if opts[:sentences]
      return s.split(/\.(\s|$)+/)[0, opts[:sentences]].map{|s| s.strip}.join('. ') + '.'
    end
    a = s.split(/\s/) # or /[ ]+/ to only split on spaces
    n = opts[:words]
    a[0...n].join(' ') + (a.size > n ? '...' : '')
  end
end

smart_truncate("a b c. d e f. g h i.", :sentences => 2) #=> "a b c. d e f."
smart_truncate("apple blueberry cherry plum", :words => 3) #=> "apple blueberry cherry..."
20
ответ дан 3 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: