class Enumark
Constants
- VERSION
Public Class Methods
new(file, items: nil)
click to toggle source
# File lib/enumark.rb, line 12 def initialize(file, items: nil) @file = file @lock = Mutex.new @items = items @hosts = Grouping.new(self, :host) @dup_titles = Grouping.new(self, :name){ |groups| groups.select{ |_, items| items.count > 1 } } @dup_hrefs = Grouping.new(self, :href){ |groups| groups.select{ |_, items| items.count > 1 } } @cates = Grouping.new(self, :categories_str) end
Public Instance Methods
each(&block)
click to toggle source
# File lib/enumark.rb, line 23 def each(&block) read_all_lines sort_by_add_date! @items.each(&block) end
each_category(&block)
click to toggle source
# File lib/enumark.rb, line 41 def each_category(&block) @cates.each(&block) end
each_dup_href(&block)
click to toggle source
# File lib/enumark.rb, line 37 def each_dup_href(&block) @dup_hrefs.each(&block) end
each_dup_title(&block)
click to toggle source
# File lib/enumark.rb, line 33 def each_dup_title(&block) @dup_titles.each(&block) end
each_host(&block)
click to toggle source
# File lib/enumark.rb, line 29 def each_host(&block) @hosts.each(&block) end
Private Instance Methods
_read_all_lines()
click to toggle source
# File lib/enumark.rb, line 64 def _read_all_lines categories = [] @items = [] File.new(@file).each do |line| case line when Item::PREFIX item = Item.new(line, categories.dup) @items.push(item) when Category::START categories.push(Category.new(line)) when Category::ENDIND categories.pop end end end
read_all_lines()
click to toggle source
# File lib/enumark.rb, line 56 def read_all_lines return if @items @lock.synchronize do _read_all_lines unless @items end end
sort_by_add_date!()
click to toggle source
# File lib/enumark.rb, line 81 def sort_by_add_date! return if @sorted @lock.synchronize do next if @sorted @items.sort!{ |i1, i2| i2.add_date <=> i1.add_date } @sorted = true end end