From a753a66c8d6e411478180ae31461a11a70a531c7 Mon Sep 17 00:00:00 2001 From: Evgenii Alekseev Date: Thu, 12 Sep 2024 03:26:38 +0300 Subject: [PATCH] try to improve parser --- src/ahriman/models/pkgbuild.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ahriman/models/pkgbuild.py b/src/ahriman/models/pkgbuild.py index 9fffbce1..713a828a 100644 --- a/src/ahriman/models/pkgbuild.py +++ b/src/ahriman/models/pkgbuild.py @@ -39,11 +39,11 @@ class PkgbuildToken(StrEnum): well-known tokens dictionary Attributes: - ArrayStarts(PkgbuildToken): (class attribute) array starts token ArrayEnds(PkgbuildToken): (class attribute) array ends token + ArrayStarts(PkgbuildToken): (class attribute) array starts token FunctionDeclaration(PkgbuildToken): (class attribute) function declaration token - FunctionStarts(PkgbuildToken): (class attribute) function starts token FunctionEnds(PkgbuildToken): (class attribute) function ends token + FunctionStarts(PkgbuildToken): (class attribute) function starts token """ ArrayStarts = "(" @@ -113,6 +113,10 @@ class Pkgbuild(Mapping[str, str | list[str]]): fields = {} parser = shlex.shlex(stream, posix=True, punctuation_chars=True) + # ignore substitution and extend bash symbols + parser.wordchars += "${}#:+" + # in case of default behaviour, it will ignore, for example, segment part of url outside of quotes + parser.commenters = "" while token := parser.get_token(): try: key, value = cls._parse_token(token, parser)