X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=lib%2Fsup%2Fmessage.rb;h=c06a03fa547a3d6c96dd19945fae0934b907c925;hb=073e1f40024d7721ada08bce7c38d87883ec62f6;hp=d0c637054ee1f9f9986c1fda32fff37513b31c2a;hpb=1f9dcc58e015be992c3321e3e731fe7147833553;p=sup diff --git a/lib/sup/message.rb b/lib/sup/message.rb index d0c6370..c06a03f 100644 --- a/lib/sup/message.rb +++ b/lib/sup/message.rb @@ -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 " "