For a text adventure program I’m working on I needed a method to word
wrap a long string based on spaces or non-word characters so I came up
with this. I just thought I’d post it to see if there are any thoughts
or if there might be a better way to do it.
class String
def word_wrap(width)
source = self.dup
original_width = width
while width < source.length do
last_space = source.rindex( / |\W/, width )
source.insert( last_space, “\n” )
source.gsub!(/\n */,"\n")
width = last_space + original_width
end
source
end
end
For a text adventure program I’m working on I needed a method
to word wrap a long string based on spaces or non-word
characters so I came up with this. I just thought I’d post
it to see if there are any thoughts or if there might be a
better way to do it.
I wrote one last week, actually
def wrap(wrap_len=78)
start_pos = wrap_len
while start_pos < @fact.length
sp = @fact.rindex(’ ', start_pos) @fact.insert(sp, ‘|’)
start_pos = sp + wrap_len + 1
end @fact.gsub!(/|[\s]/, “\n”)
end
I’m far from an expert, so I don’t know which method may be better
For a text adventure program I’m working on I needed a method
to word wrap a long string based on spaces or non-word
characters so I came up with this. I just thought I’d post
it to see if there are any thoughts or if there might be a
better way to do it.
I wrote one last week, actually
def wrap(wrap_len=78)
start_pos = wrap_len
while start_pos < @fact.length
sp = @fact.rindex(’ ', start_pos) @fact.insert(sp, ‘|’)
start_pos = sp + wrap_len + 1
end @fact.gsub!(/|[\s]/, “\n”)
end
I’m far from an expert, so I don’t know which method may be better
-M
class String
# Wrap string by the given length, and join it with the given
character.
# The method doesn’t distinguish between words, it will only work based
on
# the length. The method will also strip and whitespace.
#
def wrap(length = 80, character = $/)
scan(/.{#{length}}|.+/).map { |x| x.strip }.join(character)
end
end
puts ‘Hello, World! I am quite very long :)’.wrap(15, “ \n”)
For a text adventure program I’m working on I needed a method to word
wrap a long string based on spaces or non-word characters so I came up
with this. I just thought I’d post it to see if there are any
thoughts
or if there might be a better way to do it.
This one is taken from facets[1]. I use it to wrap lines in TextMate.
def word_wrap(text, col_width=80)
text.gsub!( /(\S{#{col_width}})(?=\S)/, '\1 ’ )
text.gsub!( /(.{1,#{col_width}})(?:\s+|$)/, “\1\n” )
text
end