class DiffNews::Service
Attributes
history[R]
Public Class Methods
create(url)
click to toggle source
# File lib/service.rb, line 57 def self.create url match = @@services.select { |s| url =~ s.valid_url } raise UnknownNewspageError if match.none? match.first.new url end
new(url)
click to toggle source
# File lib/service.rb, line 46 def initialize url @url = url @uuid = UUIDTools::UUID.sha1_create(UUIDTools::UUID_URL_NAMESPACE, url) @doc = nil load_history end
register_service()
click to toggle source
# File lib/service.rb, line 53 def self.register_service @@services << self end
services()
click to toggle source
# File lib/service.rb, line 22 def self.services @@services end
store_class=(store_class)
click to toggle source
# File lib/service.rb, line 42 def self.store_class= store_class @@store_class = store_class end
Public Instance Methods
base_url()
click to toggle source
# File lib/service.rb, line 30 def base_url self.class.base_url end
current_revision()
click to toggle source
# File lib/service.rb, line 38 def current_revision return @history.revisions.last end
encoding()
click to toggle source
# File lib/service.rb, line 34 def encoding @doc.encoding end
normalize_text(text)
click to toggle source
# File lib/service.rb, line 70 def normalize_text text empty_lines = 0 result = '' text.each_line do |line| line = line.strip line = line.gsub(/\s+/, ' ') empty_lines = line.length == 0 ? empty_lines + 1 : 0 if empty_lines < 2 result += line.strip + "\n" end end return result end
provider()
click to toggle source
# File lib/service.rb, line 26 def provider self.class.provider end
strip_html(partial)
click to toggle source
# File lib/service.rb, line 64 def strip_html partial partial.css("br").each { |node| node.replace("\n") } partial.css("p").each { |node| node.replace("#{node.text.strip}\n\n") } partial.text.strip end
Private Instance Methods
load_document()
click to toggle source
# File lib/service.rb, line 85 def load_document @doc = Nokogiri::HTML(open(@url)) end
load_history()
click to toggle source
# File lib/service.rb, line 89 def load_history @history = @@store_class.new provider, @uuid, @url @history.load load_document @history.append_changed_revision title, teaser, text @history.store end