class Redwood::DraftLoader

Attributes

dir[RW]

Public Class Methods

new(dir=Redwood::DRAFT_DIR) click to toggle source
Calls superclass method
# File lib/sup/draft.rb, line 35
def initialize dir=Redwood::DRAFT_DIR
  Dir.mkdir dir unless File.exist? dir
  super DraftManager.source_name, true, false
  @dir = dir
  @cur_offset = 0
end

Public Instance Methods

each_raw_message_line(offset) { |gets until eof?| ... } click to toggle source
# File lib/sup/draft.rb, line 96
def each_raw_message_line offset
  File.open(fn_for_offset(offset), "r:UTF-8") do |f|
    yield f.gets until f.eof?
  end
end
end_offset() click to toggle source
# File lib/sup/draft.rb, line 107
def end_offset
  ids = get_ids
  ids.empty? ? 0 : (ids.last + 1)
end
fn_for_offset(o;) click to toggle source
# File lib/sup/draft.rb, line 71
def fn_for_offset o; File.join(@dir, o.to_s); end
gen_offset() click to toggle source
# File lib/sup/draft.rb, line 63
def gen_offset
  i = 0
  while File.exist? fn_for_offset(i)
    i += 1
  end
  i
end
id() click to toggle source
# File lib/sup/draft.rb, line 46
def id; DraftManager.source_id; end
load_header(offset) click to toggle source
# File lib/sup/draft.rb, line 73
def load_header offset
  File.open(fn_for_offset(offset)) { |f| parse_raw_email_header f }
end
load_message(offset) click to toggle source
# File lib/sup/draft.rb, line 77
def load_message offset
  raise SourceError, "Draft not found" unless File.exist? fn_for_offset(offset)
  File.open fn_for_offset(offset) do |f|
    RMail::Mailbox::MBoxReader.new(f).each_message do |input|
      return RMail::Parser.read(input)
    end
  end
end
poll() { |:add, :info => id, :labels => [:draft, :inbox], :progress => 0| ... } click to toggle source
# File lib/sup/draft.rb, line 50
def poll
  ids = get_ids
  ids.each do |id|
    if id >= @cur_offset
      @cur_offset = id + 1
      yield :add,
        :info => id,
        :labels => [:draft, :inbox],
        :progress => 0.0
    end
  end
end
properly_initialized?() click to toggle source
# File lib/sup/draft.rb, line 42
def properly_initialized?
  !!(@dir && @cur_offset)
end
raw_header(offset) click to toggle source
# File lib/sup/draft.rb, line 86
def raw_header offset
  ret = ""
  File.open(fn_for_offset(offset), "r:UTF-8") do |f|
    until f.eof? || (l = f.gets) =~ /^$/
      ret += l
    end
  end
  ret
end
raw_message(offset) click to toggle source
# File lib/sup/draft.rb, line 102
def raw_message offset
  IO.read(fn_for_offset(offset), :encoding => "UTF-8")
end
start_offset() click to toggle source
# File lib/sup/draft.rb, line 106
def start_offset; 0; end
to_s() click to toggle source
# File lib/sup/draft.rb, line 47
def to_s; DraftManager.source_name; end
uri() click to toggle source
# File lib/sup/draft.rb, line 48
def uri; DraftManager.source_name; end

Private Instance Methods

get_ids() click to toggle source
# File lib/sup/draft.rb, line 114
def get_ids
  Dir.entries(@dir).select { |x| x =~ /^\d+$/ }.map { |x| x.to_i }.sort
end