module ReVIEW::TextUtils

Public Instance Methods

detab(str, ts = 8) click to toggle source
# File lib/review/textutils.rb, line 5
def detab(str, ts = 8)
  add = 0
  len = nil
  str.gsub("\t") do
    len = ts - ($`.size + add) % ts
    add += len - 1
    ' ' * len
  end
end
split_paragraph(lines) click to toggle source
# File lib/review/textutils.rb, line 15
def split_paragraph(lines)
  pre = pre_paragraph
  post = post_paragraph
  trimmed_lines = trim_lines(lines)

  blocked_lines = [[]]
  trimmed_lines.each do |element|
    if element.empty?
      blocked_lines << [] if blocked_lines.last != []
    else
      blocked_lines.last << element
    end
  end

  if pre && post
    blocked_lines.map! { |i| [pre] + i + [post] }
  end
  blocked_lines.map(&:join)
end

Private Instance Methods

trim_lines(lines) click to toggle source

remove elements at the back of `lines` if element is empty string (`lines` should be Array of String.)

# File lib/review/textutils.rb, line 40
def trim_lines(lines)
  new_lines = lines.dup
  while new_lines[-1] && new_lines[-1].strip.empty?
    new_lines.pop
  end
  new_lines
end