lib/wiki/api/util.rb
# frozen_string_literal: true
module Wiki
module Api
class Util
class << self
def element_to_text(element)
raise('not an element') unless element.is_a?(Nokogiri::XML::Element)
clean_text(element.text)
end
def element_filter_lists(element)
raise('not an element') unless element.is_a?(Nokogiri::XML::Element)
result = {}
element.search('li').each_with_index do |li, i|
li.children.each do |child|
result[i] ||= []
result[i] << clean_text(child.text)
end
end
result.map { |_k, v| v.join('') }
end
def parent_root(current_object)
current = current_object
loop do
break if current.parent.nil?
current = current.parent
end
current
end
protected
def clean_text(text)
text.gsub(/\n/, ' ').squeeze(' ').gsub(/\s(\W)/, '\1').gsub(/(\W)\s/, '\1 ').strip
end
end
end
end
end