Allow passing False instead of None for optional flag-boolean parameters

Previously, passing anything that was not None would result in the boolean
flag being set to True, even when passing False. This will make it simpler
to deal with optional flag-boolean values in the raw API.
This commit is contained in:
Dan 2020-12-25 12:08:48 +01:00
parent 4698f716ad
commit 3d971fb577

View File

@ -399,14 +399,18 @@ def start(format: bool = False):
write_types = read_types = "" if c.has_flags else "# No flags\n " write_types = read_types = "" if c.has_flags else "# No flags\n "
for arg_name, arg_type in c.args: for arg_name, arg_type in c.args:
flag = FLAGS_RE_2.findall(arg_type) flag = FLAGS_RE_2.match(arg_type)
if arg_name == "flags" and arg_type == "#": if arg_name == "flags" and arg_type == "#":
write_flags = [] write_flags = []
for i in c.args: for i in c.args:
flag = FLAGS_RE.match(i[1]) flag = FLAGS_RE_2.match(i[1])
if flag: if flag:
if flag.group(2) == "true":
write_flags.append(f"flags |= (1 << {flag.group(1)}) if self.{i[0]} else 0")
else:
write_flags.append(f"flags |= (1 << {flag.group(1)}) if self.{i[0]} is not None else 0") write_flags.append(f"flags |= (1 << {flag.group(1)}) if self.{i[0]} is not None else 0")
write_flags = "\n ".join([ write_flags = "\n ".join([
@ -421,7 +425,7 @@ def start(format: bool = False):
continue continue
if flag: if flag:
index, flag_type = flag[0] index, flag_type = flag.groups()
if flag_type == "true": if flag_type == "true":
read_types += "\n " read_types += "\n "