Multiple changes.
- Remove the runtime dependency on rake-compiler.
- Use #rb_str_new instead of #rb_str_new2, the hash character array
isn't null terminated.
- Add various safeguards for object instantiations.
- Remove the 'threaded' options for messages, folding them into
'archived'. If archiving is enabled, so is threading.
- Return nil for lookups from the list object instead of raising
exceptions.
- Open subject indexes with the proper encodings (thanks Michael
Granger!)
- Allow touching and unlinking files to operate on multiple paths
at once, within a single safety() wrap.
# vim: set nosta noet ts=4 sw=4:
# A Ruby interface to the ezmlm-idx mailing list system.
#
# Ezmlm.find_directories( '/lists' ) #=> [ Ezmlm::List, Ezmlm::List ]
#
# Ezmlm.each_list( '/lists' ) do |list|
# puts "\"%s\" <%s>" % [ list.name, list.address ]
# end
#
#
# == Version
#
# $Id$
#
#---
#
# Please see the file LICENSE in the base directory for licensing details.
#
require 'pathname'
### Toplevel namespace module
module Ezmlm
# Package version
VERSION = '0.1.0'
# Suck in the components.
#
require 'ezmlm/hash'
require 'ezmlm/list'
require 'ezmlm/list/author'
require 'ezmlm/list/message'
require 'ezmlm/list/thread'
###############
module_function
###############
### Find all directories that look like an Ezmlm list directory under
### the specified +listsdir+ and return Pathname objects for each.
###
def find_directories( listsdir )
listsdir = Pathname.new( listsdir )
return Pathname.glob( listsdir + '*' ).sort.select do |entry|
entry.directory? && ( entry + 'mailinglist' ).exist?
end
end
### Iterate over each directory that looks like an Ezmlm list in the
### specified +listsdir+ and yield it as an Ezmlm::List object.
###
def each_list( listsdir )
find_directories( listsdir ).each do |entry|
yield( Ezmlm::List.new(entry) )
end
end
end # module Ezmlm