blob: 02532cc7085ebe370ff482d2c56d1d19a3eb5421 (
plain) (
tree)
|
|
import abdl
def test_basic_example():
m = next(abdl.match("->X:?$dict->Y", {"foo": 1, "bar": {"baz": 2}}, {'dict': dict}))
assert m['X'][0] == 'bar'
assert m['Y'][0] == 'baz'
assert m['Y'][1] == 2
def test_basic_2():
m = next(abdl.match("->'projects':?$d->P/[0-9a-fA-F]{40}|[0-9a-fA-F]{64}/?:?$d->U:?$d->B", {"projects": {"385e734a52e13949a7a5c71827f6de920dbfea43": {"https://soniex2.autistic.space/git-repos/ganarchy.git": {"HEAD": {"active": True}}}}}, {'d': dict}))
assert m['P'][0] == "385e734a52e13949a7a5c71827f6de920dbfea43"
assert m['U'][0] == "https://soniex2.autistic.space/git-repos/ganarchy.git"
assert m['B'][0] == "HEAD"
assert m['B'][1] == {"active": True}
def test_spaces():
pat = abdl.compile("""-> 'projects'?
-> commit /[0-9a-fA-F]{40}|[0-9a-fA-F]{64}/? :?$dict
-> url :?$dict
-> branch :?$dict""", {'dict': dict})
data = {"projects": {"385e734a52e13949a7a5c71827f6de920dbfea43": {"https://soniex2.autistic.space/git-repos/ganarchy.git": {"HEAD": {"active": True}}}}}
m = next(pat.match(data))
assert m['commit'][0] == "385e734a52e13949a7a5c71827f6de920dbfea43"
assert m['url'][0] == "https://soniex2.autistic.space/git-repos/ganarchy.git"
assert m['branch'][0] == "HEAD"
assert m['branch'][1] == {"active": True}
|