]> git.cworth.org Git - sup/blobdiff - lib/sup/message.rb
whoops, add labels accessor to MBox::Loader
[sup] / lib / sup / message.rb
index d0c637054ee1f9f9986c1fda32fff37513b31c2a..c06a03fa547a3d6c96dd19945fae0934b907c925 100644 (file)
@@ -95,7 +95,8 @@ class Message
         begin
           Time.parse date
         rescue ArgumentError => e
-          raise MessageFormatError, "unparsable date #{header['date']}: #{e.message}"
+          Redwood::log "faking date header for #{@id} due to error parsing date #{header['date'].inspect}: #{e.message}"
+          Time.now
         end
       else
         Redwood::log "faking date header for #{@id}"
@@ -135,6 +136,10 @@ class Message
     @dirty = true
   end
 
+  def remove_ref ref
+    @dirty = true if @refs.delete ref
+  end
+
   def snippet; @snippet || (chunks && @snippet); end
   def is_list_message?; !@list_address.nil?; end
   def is_draft?; @source.is_a? DraftLoader; end
@@ -146,8 +151,10 @@ class Message
   def sanitize_message_id mid; mid.gsub(/\s/, "") end
 
   def save index
-    index.sync_message self if @dirty
+    return unless @dirty
+    index.sync_message self
     @dirty = false
+    true
   end
 
   def has_label? t; @labels.member? t; end
@@ -248,13 +255,14 @@ EOS
     with_source_errors_handled { @source.each_raw_message_line(@source_info, &b) }
   end
 
-  def content
+  ## returns all the content from a message that will be indexed
+  def indexable_content
     load_from_source!
     [
-      from && "#{from.name} #{from.email}",
-      to.map { |p| "#{p.name} #{p.email}" },
-      cc.map { |p| "#{p.name} #{p.email}" },
-      bcc.map { |p| "#{p.name} #{p.email}" },
+      from && from.indexable_content,
+      to.map { |p| p.indexable_content },
+      cc.map { |p| p.indexable_content },
+      bcc.map { |p| p.indexable_content },
       chunks.select { |c| c.is_a? Chunk::Text }.map { |c| c.lines },
       Message.normalize_subj(subj),
     ].flatten.compact.join " "