class QuickML::GroupMembers
Public Class Methods
new(config, group, db, group_config)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 88 def initialize(config, group, db, group_config) @config = config @group = group @db = db @group_config = group_config @active = IcaseArray.new @former = IcaseArray.new @error = IcaseHash.new load end
Private Class Methods
generate(active, former, error)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 205 def self.generate(active, former, error) c = '' active.each {|address| c << address+"\n" } former.each {|address| c << "# "+address+"\n" } error.each {|address, error_info| t = error_info.last_error_time.to_i c << "; #{address} #{error_info.count} #{t}\n" } return c end
parse(active, former, error, content)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 188 def self.parse(active, former, error, content) content.each {|line| line.chomp! next if line.empty? if /^# (.*)/ =~ line # removed address former.push($1) if ! former.include?($1) elsif /^; (.*?) (\d+)(?: (\d+))?/ =~ line address = $1 count= $2.to_i last_error_time = if $3 then Time.at($3.to_i) else Time.at(0) end error[address]= ErrorInfo.new(count, last_error_time) else active.push(line) if ! active.include?(line) end } end
Public Instance Methods
active_delete(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 133 def active_delete(address) @active.delete(address) end
active_empty?()
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 124 def active_empty? return @active.empty? end
active_include?(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 127 def active_include?(address) return @active.include?(address) end
active_push(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 130 def active_push(address) @active.push(address) end
add_member(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 106 def add_member(address) raise TooManyMembers if too_many? former_delete(address) active_push(address) save end
error_count(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 176 def error_count (address) return @error[address].count if @error.include?(address) return 0 end
error_delete(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 152 def error_delete(address) @error.delete(address) end
error_include?(address)
click to toggle source
error
# File vendor/qwik/lib/qwik/group-member.rb, line 149 def error_include?(address) return @error.include?(address) end
former_delete(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 144 def former_delete(address) @former.delete(address) end
former_include?(address)
click to toggle source
former
# File vendor/qwik/lib/qwik/group-member.rb, line 138 def former_include?(address) return @former.include?(address) end
former_push(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 141 def former_push(address) @former.push(address) end
get_active()
click to toggle source
active
# File vendor/qwik/lib/qwik/group-member.rb, line 121 def get_active return @active end
inc_error_count(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 166 def inc_error_count (address) if ! @error.include?(address) @error[address] = ErrorInfo.new end if ! allowable_error_interval?(@error[address].last_error_time) @error[address].inc_count end @error[address].count end
list()
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 162 def list return @active.map {|x| MailAddress.obfuscate(x) }.join("\n") end
remove_member(address)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 113 def remove_member(address) active_delete(address) former_push(address) error_delete(address) save end
save()
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 101 def save str = GroupMembers.generate(@active, @former, @error) @db.put(:Members, str) end
too_many?()
click to toggle source
Old methods.
# File vendor/qwik/lib/qwik/group-member.rb, line 157 def too_many? return false if @group_config.unlimited? return @group_config[:max_members] <= @active.length end
Private Instance Methods
allowable_error_interval?(time)
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 216 def allowable_error_interval? (time) now = Time.now past = now - @config.allowable_error_interval return past < time && time <= now end
load()
click to toggle source
# File vendor/qwik/lib/qwik/group-member.rb, line 183 def load content = @db.get(:Members) || '' GroupMembers.parse(@active, @former, @error, content) end