class Kuport::Message

Attributes

agent[R]
base_url[R]
body[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_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