nilclass-maildir 0.4.3 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +5 -3
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/maildir.rb +12 -2
- data/maildir.gemspec +9 -8
- data/test/test_helper.rb +3 -4
- data/test/test_keywords.rb +3 -3
- data/test/test_maildir.rb +8 -2
- data/test/test_serializers.rb +1 -1
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -6,7 +6,9 @@ A ruby library for reading and writing messages in the maildir format.
|
|
6
6
|
|
7
7
|
See http://cr.yp.to/proto/maildir.html and http://en.wikipedia.org/wiki/Maildir
|
8
8
|
|
9
|
-
|
9
|
+
"Two words: no locks." -- Daniel J. Berstein
|
10
|
+
|
11
|
+
The maildir format allows multiple processes to read and write arbitrary messages without file locks.
|
10
12
|
|
11
13
|
New messages are initially written to a "tmp" directory with an automatically-generated unique filename. After the message is written, it's moved to the "new" directory where other processes may read it.
|
12
14
|
|
@@ -104,9 +106,9 @@ It's trivial to create a custom serializer. Implement the following two methods:
|
|
104
106
|
load(path)
|
105
107
|
dump(data, path)
|
106
108
|
|
107
|
-
==
|
109
|
+
== Contributors
|
108
110
|
|
109
|
-
|
111
|
+
Niklas E. Cathor (http://github.com/nilclass) added subdir & courierimapkeywords support
|
110
112
|
|
111
113
|
== Copyright
|
112
114
|
|
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ task :default => :test
|
|
10
10
|
begin
|
11
11
|
require 'jeweler'
|
12
12
|
Jeweler::Tasks.new do |gemspec|
|
13
|
-
gemspec.name = "
|
13
|
+
gemspec.name = "maildir"
|
14
14
|
gemspec.summary = "Read & write messages in the maildir format"
|
15
15
|
gemspec.description = "A ruby library for reading and writing arbitrary messages in DJB's maildir format"
|
16
16
|
gemspec.email = "aaron@ktheory.com"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/lib/maildir.rb
CHANGED
@@ -2,7 +2,6 @@ require 'fileutils' # For create_directories
|
|
2
2
|
class Maildir
|
3
3
|
|
4
4
|
SUBDIRS = [:tmp, :new, :cur].freeze
|
5
|
-
READABLE_DIRS = SUBDIRS.reject{|s| :tmp == s}.freeze
|
6
5
|
|
7
6
|
include Comparable
|
8
7
|
|
@@ -86,6 +85,17 @@ class Maildir
|
|
86
85
|
Maildir::Message.new(self, key)
|
87
86
|
end
|
88
87
|
|
88
|
+
# Returns a message object for the given unique name.
|
89
|
+
# This allows retrieving messages where the flags may have changed,
|
90
|
+
# but obviously is slower than getting it by key.
|
91
|
+
def find(unique_name)
|
92
|
+
get_dir_listing(:cur).each do |key|
|
93
|
+
# NOTE: I used split(File::SEPARATOR) and split(':') here first,
|
94
|
+
# but when benchmarking it turned out this is 2 times faster.
|
95
|
+
return get(key) if key.match(/cur\/(.*):.*$/)[1] == unique_name
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
89
99
|
# Deletes the message for key by calling destroy() on the message.
|
90
100
|
def delete(key)
|
91
101
|
get(key).destroy
|
@@ -112,4 +122,4 @@ class Maildir
|
|
112
122
|
end
|
113
123
|
require 'maildir/unique_name'
|
114
124
|
require 'maildir/serializer/base'
|
115
|
-
require 'maildir/message'
|
125
|
+
require 'maildir/message'
|
data/maildir.gemspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{maildir}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.5.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Aaron Suggs", "Niklas E. Cathor"]
|
@@ -48,13 +48,13 @@ Gem::Specification.new do |s|
|
|
48
48
|
s.rubygems_version = %q{1.3.5}
|
49
49
|
s.summary = %q{Read & write messages in the maildir format}
|
50
50
|
s.test_files = [
|
51
|
-
"test/
|
51
|
+
"test/test_helper.rb",
|
52
52
|
"test/test_keywords.rb",
|
53
|
-
"test/
|
54
|
-
"test/test_subdirs.rb",
|
53
|
+
"test/test_maildir.rb",
|
55
54
|
"test/test_message.rb",
|
56
|
-
"test/
|
57
|
-
"test/
|
55
|
+
"test/test_serializers.rb",
|
56
|
+
"test/test_subdirs.rb",
|
57
|
+
"test/test_unique_name.rb"
|
58
58
|
]
|
59
59
|
|
60
60
|
if s.respond_to? :specification_version then
|
@@ -79,3 +79,4 @@ Gem::Specification.new do |s|
|
|
79
79
|
s.add_dependency(%q<ktheory-fakefs>, [">= 0"])
|
80
80
|
end
|
81
81
|
end
|
82
|
+
|
data/test/test_helper.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'test/unit'
|
2
|
+
require 'rubygems'
|
3
3
|
require 'shoulda'
|
4
|
-
require 'fileutils'
|
5
4
|
require 'maildir'
|
6
5
|
|
7
6
|
# Require all the serializers
|
@@ -17,7 +16,7 @@ require 'fakefs'
|
|
17
16
|
|
18
17
|
# Create a reusable maildir that's cleaned up when the tests are done
|
19
18
|
def temp_maildir
|
20
|
-
|
19
|
+
Maildir.new("/tmp/maildir_test")
|
21
20
|
end
|
22
21
|
|
23
22
|
# create the subdir tree:
|
@@ -32,7 +31,7 @@ def setup_subdirs(maildir)
|
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
35
|
-
#
|
34
|
+
# Test that objects are neither nil nor empty
|
36
35
|
def assert_not_empty(obj, msg='')
|
37
36
|
assert !obj.nil? && !obj.empty?, msg
|
38
37
|
end
|
data/test/test_keywords.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
require 'maildir/keywords'
|
3
3
|
class TestKeywords < Test::Unit::TestCase
|
4
|
-
context "A message" do
|
5
|
-
setup do
|
4
|
+
context "A message" do
|
5
|
+
setup do
|
6
6
|
@data = "foo\n"
|
7
7
|
@msg = Maildir::Message.create(temp_maildir, @data)
|
8
8
|
end
|
9
9
|
|
10
|
-
should "remember keywords" do
|
10
|
+
should "remember keywords" do
|
11
11
|
kw = %w(Junk Seen)
|
12
12
|
@msg.keywords = kw
|
13
13
|
assert (@msg.keywords & kw).size == 2
|
data/test/test_maildir.rb
CHANGED
@@ -41,14 +41,20 @@ class TestMaildir < Test::Unit::TestCase
|
|
41
41
|
should "list a new message" do
|
42
42
|
@message = temp_maildir.add("")
|
43
43
|
messages = temp_maildir.list(:new)
|
44
|
-
|
44
|
+
assert_equal messages, [@message]
|
45
45
|
end
|
46
46
|
|
47
47
|
should "list a cur message" do
|
48
48
|
@message = temp_maildir.add("")
|
49
49
|
@message.process
|
50
50
|
messages = temp_maildir.list(:cur)
|
51
|
-
|
51
|
+
assert_equal messages, [@message]
|
52
|
+
end
|
53
|
+
|
54
|
+
should "find a message by unique name" do
|
55
|
+
@message = temp_maildir.add("")
|
56
|
+
@message.process
|
57
|
+
assert_equal temp_maildir.find(@message.unique_name), @message
|
52
58
|
end
|
53
59
|
end
|
54
60
|
|
data/test/test_serializers.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nilclass-maildir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Suggs
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-01-
|
13
|
+
date: 2010-01-25 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|