And that's '"bi-truncate" not "bit-uncate".
What's it do?
"This is a test".bitruncate(:length => 6) ==> "Thi...est"
"This is a test".bitruncate(:elength => 6) ==> "...a test"
The default options are { :length => 30 } which will produce 15 characters from the front and 15 from the end, putting ... marks in the middle.
For rails, I put this in my lib/core_extensions.rb file.
class String # # Truncate from both ends of a string. The :length parameter, which defaults # to 30, will return the first 15 and the last 15 characters from a string # if it is longer than 30 characters. If it is shorter, the entire string # is returned. # # Another way to specify the front and back portions are with :flength and # :elength. If you specify one of these but not the other then you will # not get the missing part. e.g., :flength => 10 alone will return only # the first 10 charcters of the string. This is the same as the standard # truncate(s, :length => 10) helper. # # If a :length parameter is provided it will override any other lengths # specified. # def bitruncate(options = {}) maxlength = options[:length] || 0 flength = options[:flength] || 0 elength = options[:elength] || 0 omission = options[:omission] || '...' if maxlength == 0 && flength == 0 && elength == 0 maxlength = 30 end if maxlength != 0 flength = maxlength / 2 elength = maxlength / 2 end return self if length <= (flength + elength) front = '' back = '' if flength > 0 front = self[0..(flength - 1)] end if elength > 0 back = self[(length - elength)..(length)] end front + omission + back end end
No comments:
Post a Comment