2010-01-04 5 views
0

Im пытается добиться следующего эффекта в рельсах:Уменьшение размера шрифта в рельсах

Если текст больше, чем х символов, то сделать его меньше, следующий х символов меньше, следующий символ меньше, бесконечности

, например х = 7 будет выводить следующий HTML

Lorem i<small>psum do<small>lor sit<small> amet, <small>consecte 
<small>tur adip<small>isicing</small></small></small></small></small></small> 

и CSS будет small {font-size: 95%}

что такое Ele gant путь для достижения этого?

ответ

1

Мориц кажется тонкой, сухой код попытка итерационной версии:

def shrink(what,chunk=5) 
    result = '' 
    0.step(what.length, chunk) do |i| 
    if i<what.length 
     result << '<small>' if i>0 
     result << what[i,chunk] 
    end 
    end 
    result << '</small>'*(what.length/chunk) 
    result 
end 
+0

кажется «сжиматься» подходит очень хорошо :-) – moritz

+0

кабельтовых. ваша реализация не оставляет первые символы незавершенными. незначительная проблема. – moritz

+0

Вы уверены? Это намерение post-fix «if i> 0» –

2

hm. может быть, какой-то помощник с некоторой рекурсией?

def shrink(what) 
    if (what.length > 5) 
    "#{what[0,4]}<small>#{shrink(what[5,what.length()-1])}</small>" 
    else 
    what 
    end 
end 

есть лучший способ для записи рекурсивного вызова для определенного, но я не знаю, что это правильно знает. Ответ

Смежные вопросы