Class: Irc::NetmaskDb
- Inherits:
-
Object
- Object
- Irc::NetmaskDb
- Defined in:
- /home/apoc/projects/ruby/rbot/lib/rbot/maskdb.rb
Defined Under Namespace
Classes: Tree
Instance Method Summary (collapse)
- - (Object) add(user, *masks)
- - (Object) cook_component(str)
- - (Object) find(iu)
-
- (NetmaskDb) initialize
constructor
api wrapper for netmasks.
- - (Object) mask2keys(m)
- - (Object) metric(iu, bu, mask)
- - (Object) remove(user, mask)
Constructor Details
- (NetmaskDb) initialize
api wrapper for netmasks
101 102 103 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/maskdb.rb', line 101 def initialize @tree = Tree.new end |
Instance Method Details
- (Object) add(user, *masks)
126 127 128 129 130 131 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/maskdb.rb', line 126 def add(user, *masks) masks.each do |m| debug "adding user #{user} with mask #{m.fullform}" @tree.add([user, m], *mask2keys(m)) end end |
- (Object) cook_component(str)
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/maskdb.rb', line 105 def cook_component(str) s = (str && !str.empty?) ? str : '*' l = s.index(/[\?\*]/) if l l2 = s.size - s.rindex(/[\?\*]/) - 1 if l2 > l s = s.reverse l = l2 end return (l > 0) ? s.slice(0 .. (l - 1)) : '' else return s end end |
- (Object) find(iu)
149 150 151 152 153 154 155 156 157 158 159 160 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/maskdb.rb', line 149 def find(iu) debug "find(#{iu.fullform})" iud = iu.downcased matches = @tree.find(iud.host, iud.user, iud.nick).uniq.map do |val| m = metric(iu, *val) m ? [val[0], m] : nil end.compact.sort { |a, b| a[1] <=> a[1] } debug "matches: " + (matches.map do |m| "#{m[0].username}: [#{m[1]}]" end.join(', ')) return matches.empty? ? nil : matches[0][0] end |
- (Object) mask2keys(m)
121 122 123 124 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/maskdb.rb', line 121 def mask2keys(m) md = m.downcased [md.host, md.user, md.nick].map { |c| cook_component(c) } end |
- (Object) metric(iu, bu, mask)
140 141 142 143 144 145 146 147 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/maskdb.rb', line 140 def metric(iu, bu, mask) ret = nil if iu.matches? mask ret = iu.fullform.length - mask.fullform.length ret += 10 if bu.transient? end return ret end |
- (Object) remove(user, mask)
133 134 135 136 137 138 |
# File '/home/apoc/projects/ruby/rbot/lib/rbot/maskdb.rb', line 133 def remove(user, mask) debug "trying to remove user #{user} with mask #{mask}" @tree.remove(*mask2keys(mask)) do |val| val[0] == user and val[1].fullform == mask.fullform end end |