Class: Sieve::FilterSet

Inherits:
Object
  • Object
show all
Defined in:
lib/sieve-parser/filterset.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text_sieve = nil) ⇒ FilterSet

Create FilterSet

Parameters:

  • text (String)

    of sieve



27
28
29
30
31
32
33
# File 'lib/sieve-parser/filterset.rb', line 27

def initialize(text_sieve=nil)
  @text_sieve = text_sieve
  @requires = []
  @filters = []
  @auto_require = true
  parse unless @text_sieve.nil?
end

Instance Attribute Details

#auto_requireObject

Returns the value of attribute auto_require.



22
23
24
# File 'lib/sieve-parser/filterset.rb', line 22

def auto_require
  @auto_require
end

#text_sieveObject

Returns the value of attribute text_sieve.



22
23
24
# File 'lib/sieve-parser/filterset.rb', line 22

def text_sieve
  @text_sieve
end

Instance Method Details

#add_filter(filter) ⇒ Object

Add filter to filters of filterset

Parameters:

Raises:

  • (Exception)


67
68
69
70
71
# File 'lib/sieve-parser/filterset.rb', line 67

def add_filter(filter)
  raise Exception.new("The param is not a Filter!") unless filter.class.to_s == "Sieve::Filter"
  load_requires(filter) if @auto_require == true
  @filters << filter
end

#add_require(req) ⇒ Object

Add require to requires of filterset

Parameters:

  • name (string)

    of require

Raises:

  • (Exception)


82
83
84
85
86
87
# File 'lib/sieve-parser/filterset.rb', line 82

def add_require(req)
  #TODO: Implement config of requires allowed
  raise Exception.new("Is not a require valid!") unless req =~ /\S+/ 
  @requires << req
  @requires.uniq!
end

#filter_index_by_name(name) ⇒ Sieve::Filter

Return filter index by name

Parameters:

  • name (String)

    of filter

Returns:

Raises:



51
52
53
54
55
# File 'lib/sieve-parser/filterset.rb', line 51

def filter_index_by_name(name)
  key = @filters.index{|f| f.name==name}
  raise SieveErrors::FilterNotFound unless key
  key
end

#filtersarray

Return all filters of script.

Returns:

  • (array)

    array of filters



37
38
39
# File 'lib/sieve-parser/filterset.rb', line 37

def filters
  @filters
end

#find_filter_by_name(name) ⇒ integer

Return filter by name

Parameters:

  • name (String)

    of filter

Returns:

  • (integer)

    index of filter



44
45
46
# File 'lib/sieve-parser/filterset.rb', line 44

def find_filter_by_name(name)
  @filters[filter_index_by_name(name)]
end

#remove_filter_by_name(name) ⇒ Array

Remove filter by name

Parameters:

  • name (String)

    of filter

Returns:

  • (Array)

    @filter array



60
61
62
63
# File 'lib/sieve-parser/filterset.rb', line 60

def remove_filter_by_name(name)
  filter_index_by_name(name)
  @filters.delete_if {|f| f.name == name }
end

#requiresarray

Requires inside the script

Returns:

  • (array)

    names of requires



75
76
77
78
# File 'lib/sieve-parser/filterset.rb', line 75

def requires
  @requires.uniq!
  @requires
end

#to_sstring

Return a text of filterset

Returns:

  • (string)

    text of filterset



91
92
93
94
95
96
# File 'lib/sieve-parser/filterset.rb', line 91

def to_s
  text = ""
  text = "require [\"#{requires.join('","')}\"];\n" if @requires.count > 0
  text += filters.join("") if filters.count > 0
  text
end

#whereArray<Sieve::Filter>

Note:

The :text only have text to search

Return a array of filters by select with all given params

Parameters:

  • ({:name=>String, :disabled => Boolean, :text => String})

Returns:



102
103
104
105
106
107
108
109
110
111
112
# File 'lib/sieve-parser/filterset.rb', line 102

def where
  entries =[]
  @filters.each do |filter| 
    cond = false
    cond = filter.name == args[:name] unless args[:name].nil?
    cond = filter.disabled? == args[:disabled] unless args[:disabled].nil?
    cond = filter.to_s =~ /#{args[:text]}/ unless args[:text].nil? 
    entries << filter if cond
  end
  entries
end