Class: Redwood::DraftManager

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/sup/draft.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dir) ⇒ DraftManager

Returns a new instance of DraftManager.



7
8
9
10
11
# File 'lib/sup/draft.rb', line 7

def initialize dir
  @dir = dir
  @source = nil
  self.class.i_am_the_instance self
end

Instance Attribute Details

#sourceObject

Returns the value of attribute source.



6
7
8
# File 'lib/sup/draft.rb', line 6

def source
  @source
end

Class Method Details

.source_idObject



14
# File 'lib/sup/draft.rb', line 14

def self.source_id; 9999; end

.source_nameObject



13
# File 'lib/sup/draft.rb', line 13

def self.source_name; "sup://drafts"; end

Instance Method Details

#discard(mid) ⇒ Object

Raises:

  • (ArgumentError)


33
34
35
36
37
38
39
40
# File 'lib/sup/draft.rb', line 33

def discard mid
  docid, entry = Index.load_entry_for_id mid
  raise ArgumentError, "can't find entry for draft: #{mid.inspect}" unless entry
  raise ArgumentError, "not a draft: source id #{entry[:source_id].inspect}, should be #{DraftManager.source_id.inspect} for #{mid.inspect} / docno #{docid}" unless entry[:source_id].to_i == DraftManager.source_id
  Index.drop_entry docid
  File.delete @source.fn_for_offset(entry[:source_info])
  UpdateManager.relay self, :delete, mid
end

#new_sourceObject



15
# File 'lib/sup/draft.rb', line 15

def new_source; @source = Recoverable.new DraftLoader.new; end

#write_draftObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/sup/draft.rb', line 17

def write_draft
  offset = @source.gen_offset
  fn = @source.fn_for_offset offset
  File.open(fn, "w") { |f| yield f }

  my_message = nil
  @source.each do |thisoffset, theselabels|
    m = Message.new :source => @source, :source_info => thisoffset, :labels => theselabels
    Index.sync_message m
    UpdateManager.relay self, :add, m
    my_message = m if thisoffset == offset
  end

  my_message
end