W jednej linijce

12 Jan 2010 | Adam Przymusiała

Wczoraj pracowałem nad generowaniem pdf'ów w Railsach (Prawn & Prawnto) - generalnie bardzo fajna sprawa jednak trzeba uważać przy stosowaniu metody group na bounding_box'ach (nieumiejętnie stosowana rozwali wam powtarzającą się tabelkę przez kilka stron)… ale nie o tym chciałem pisać :).

Wpis ten ma na celu podzielenie się problemem w którego się wczoraj bardzo wkręciłem, a wyglądał on następująco:

Mamy tabelę której kolumny nie rozszerzają się gdy ich zawartość rośnie (w x-ach) - można przyjąć że jest ona stałym tłem, a my chcemy by tekst który w nią wrzucamy zawsze się zmieścił (w problematycznych przypadkach przechodził do nowej linii - w tym konkretnym: były to jednowyrazowe nazwy jednostek miary na fakturze).

Rozwiązanie wygląda tak (zmienną zastąpiłem tekstem by łatwiej było wkleić do konsoli Railsów):

    "kilogramy".scan(/./).in_groups_of(4, false).collect {|x| x.to_s }.join("-\\n")

(najpierw string dzielony jest na tablicę znaków, następnie zamieniany na tablicę składającą się z tablic cztero-elementowych, później każda z nich zamieniana jest na string a stringi są łączone myślnikiem i znakiem nowej linii :) ).

Ciekawe czy da się to zrobić szybciej/lepiej i jak by to zrobił jakiś guru od PHP ;) (jakiegoś frameworka PHP).


Dodaj komentarz!

Czytaj dalej: