Project

sup_tag

0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
SupTag lets you clean up the before-add-hook script by providing a clean DSL
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.2.9
>= 0.11
>= 0
 Project Readme

Sup Tag

A gem to make tagging messages in sup cleaner.

Usage

Messages are tagged using by either the tag or archive block. The tag block will add the labels while archive adds labels and removes the inbox tag. Each block consists of methods of the message to call, what they should match against and the tags to add if the messages match. Tags must always be a symbol, while the queries may be either strings or regular expressions. It's easiest to see with an example:

tag do
    from 'blake', :self
end

This would tag any message from 'blake' with self. If no tag is provided then the given queries are converted to strings and used as labels. For example:

tag do
    from /blake/i
end

Here if a message is from 'blake' the message would be tagged as 'blake'. It is possible to use several queries in one rule as well.

archive do
    from /blake/, /sweeney/, :self
end

This would archive any message where the from matches both 'blake' and 'sweeney' as self and the inbox tag would be removed. If the self tag had not been provided then the message would have been tagged as both 'blake' and 'sweeney'. Tag and archive blocks may have many rules. For example:

tag
    from /blake/, :self
    subj /sup-talk/i
end

Here messages from 'blake' are marked as self, while messages with 'sup-talk' in the subject line are marked as sup talk.

If you wish to tag against several different fields then simply use a multi block. A multi block will require that all rules in the block hit in order to tag.

tag
    multi :ann, 'ruby-talk'.to_sym do
        recipients /ruby-talk/
        subj /ANN/
    end
end

This would tag any messages going to 'ruby-talk' with 'ANN' in the subject line. If tags are provided to the rules in the multi block they will be ignored.

There are some other probably less useful options. It is possible to archive a message directly without adding any tags. To do this provide a nil as the tag.

archive do
    from /Boring/i, nil
end

This will archive any message from 'Boring' without adding any tags.

Example

My before-add-message.rb looks something like:

require 'sup_tag'
require "sup_tag/extensions/object"

archive do
  subj /sup-talk/i
  subj /MongoMapper/i, :MM
  subj /easyb-users/i, :easyb
  recipients /ruby-talk/i
  recipients /vim(_|-)mac/i, :vim
  recipients /buildr.apache.org/i, :buildr

  multi :ann do
    recipients /ruby-talk/i
    subj /ANN/i
  end
end

tag do
  subj /BIOL\.1010/, :ta
  subj /BIOL\.5870/, :ta
  from /Mbuthia/, :ta
  subj /Nucl. Acids Res/, :nar
  subj /Database Table of Contents/, :biodb
  from /rna@faseb.org/i, :rna
  from /jnls.cust.serv@oxfordjournals.org/, :oxford
end

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2010 Blake Sweeney. See LICENSE for details.