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