class ImapFilter::DSL::Filter

Constants

DIRECTIVES
MARKS
OPS

Attributes

mbox[RW]

Public Class Methods

new(name, mbox, directives=[], &block) click to toggle source

note that directives can be either a hash or a single symbol

Calls superclass method ImapFilter::DSL::Dsl::new
# File lib/imap-filter/dsl.rb, line 296
def initialize(name, mbox, directives=[], &block)
  super(name)
  @mbox = mbox
  @directives = massage directives
  @actions = []
  instance_eval &block 
  _filters[name] = self
end

Public Instance Methods

all() click to toggle source
# File lib/imap-filter/dsl.rb, line 219
def all
  directives << 'ALL'
end
answered() click to toggle source
# File lib/imap-filter/dsl.rb, line 223
def answered
  directives << 'ANSWERED'
end
bcc(s) click to toggle source
# File lib/imap-filter/dsl.rb, line 168
def bcc s
  directives << 'BCC' << s
end
before(d) click to toggle source
# File lib/imap-filter/dsl.rb, line 156
def before d
  directives << 'BEFORE' << d
end
body(s) click to toggle source
# File lib/imap-filter/dsl.rb, line 160
def body s
  directives << 'BODY'<< s
end
cc(s) click to toggle source
# File lib/imap-filter/dsl.rb, line 164
def cc s
  directives << 'CC' << s
end
copy(to_mbox) click to toggle source
# File lib/imap-filter/dsl.rb, line 130
def copy to_mbox
  @actions << [:copy, to_mbox]
end
Also aliased as: cp
cp(to_mbox)
Alias for: copy
delete() click to toggle source
# File lib/imap-filter/dsl.rb, line 135
def delete
  @actions << [:delete]
end
deleted() click to toggle source
# File lib/imap-filter/dsl.rb, line 231
def deleted
  directives << 'DELETED'
end
draft() click to toggle source
# File lib/imap-filter/dsl.rb, line 239
def draft
  directives << 'DRAFT'
end
flagged() click to toggle source
# File lib/imap-filter/dsl.rb, line 247
def flagged
  directives << 'FLAGGED'
end
from(s) click to toggle source
# File lib/imap-filter/dsl.rb, line 172
def from s
  directives << 'FROM' << s
end
keyword(key) click to toggle source
# File lib/imap-filter/dsl.rb, line 265
def keyword key
  directives << 'KEYWORD' << key
end
list(*a, **h) click to toggle source
# File lib/imap-filter/dsl.rb, line 121
def list *a, **h
  @actions << [:list, a, h]
end
mark(*flags, custom: false) click to toggle source
# File lib/imap-filter/dsl.rb, line 139
def mark *flags, custom: false
  flags.each do |f|
    raise "Illegal flag #{f}" unless MARKS.member? f
  end unless custom
  @actions << [:mark] + flags.map{ |f| MARKS[f] || f }
end
Also aliased as: store
massage(directives) click to toggle source
# File lib/imap-filter/dsl.rb, line 276
def massage directives
  if directives.is_a?(Hash)
    directives.map{ |k, v|
      unless v.is_a? Array
        [k.to_s.upcase, v]
      else
        ['OR',
         v.map{ |va|
           [k.to_s.upcase, va]
         }].flatten
      end
    }.flatten
  elsif directives.is_a?(Symbol)
    DIRECTIVES[directives]
  else
    directives
  end
end
move(to_mbox) click to toggle source
# File lib/imap-filter/dsl.rb, line 125
def move to_mbox
  @actions << [:move, to_mbox]
end
Also aliased as: mv
mv(to_mbox)
Alias for: move
on(d) click to toggle source
# File lib/imap-filter/dsl.rb, line 183
def on d
  directives << 'ON' << d
end
op(*a) click to toggle source
# File lib/imap-filter/dsl.rb, line 176
def op *a          
  a.each { |x|
    raise "illegal operator #{x}" unless OPS.member? x
    directives << x.to_s.upcase
  }
end
seen() click to toggle source
# File lib/imap-filter/dsl.rb, line 255
def seen
  directives << 'SEEN'
end
sentbefore(d) click to toggle source
# File lib/imap-filter/dsl.rb, line 199
def sentbefore d
  directives << 'SENTBEFORE' << d
end
senton(d) click to toggle source
# File lib/imap-filter/dsl.rb, line 191
def senton d
  directives << 'SENTON' << d
end
sentsince(d) click to toggle source
# File lib/imap-filter/dsl.rb, line 195
def sentsince d
  directives << 'SENTSINCE' << d
end
since(d) click to toggle source
# File lib/imap-filter/dsl.rb, line 187
def since d
  directives << 'SINCE' << d
end
smaller(n) click to toggle source
# File lib/imap-filter/dsl.rb, line 203
def smaller n 
  directives << 'SMALLER' << n
end
store(*flags, custom: false)
Alias for: mark
subject(s) click to toggle source
# File lib/imap-filter/dsl.rb, line 207
def subject s
  directives << 'SUBJECT' << s
end
text(s) click to toggle source
# File lib/imap-filter/dsl.rb, line 211
def text s
  directives << 'TEXT' << s
end
to(s) click to toggle source
# File lib/imap-filter/dsl.rb, line 215
def to s
  directives << 'TO' << s
end
to_s() click to toggle source
# File lib/imap-filter/dsl.rb, line 305
def to_s
  "MBOX #{mbox} DIRECTIVES #{directives}"
end
unanswered() click to toggle source
# File lib/imap-filter/dsl.rb, line 227
def unanswered
  directives << 'UNANSWERED'
end
undeleted() click to toggle source
# File lib/imap-filter/dsl.rb, line 235
def undeleted
  directives << 'UNDELETED'
end
undraft() click to toggle source
# File lib/imap-filter/dsl.rb, line 243
def undraft
  directives << 'UNDRAFT'
end
unflagged() click to toggle source
# File lib/imap-filter/dsl.rb, line 251
def unflagged
  directives << 'UNFLAGGED'
end
unkeyword(key) click to toggle source
# File lib/imap-filter/dsl.rb, line 269
def unkeyword key
  directives << 'UNKEYWORD' << key
end
unmark(*flags, custom: false) click to toggle source
# File lib/imap-filter/dsl.rb, line 147
def unmark *flags,  custom: false
  flags.each do |f|
    raise "Illegal flag #{f}" unless MARKS.member? f
  end unless custom
  @actions << [:unmark] + flags.map{ |f| MARKS[f] || f }
end
Also aliased as: unstore
unseen() click to toggle source
# File lib/imap-filter/dsl.rb, line 260
def unseen
  directives << 'UNSEEN'
end
unstore(*flags, custom: false)
Alias for: unmark