summaryrefslogtreecommitdiff
path: root/lib/MaildirIndexer/Email.pm6
diff options
context:
space:
mode:
Diffstat (limited to 'lib/MaildirIndexer/Email.pm6')
-rw-r--r--lib/MaildirIndexer/Email.pm621
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/MaildirIndexer/Email.pm6 b/lib/MaildirIndexer/Email.pm6
new file mode 100644
index 0000000..f5d1c39
--- /dev/null
+++ b/lib/MaildirIndexer/Email.pm6
@@ -0,0 +1,21 @@
+use v6.d.PREVIEW;
+unit class MaildirIndexer::Email;
+
+has %!headers;
+has $!body;
+
+method BUILD(:%!headers,:$!body) { }
+
+method message-id { split-refs(%!headers<message-id>)[0] }
+method refs {
+ return |(
+ split-refs(%!headers<in-reply-to>),
+ split-refs(%!headers<references>).reverse,
+ );
+}
+
+multi split-refs(Any) { return (); }
+multi split-refs(Str:D $str) {
+ return $/<refs>ยป.Str if $str ~~ m{'<' $<refs> = (<-[<>]>+)+ % [ '>' .*? '<' ] '>' };
+ return ();
+}