<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/test/libapt/pattern_test.cc, branch 2.2.0</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.2.0</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.2.0'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2020-12-07T14:11:20Z</updated>
<entry>
<title>patterns: Terminate short pattern by ~ and !</title>
<updated>2020-12-07T14:11:20Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-12-07T14:04:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f9a621d335622a8909177f6d347e32e3876fde3f'/>
<id>urn:sha1:f9a621d335622a8909177f6d347e32e3876fde3f</id>
<content type='text'>
This allows patterns like ~nalpha~nbeta and ~nalpha!~nbeta to
work like they do in APT.

Also add a comment to remind readers that everything in START
should be in short too.

Cc: stable &gt;= 2.0
</content>
</entry>
<entry>
<title>patterns: test for empty terms, reject them</title>
<updated>2020-02-03T11:55:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-02-03T11:15:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=404771d0ec11f26a0b631018719e2918a049455b'/>
<id>urn:sha1:404771d0ec11f26a0b631018719e2918a049455b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Correctly stop parsing short form arguments on space, also on ?</title>
<updated>2020-02-03T11:55:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-02-01T16:33:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=11a40ab11f72f85e905bdba4d3274870fbcaeaee'/>
<id>urn:sha1:11a40ab11f72f85e905bdba4d3274870fbcaeaee</id>
<content type='text'>
we have to stop parsing on space so that things like ~ramd64 | ~rall
work correctly.

aptitude does not stop parsing on ?, but we'll do as it gets very
confusing otherwise if you write stuff like ~ramd64?name(foo), and
it resolves to ?and(?architecture(amd64?name), (foo))...
</content>
</entry>
<entry>
<title>patterns: Implement parsing of (...) groups</title>
<updated>2020-02-03T11:55:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-02-01T16:21:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8886ea163032fb8bf64211a94c5dc252a4572a9c'/>
<id>urn:sha1:8886ea163032fb8bf64211a94c5dc252a4572a9c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement | as or</title>
<updated>2020-02-03T11:55:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-02-01T16:12:35Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=d6f38436a229dc4421e77b58bf42d07bdb28b808'/>
<id>urn:sha1:d6f38436a229dc4421e77b58bf42d07bdb28b808</id>
<content type='text'>
</content>
</entry>
<entry>
<title>patterns: Parse sequence of patterns as ?and</title>
<updated>2020-02-03T11:55:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-01-28T21:38:46Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=250119362e44599aad7e75462fa4298ad1ab1ad9'/>
<id>urn:sha1:250119362e44599aad7e75462fa4298ad1ab1ad9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>patterns: Allow bare words only in arguments</title>
<updated>2020-02-03T11:55:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-01-28T22:06:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ebe5f39bfbb64921d5d31e0a6e49287356a5e6e2'/>
<id>urn:sha1:ebe5f39bfbb64921d5d31e0a6e49287356a5e6e2</id>
<content type='text'>
This changes the syntax from approximately

	expr = unary
	unary = '!'? primary
	primary = pattern | short-pattern | word | quoted-word
	pattern = '?' name [ '(' expr [',' expr]* ')' ]
	short-pattern = ~ name | ~name expr
to:

        primary = pattern | short-pattern
        argument = word | quoted-word | expr
        pattern = '?' name [ '(' argument [',' argument]* ')' ]
        short-pattern = ~ name | ~name argument
</content>
</entry>
<entry>
<title>patterns: Implement unary !</title>
<updated>2020-02-03T11:55:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-01-28T20:46:10Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8d4967d3a187dd66cf14b070a9db63f8ea21b21f'/>
<id>urn:sha1:8d4967d3a187dd66cf14b070a9db63f8ea21b21f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement short patterns (patterns starting with ~)</title>
<updated>2020-02-03T11:55:54Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2020-01-20T13:14:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=fd43b1694f1382a3a47f5dc546ebe3d39fcd6e7d'/>
<id>urn:sha1:fd43b1694f1382a3a47f5dc546ebe3d39fcd6e7d</id>
<content type='text'>
Also make pattern detector in cacheset and private's list accept
such patterns. We probably should just try to parse and see if it
is a (start of a) pattern.
</content>
</entry>
<entry>
<title>Add initial support for parsing patterns into parse trees</title>
<updated>2019-08-15T11:50:03Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2019-08-14T12:38:26Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=690ff4c3e44e7063ebde2557b7c0087ab720b894'/>
<id>urn:sha1:690ff4c3e44e7063ebde2557b7c0087ab720b894</id>
<content type='text'>
Introduce a parser for patterns that generates a parse tree. The
language understood by the parser is:

pattern = '?'TERM
        | '?'TERM '(' pattern (',' pattern)* ','? ')'
        | WORD
        | QUOTED-WORD
TERM    = [0-9a-zA-Z-]
WORD    = [0-9a-ZA-Z-.*^$\[\]_\\]
QUOTED_WORD = "..."		# you know what I mean

This language is context free, which is a massive simplification
from aptitude's language, where ?foo(bar) could have two different
meanings depending on whether ?foo takes an argument or not.
</content>
</entry>
</feed>
