<feed xmlns='http://www.w3.org/2005/Atom'>
<title>notmuch/lib/parse-sexp.cc, branch nmweb</title>
<subtitle>thread-based email index, search, and tagging</subtitle>
<id>https://git.notmuchmail.org/git/notmuch/atom?h=nmweb</id>
<link rel='self' href='https://git.notmuchmail.org/git/notmuch/atom?h=nmweb'/>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/'/>
<updated>2022-09-03T11:36:53Z</updated>
<entry>
<title>lib: factor out lastmod range handling from sexp parser.</title>
<updated>2022-09-03T11:36:53Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-08-14T15:02:58Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=93c602a82fdbd03e0104ea922d073b2b1aa6b241'/>
<id>urn:sha1:93c602a82fdbd03e0104ea922d073b2b1aa6b241</id>
<content type='text'>
This will permit the re-use of the same logic in the infix query
parser. The location of the shared code in the infix side is for
consistency with the other shared parsing logic. It will make more
sense when a Xapian field processor is added for the lastmod prefix.
</content>
</entry>
<entry>
<title>lib/sexp: provide relative lastmod queries</title>
<updated>2022-09-03T11:36:53Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-08-14T15:02:57Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=606d9b02e46498874f6c3b5af18467c870e8658b'/>
<id>urn:sha1:606d9b02e46498874f6c3b5af18467c870e8658b</id>
<content type='text'>
Test the relatively trivial logic changes for the sexp query parser
first before refactoring that logic to share with the infix query
parser.
</content>
</entry>
<entry>
<title>lib/sexp: add parameter expansion for regex and wildcard</title>
<updated>2022-07-01T11:37:00Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-06-15T12:14:47Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=6a9ae990990848ec99107f2e2e6b6ae12dcd33df'/>
<id>urn:sha1:6a9ae990990848ec99107f2e2e6b6ae12dcd33df</id>
<content type='text'>
Fix the bug reported at [1].

The parameter expansion for regex and wildcard modifiers has to be
done a bit differently, because their arguments are not s-expressions
defining complete Xapian queries.

[1]: id:87o7yxqxy6.fsf@code.pm
</content>
</entry>
<entry>
<title>lib/sexp: allow * as alias for "" in range searches.</title>
<updated>2022-06-25T22:49:55Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-06-04T21:53:58Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=e7ffb7404163ebb453c96f6af9724e0fba75abb0'/>
<id>urn:sha1:e7ffb7404163ebb453c96f6af9724e0fba75abb0</id>
<content type='text'>
It can be tedious to use "" inside of a string, e.g. in a shell script.
</content>
</entry>
<entry>
<title>lib/sexp: special case "" as an argument in lastmod ranges.</title>
<updated>2022-06-25T22:49:55Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-06-04T21:53:57Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=78632345868b5e4753ad402c806c29569946ce89'/>
<id>urn:sha1:78632345868b5e4753ad402c806c29569946ce89</id>
<content type='text'>
Support this syntax for constincy with (data from to) ranges.
</content>
</entry>
<entry>
<title>lib: strip trailing '/' from pathnames (sexp queries).</title>
<updated>2022-01-27T11:48:27Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-01-21T23:38:53Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=2c1d1107f5dacdb4a2c514909fd96f45f83e2f3c'/>
<id>urn:sha1:2c1d1107f5dacdb4a2c514909fd96f45f83e2f3c</id>
<content type='text'>
This changes makes the sexp query parser consistent with the infix one
in ignoring trailing '/'. Here we do a bit better and ignore any
number of trailing '/'.
</content>
</entry>
<entry>
<title>lib/parse-sexp: handle lastmod queries.</title>
<updated>2022-01-26T11:41:02Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-01-20T13:36:05Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=0a32741fceb7778ced34064eacb7b5aac2c71638'/>
<id>urn:sha1:0a32741fceb7778ced34064eacb7b5aac2c71638</id>
<content type='text'>
This particular choice of converting strings to integers requires C++11.
</content>
</entry>
<entry>
<title>lib/parse-sexp: support actual date queries.</title>
<updated>2022-01-26T11:41:02Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-01-20T13:36:03Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=77ab961a1dce3a31d1f0edf5c9bd83c295575835'/>
<id>urn:sha1:77ab961a1dce3a31d1f0edf5c9bd83c295575835</id>
<content type='text'>
The default argument processing overlaps somewhat with what is already
done in _notmuch_date_strings_to_query, but we can give more specific
error messages for the s-expression context.

The extra generality of _sexp_parse_range will be useful when we
implement additional range prefixes (at least 'lastmod' is needed).
</content>
</entry>
<entry>
<title>lib/parse-sexp: support zero argument date queries</title>
<updated>2022-01-26T11:41:02Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2022-01-20T13:36:01Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=303f207a54325158105aba400702637e670decda'/>
<id>urn:sha1:303f207a54325158105aba400702637e670decda</id>
<content type='text'>
These are not too practical, although they may simplify some user
query generation code. Mainly this adds a new prefix keyword to the
parser.
</content>
</entry>
<entry>
<title>lib/parse-sexp: apply macros</title>
<updated>2021-09-05T00:07:19Z</updated>
<author>
<name>David Bremner</name>
<email>david@tethera.net</email>
</author>
<published>2021-08-24T15:17:41Z</published>
<link rel='alternate' type='text/html' href='https://git.notmuchmail.org/git/notmuch/commit/?id=551254eb76c9bb558078f04f21df1f6089cb03d6'/>
<id>urn:sha1:551254eb76c9bb558078f04f21df1f6089cb03d6</id>
<content type='text'>
Macros implement lazy evaluation and lexical scope.  The former is
needed to make certain natural constructs work sensibly (e.g. (tag
,param)) but the latter is mainly future-proofing in case the DSL is
is extended to allow local bindings.

For technical background, see chapters 6 and 17 of [1] (or some other
intermediate programming languages textbook).

[1] http://cs.brown.edu/courses/cs173/2012/book/
</content>
</entry>
</feed>
