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
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