|
1 |
|
2 Usage |
|
3 ======= |
|
4 |
|
5 Here's a quick rundown of how to use this library. For specifics, see |
|
6 the generated RDoc. |
|
7 |
|
8 |
|
9 Examples |
|
10 -------- |
|
11 |
|
12 |
|
13 *Print the list address for all lists in a directory*: |
|
14 |
|
15 Ezmlm.each_list( '/lists' ) do |list| |
|
16 puts list.address |
|
17 end |
|
18 |
|
19 |
|
20 *Check if I'm subscribed to a list, and if so, unsubscribe*: |
|
21 |
|
22 (You don't really have to check first, subscribe and unsubscribe are |
|
23 idempotent.) |
|
24 |
|
25 list = Ezmlm::List.new( '/lists/waffle-lovers' ) |
|
26 |
|
27 if list.include?( 'mahlon@martini.nu' ) |
|
28 list.unsubscribe( 'mahlon@martini.nu' ) |
|
29 end |
|
30 |
|
31 puts "The list now has %d subscribers!" % [ list.subscribers.size ] |
|
32 |
|
33 |
|
34 *Iterate over the subscriber list*: |
|
35 |
|
36 list.subscribers.each do |subscriber| |
|
37 # ... |
|
38 end |
|
39 |
|
40 |
|
41 *Make the list moderated, and add a moderator*: |
|
42 |
|
43 list.moderated = true |
|
44 list.add_moderator( 'mahlon@martini.nu' ) |
|
45 list.moderated? #=> true |
|
46 |
|
47 All other list behavior tunables operate in a similar fashion, see RDoc |
|
48 for details. |
|
49 |
|
50 |
|
51 *Archiving!* |
|
52 |
|
53 All of the archival pieces take advantage of Ezmlm-IDX extensions. |
|
54 If you want to use these features, you'll want to enable archiving |
|
55 and indexing for your lists, using the -a and -i flags to ezmlm-make. |
|
56 (Enabling archiving with this library also enables indexing and thread |
|
57 indexes, I assume that since you're using ezmlm-idx, you want these |
|
58 enhancements!) |
|
59 |
|
60 list.archived? #=> false |
|
61 list.archived = true |
|
62 list.archived? #=> true |
|
63 |
|
64 If your list(s) already had archiving enabled (the default to |
|
65 ezmlm-make) but not indexing, you can manually run ezmlm-archive to |
|
66 rebuild the necessary files - afterwards, they are kept up to date |
|
67 automatically. |
|
68 |
|
69 |
|
70 *How many messages are in the archive?*: |
|
71 |
|
72 list.message_count #=> 123 |
|
73 |
|
74 |
|
75 *Fetch message number 100 from the archive*: |
|
76 |
|
77 message = list.message( 100 ) or abort "No such message." |
|
78 |
|
79 puts message.subject |
|
80 puts message.body.to_s # Print just the body of the message. |
|
81 puts message.to_s # Print the entire, unparsed message. |
|
82 |
|
83 thread = message.thread # Returns an Ezmlm::List::Thread object |
|
84 author = message.author # Returns an Ezmlm::List::Author object |
|
85 |
|
86 As a general rule, methods called on the Ezmlm::List object return nil |
|
87 if they are unable to perform the requested task. Instantiating the |
|
88 underlying objects directly raise with a specific error. The following |
|
89 are equivalent, but behave differently: |
|
90 |
|
91 message = list.message( 10000 ) # nonexistent message, returns nil |
|
92 message = Ezmlm::List::Message.new( list, 10000 ) # Raises a RuntimeError |
|
93 |
|
94 Message objects act as "Mail" objects from the excellent library from |
|
95 Mikel Lindsaar (https://github.com/mikel/mail). See its documentation |
|
96 for specifics. |
|
97 |
|
98 |
|
99 *Iterate over messages in a specific thread*: |
|
100 |
|
101 Messages know what thread they belong to. Once you have a thread object |
|
102 from a message, it is an enumerable. Iterate or sort on it using |
|
103 standard Ruby methods. |
|
104 |
|
105 thread.each do |message| |
|
106 # ... |
|
107 end |
|
108 |
|
109 Threads are also aware of who participated in the conversation, via the |
|
110 'authors' and 'each_author' methods. |
|
111 |
|
112 |
|
113 *Iterate over messages from a specific author:* |
|
114 |
|
115 Messages know who authored them. Once you have an author object from a |
|
116 message, it is an enumerable. Iterate or sort on it using standard Ruby |
|
117 methods. |
|
118 |
|
119 author.each do |message| |
|
120 # ... |
|
121 end |
|
122 |
|
123 An Author object is also aware of all threads the author participated |
|
124 in, via the 'threads' and 'each_thread' methods. |
|
125 |
|
126 |