class Kuport::Message
Attributes
agent[R]
base_url[R]
body[R]
links[R]
title[R]
Public Class Methods
new(agent, doc, base_url)
click to toggle source
# File lib/kuport/message.rb, line 11 def initialize(agent, doc, base_url) @agent = agent @base_url = base_url @title = parse_title(doc) doc_mes = get_message_doc(doc) if doc_mes @body = get_body_text(doc_mes) else # When message is link doc_mes = get_linked_page_doc(doc) @body = get_body_text(get_message_doc(doc_mes)) end @links = parse_links(doc_mes) end
parse_page(agent, page)
click to toggle source
return [Message,…]
# File lib/kuport/message.rb, line 6 def self.parse_page(agent, page) doc = Kuport.get_page_doc(page) doc.css('.message > li').map{|mes| self.new(agent, mes, page.uri)} end
Public Instance Methods
get_body_text(doc)
click to toggle source
# File lib/kuport/message.rb, line 37 def get_body_text(doc) doc.text.strip.gsub(/\r\n/, "\n").freeze rescue "Error in #{title}" end
get_linked_page_doc(doc)
click to toggle source
Call if message is link
# File lib/kuport/message.rb, line 42 def get_linked_page_doc(doc) link = parse_link(doc.at_css('a'))[:path] doc_new = Kuport.get_page_doc(agent.get(link)) doc_new.at_css('.portlet_module') end
get_message_doc(doc)
click to toggle source
# File lib/kuport/message.rb, line 33 def get_message_doc(doc) doc.at_xpath(".//*[contains(@class, 'message')]") end
inspect()
click to toggle source
# File lib/kuport/message.rb, line 69 def inspect "title: #{title}\nbody: #{body}\nlinks: #{links}".freeze end
parse_link(elem)
click to toggle source
# File lib/kuport/message.rb, line 52 def parse_link(elem) {name: Kuport.escape_filename(elem.text), path: Kuport.to_abs_url(base_url, elem[:href])}.freeze end
parse_links(doc_mes)
click to toggle source
# File lib/kuport/message.rb, line 48 def parse_links(doc_mes) doc_mes.css('a').map{|elem| parse_link(elem)}.freeze rescue [{name: "Error in #{title}", path: ''}] end
parse_title(doc)
click to toggle source
# File lib/kuport/message.rb, line 29 def parse_title(doc) doc.children.select(&:text?).join.strip + doc.at_css('a').text.freeze end
to_h()
click to toggle source
# File lib/kuport/message.rb, line 57 def to_h @data_hash ||= {title: title, body: body, links: links}.freeze end
to_json(*a)
click to toggle source
# File lib/kuport/message.rb, line 65 def to_json(*a) @data_json ||= to_h.to_json(*a) end
to_s()
click to toggle source
# File lib/kuport/message.rb, line 61 def to_s @data_str ||= ("#{title}\n\n#{body}\n\n" + links.map{|l| l[:name]}.join("\n")).freeze end