diff --git a/bindings/ruby/defs.h b/bindings/ruby/defs.h index db530968..1f529883 100644 --- a/bindings/ruby/defs.h +++ b/bindings/ruby/defs.h @@ -292,6 +292,12 @@ notmuch_rb_message_remove_tag(VALUE self, VALUE tagv); VALUE notmuch_rb_message_remove_all_tags(VALUE self); +VALUE +notmuch_rb_message_maildir_flags_to_tags(VALUE self); + +VALUE +notmuch_rb_message_tags_to_maildir_flags(VALUE self); + VALUE notmuch_rb_message_freeze(VALUE self); diff --git a/bindings/ruby/init.c b/bindings/ruby/init.c index 63ab205e..4a63ba07 100644 --- a/bindings/ruby/init.c +++ b/bindings/ruby/init.c @@ -273,6 +273,8 @@ Init_notmuch(void) rb_define_alias(notmuch_rb_cMessage, "<<", "add_tag"); rb_define_method(notmuch_rb_cMessage, "remove_tag", notmuch_rb_message_remove_tag, 1); rb_define_method(notmuch_rb_cMessage, "remove_all_tags", notmuch_rb_message_remove_all_tags, 0); + rb_define_method(notmuch_rb_cMessage, "maildir_flags_to_tags", notmuch_rb_message_maildir_flags_to_tags, 0); + rb_define_method(notmuch_rb_cMessage, "tags_to_maildir_flags", notmuch_rb_message_tags_to_maildir_flags, 0); rb_define_method(notmuch_rb_cMessage, "freeze", notmuch_rb_message_freeze, 0); rb_define_method(notmuch_rb_cMessage, "thaw", notmuch_rb_message_thaw, 0); diff --git a/bindings/ruby/message.c b/bindings/ruby/message.c index f97e1a4e..1b2c01ef 100644 --- a/bindings/ruby/message.c +++ b/bindings/ruby/message.c @@ -283,6 +283,44 @@ notmuch_rb_message_remove_all_tags(VALUE self) return Qtrue; } +/* + * call-seq: MESSAGE.maildir_flags_to_tags => true + * + * Add/remove tags according to maildir flags in the message filename(s) + */ +VALUE +notmuch_rb_message_maildir_flags_to_tags(VALUE self) +{ + notmuch_status_t ret; + notmuch_message_t *message; + + Data_Get_Notmuch_Message(self, message); + + ret = notmuch_message_maildir_flags_to_tags(message); + notmuch_rb_status_raise(ret); + + return Qtrue; +} + +/* + * call-seq: MESSAGE.tags_to_maildir_flags => true + * + * Rename message filename(s) to encode tags as maildir flags + */ +VALUE +notmuch_rb_message_tags_to_maildir_flags(VALUE self) +{ + notmuch_status_t ret; + notmuch_message_t *message; + + Data_Get_Notmuch_Message(self, message); + + ret = notmuch_message_tags_to_maildir_flags(message); + notmuch_rb_status_raise(ret); + + return Qtrue; +} + /* * call-seq: MESSAGE.freeze => true *