30def ToGNString(value, allow_dicts=True):
31 """Returns a stringified GN equivalent of a Python value.
33 allow_dicts indicates if this function will allow converting dictionaries
34 to GN scopes. This is only possible at the top level, you can't nest a
35 GN scope in a list, so this should be set to False for recursive calls."""
36 if isinstance(value, str)
or isinstance(value, unicode):
37 if value.find(
'\n') >= 0:
38 raise GNException(
"Trying to print a string with a newline in it.")
41 if isinstance(value, list):
42 return '[ %s ]' %
', '.join(ToGNString(v,
False)
for v
in value)
44 if isinstance(value, dict):
46 raise GNException(
"Attempting to recursively print a dictionary.")
49 if not isinstance(key, str):
50 raise GNException(
"Dictionary key is not a string.")
51 result +=
"%s = %s\n" % (key, ToGNString(value[key],
False))
54 if isinstance(value, int):
57 raise GNException(
"Unsupported type %s (value %s) when printing to GN." %