diff options
| author | Felipe Contreras <felipe.contreras@gmail.com> | 2021-05-01 07:04:46 -0500 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2021-05-23 09:05:33 -0300 |
| commit | 85ae2bcf56021a22a803fbde34baa5050bbb28d9 (patch) | |
| tree | 19b0296e512c9d7a728d5b59f58736aec2ff9667 | |
| parent | f44c83c083faa152043d70bfcb9f70b4825022f2 (diff) | |
ruby: use notmuch_exclude_t enum
It exists since 2013, let's allow it to be used in Ruby.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
| -rw-r--r-- | bindings/ruby/init.c | 24 | ||||
| -rw-r--r-- | bindings/ruby/query.c | 8 | ||||
| -rwxr-xr-x | test/T395-ruby.sh | 17 |
3 files changed, 46 insertions, 3 deletions
diff --git a/bindings/ruby/init.c b/bindings/ruby/init.c index 62515eca..bedfbf60 100644 --- a/bindings/ruby/init.c +++ b/bindings/ruby/init.c @@ -154,6 +154,30 @@ Init_notmuch (void) * Maximum allowed length of a tag */ rb_define_const (mod, "TAG_MAX", INT2FIX (NOTMUCH_TAG_MAX)); + /* + * Document-const: Notmuch::EXCLUDE_FLAG + * + * Only flag excluded results + */ + rb_define_const (mod, "EXCLUDE_FLAG", INT2FIX (NOTMUCH_EXCLUDE_FLAG)); + /* + * Document-const: Notmuch::EXCLUDE_TRUE + * + * Exclude messages from the results + */ + rb_define_const (mod, "EXCLUDE_TRUE", INT2FIX (NOTMUCH_EXCLUDE_TRUE)); + /* + * Document-const: Notmuch::EXCLUDE_FALSE + * + * Don't exclude anything + */ + rb_define_const (mod, "EXCLUDE_FALSE", INT2FIX (NOTMUCH_EXCLUDE_FALSE)); + /* + * Document-const: Notmuch::EXCLUDE_ALL + * + * Exclude all results + */ + rb_define_const (mod, "EXCLUDE_ALL", INT2FIX (NOTMUCH_EXCLUDE_ALL)); /* * Document-class: Notmuch::BaseError diff --git a/bindings/ruby/query.c b/bindings/ruby/query.c index 3ec98c6c..8a2b4d3d 100644 --- a/bindings/ruby/query.c +++ b/bindings/ruby/query.c @@ -102,19 +102,21 @@ notmuch_rb_query_add_tag_exclude (VALUE self, VALUE tagv) } /* - * call-seq: QUERY.omit_excluded=(boolean) => nil + * call-seq: QUERY.omit_excluded=(fixnum) => nil * * Specify whether to omit excluded results or simply flag them. - * By default, this is set to +true+. + * By default, this is set to +Notmuch::EXCLUDE_TRUE+. */ VALUE notmuch_rb_query_set_omit_excluded (VALUE self, VALUE omitv) { notmuch_query_t *query; + notmuch_exclude_t value; Data_Get_Notmuch_Query (self, query); - notmuch_query_set_omit_excluded (query, RTEST (omitv)); + value = FIXNUM_P (omitv) ? FIX2UINT (omitv) : RTEST(omitv); + notmuch_query_set_omit_excluded (query, value); return Qnil; } diff --git a/test/T395-ruby.sh b/test/T395-ruby.sh index 597330d3..d36d4aff 100755 --- a/test/T395-ruby.sh +++ b/test/T395-ruby.sh @@ -65,4 +65,21 @@ db.all_tags.each do |tag| end EOF +notmuch config set search.exclude_tags deleted +generate_message '[subject]="Good"' +generate_message '[subject]="Bad"' "[in-reply-to]=\<$gen_msg_id\>" +notmuch new > /dev/null +notmuch tag +deleted id:$gen_msg_id + +test_begin_subtest "omit excluded all" +notmuch search --output=threads --exclude=all tag:inbox > EXPECTED +test_ruby <<"EOF" +q = db.query('tag:inbox') +q.add_tag_exclude('deleted') +q.omit_excluded = Notmuch::EXCLUDE_ALL +q.search_threads.each do |t| + puts 'thread:%s' % t.thread_id +end +EOF + test_done |
