class MailProvider::Trie
Attributes
name[R]
Public Class Methods
base_for(name, directory)
click to toggle source
# File lib/mail_provider/trie.rb, line 18 def self.base_for(name, directory) File.join(directory, "#{name}.dump") end
create(name, entries, opts = {})
click to toggle source
# File lib/mail_provider/trie.rb, line 5 def self.create(name, entries, opts = {}) new(name).tap do |trie| entries.each { |key, val| trie.put! key, val } trie.save opts[:directory] end end
load(name, opts = {})
click to toggle source
# File lib/mail_provider/trie.rb, line 12 def self.load(name, opts = {}) new(name).tap do |trie| trie.load opts[:directory] end end
new(name)
click to toggle source
# File lib/mail_provider/trie.rb, line 24 def initialize(name) @name = name @native = Hamster::Trie.new(0) end
Public Instance Methods
ending_with(str)
click to toggle source
# File lib/mail_provider/trie.rb, line 40 def ending_with(str) entries { |en| en.end_with?(str) } end
entries_where() { |en| ... }
click to toggle source
# File lib/mail_provider/trie.rb, line 29 def entries_where selected = [] @native.each { |en| selected << en if !block_given? || yield(en[0]) } selected.sort_by(&:last).to_h end
Also aliased as: entries
load(directory)
click to toggle source
# File lib/mail_provider/trie.rb, line 48 def load(directory) base = self.class.base_for(@name, directory) unless File.exist?(base) raise TrieLoadError, "Saved trie does not exist at: #{base}" end @native = Hamster::Trie[Marshal.load(File.read(base))] end
matching(regex)
click to toggle source
# File lib/mail_provider/trie.rb, line 36 def matching(regex) entries { |en| en =~ regex } end
method_missing(m, *a, &b)
click to toggle source
Calls superclass method
# File lib/mail_provider/trie.rb, line 62 def method_missing(m, *a, &b) return @native.send(m, *a, &b) if @native.respond_to?(m, true) super end
respond_to_missing?(m, *a, &b)
click to toggle source
Calls superclass method
# File lib/mail_provider/trie.rb, line 68 def respond_to_missing?(m, *a, &b) @native.respond_to?(m, *a, &b) || super end
save(directory)
click to toggle source
# File lib/mail_provider/trie.rb, line 57 def save(directory) base = self.class.base_for(@name, directory) File.open(base, 'wb') { |f| f.write Marshal.dump(entries) } end
starting_with(str)
click to toggle source
# File lib/mail_provider/trie.rb, line 44 def starting_with(str) entries { |en| en.start_with?(str) } end