class Feedcellar::Command
Attributes
database_dir[R]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/feedcellar/command.rb, line 34 def initialize(*args) super default_base_dir = File.join(File.expand_path("~"), ".feedcellar") @base_dir = ENV["FEEDCELLAR_HOME"] || default_base_dir @database_dir = File.join(@base_dir, "db") end
Public Instance Methods
collect(filter_pattern=nil)
click to toggle source
# File lib/feedcellar/command.rb, line 94 def collect(filter_pattern=nil) GroongaDatabase.new.open(@database_dir) do |database| resources = database.resources collect_proc = lambda do |record| feed_url = record.xmlUrl next unless feed_url if filter_pattern regexp = Regexp.new(filter_pattern) next unless regexp =~ feed_url end items = Feed.parse(feed_url) next unless items items.each do |item| database.add(record.xmlUrl, item.title, item.link, item.description, item.date) end end if options[:parallel] Parallel.each(resources, &collect_proc) else resources.each(&collect_proc) end end end
delete(url)
click to toggle source
# File lib/feedcellar/command.rb, line 143 def delete(url) GroongaDatabase.new.open(@database_dir) do |database| if options[:resource] database.delete(:resource_key => url) else database.delete(url) end end end
export()
click to toggle source
# File lib/feedcellar/command.rb, line 77 def export GroongaDatabase.new.open(@database_dir) do |database| puts Opml.build(database.resources.records) end end
import(opml_xml)
click to toggle source
# File lib/feedcellar/command.rb, line 66 def import(opml_xml) GroongaDatabase.new.open(@database_dir) do |database| Opml.parse(opml_xml).each do |resource| next unless resource["xmlUrl"] # FIXME: better way next if resource["xmlUrl"].empty? database.register(resource["xmlUrl"], resource) end end end
latest()
click to toggle source
# File lib/feedcellar/command.rb, line 154 def latest GroongaDatabase.new.open(@database_dir) do |database| GroongaSearcher.latest(database).each do |feed| title = feed.title.gsub(/\n/, " ") date = feed.date.strftime("%Y/%m/%d") puts "#{date} #{title} - #{feed.resource.title}" end end end
list()
click to toggle source
# File lib/feedcellar/command.rb, line 84 def list GroongaDatabase.new.open(@database_dir) do |database| database.resources.each do |record| puts "#{record.title} #{record.xmlUrl}" end end end
register(*urls)
click to toggle source
# File lib/feedcellar/command.rb, line 47 def register(*urls) GroongaDatabase.new.open(@database_dir) do |database| urls.each do |url| resource = Resource.parse(url) next unless resource next if resource["xmlUrl"].empty? database.register(resource["xmlUrl"], resource) end end end
reset()
click to toggle source
# File lib/feedcellar/command.rb, line 128 def reset GroongaDatabase.new.open(@database_dir) do |database| feeds = GroongaSearcher.search(database, nil) feeds.each do |feed| database.add(feed.resource.key, feed.title, feed.link, feed.description, feed.date) end end end
search(*words)
click to toggle source
# File lib/feedcellar/command.rb, line 170 def search(*words) if words.empty? && (options["resource"].nil? || options["resource"].empty?) $stderr.puts "WARNING: required one of word or resource option." return 1 end GroongaDatabase.new.open(@database_dir) do |database| sorted_feeds = GroongaSearcher.search(database, words, options) if options[:grouping] sorted_feeds.group("resource").each do |group| puts "#{group.key.title} (#{group.n_sub_records})" end else sorted_feeds.each do |feed| title = feed.title.gsub(/\n/, " ") if options[:long] date = feed.date.strftime("%Y/%m/%d %H:%M") resource = feed.resource.title puts "#{date} #{title} - #{resource} / #{feed.link}" else date = feed.date.strftime("%Y/%m/%d") puts "#{date} #{title}" end end end end end
unregister(title_or_url)
click to toggle source
# File lib/feedcellar/command.rb, line 59 def unregister(title_or_url) GroongaDatabase.new.open(@database_dir) do |database| database.unregister(title_or_url) end end
version()
click to toggle source
# File lib/feedcellar/command.rb, line 42 def version puts Feedcellar::VERSION end