module NokogiriTruncator::NodeWithChildren

Public Instance Methods

truncate(max_length, ellipsis) click to toggle source
# File lib/bergamasco/summarize.rb, line 47
def truncate(max_length, ellipsis)
  return self if inner_text.length <= max_length
  truncated_node = self.dup
  truncated_node.children.remove

  self.children.each do |node|
    remaining_length = max_length - truncated_node.inner_text.length
    break if remaining_length <= 0
    truncated_node.add_child node.truncate(remaining_length, ellipsis)
  end
  truncated_node
end