class Shoulda::Matchers::Paragraph
@private
def combine_list_item_lines(lines)
def combine_list_item_lines(lines) lines.reduce([]) do |combined_lines, line| if line.list_item? combined_lines << line else combined_lines.last << (' ' + line).squeeze(' ') end combined_lines end end
def combine_paragraph_into_one_line
def combine_paragraph_into_one_line paragraph.gsub(/\n/, ' ') end
def initialize(paragraph, indent: 0)
def initialize(paragraph, indent: 0) @paragraph = Text.new(paragraph) @indent = indent end
def lines
def lines paragraph.split("\n").map { |line| Text.new(line) } end
def wrap
def wrap if paragraph.indented? lines elsif paragraph.list_item? wrap_list_item else wrap_generic_paragraph end end
def wrap_generic_paragraph
def wrap_generic_paragraph Line.new(combine_paragraph_into_one_line, indent: indent).wrap end
def wrap_lines(lines)
def wrap_lines(lines) lines.map { |line| Line.new(line, indent: indent).wrap } end
def wrap_list_item
def wrap_list_item wrap_lines(combine_list_item_lines(lines)) end