class Rouge::Lexers::Sieve

def self.actions

def self.actions
  @actions ||= Set.new(
    # action commands (rfc5228 § 2.9)
    %w(keep fileinto redirect discard) +
    # Editheader Extension (rfc5293)
    %w(addheader deleteheader) +
    # Reject and Extended Reject Extensions (rfc5429)
    %w(reject ereject) +
    # Extension for Notifications (rfc5435)
    %w(notify) +
    # Imap4flags Extension (rfc5232)
    %w(setflag addflag removeflag) +
    # Vacation Extension (rfc5230)
    %w(vacation) +
    # MIME Part Tests, Iteration, Extraction, Replacement, and Enclosure (rfc5703)
    %w(replace enclose extracttext)
  )
end

def self.controls

control commands (rfc5228 § 3)
def self.controls
  @controls ||= %w(if elsif else require stop)
end

def self.tests

def self.tests
  @tests ||= Set.new(
    # test commands (rfc5228 § 5)
    %w(address allof anyof exists false header not size true) +
    # Body Extension (rfc5173)
    %w(body) +
    # Imap4flags Extension (rfc5232)
    %w(hasflag) +
    # Spamtest and Virustest Extensions (rfc5235)
    %w(spamtest virustest) +
    # Date and Index Extensions (rfc5260)
    %w(date currentdate) +
    # Extension for Notifications (rfc5435)
    %w(valid_notify_method notify_method_capability) +
    # Extensions for Checking Mailbox Status and Accessing Mailbox
    # Metadata (rfc5490)
    %w(mailboxexists metadata metadataexists servermetadata servermetadataexists)
  )
end