Class: RSS2WikiHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/helpers/rss2wiki-helper.rb

Constant Summary collapse

DEFAULT_SETTINGS =
{
  :url => 'http://localhost:8000/rss/recent%20changes%20to%20this%20site',
  :pagename => nil, # If nil, uses channel title,
  :update_on_event => :hour,
  :author => 'AutomaticRSS2Wiki',
}

Instance Method Summary collapse

Constructor Details

#initialize(wiki, settings = {}) ⇒ RSS2WikiHelper

Returns a new instance of RSS2WikiHelper.



14
15
16
17
18
19
20
21
22
23
# File 'lib/helpers/rss2wiki-helper.rb', line 14

def initialize( wiki, settings = {} )
  @settings = DEFAULT_SETTINGS.merge( settings )
  @wiki = wiki
  update_rss
  update_wiki
  @wiki.watch_for(@settings[:update_on_event]) do 
    update_rss
    update_wiki
  end
end

Instance Method Details

#escape(string) ⇒ Object



44
45
46
# File 'lib/helpers/rss2wiki-helper.rb', line 44

def escape( string )
  string.tr('[]=>','')
end

#renderObject



29
30
31
32
33
34
35
# File 'lib/helpers/rss2wiki-helper.rb', line 29

def render
  content = "h1. #{@rss.channel.title}\n\n"
  @rss.items.each do |item| 
    content << "# [[ #{escape(item.title)} => #{item.link} ]]\n"
  end
  content
end

#update_rssObject



37
38
39
40
41
42
# File 'lib/helpers/rss2wiki-helper.rb', line 37

def update_rss
  $LOG.info "Updating feed"
  open(@settings[:url]) do |http| 
    @rss = RSS::Parser.parse( http.read , false) 
  end
end

#update_wikiObject



25
26
27
# File 'lib/helpers/rss2wiki-helper.rb', line 25

def update_wiki
  @wiki.revise( @settings[:pagename] || @rss.channel.title, render, @rss.items.first.respond_to?('author') ? @rss.items.first.author : "AutomaticRSS" )
end