Merge pull request #485 from loiccoyle/master

fix template issue
This commit is contained in:
dylan 2020-05-04 21:40:17 +03:00 committed by GitHub
commit a2ddff38fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -12,6 +12,7 @@ from .settings import CACHE_DIR, CONF_DIR, MODULE_DIR
def template(colors, input_file, output_file=None): def template(colors, input_file, output_file=None):
"""Read template file, substitute markers and """Read template file, substitute markers and
save the file elsewhere.""" save the file elsewhere."""
# pylint: disable-msg=too-many-locals
template_data = util.read_file_raw(input_file) template_data = util.read_file_raw(input_file)
for i, l in enumerate(template_data): for i, l in enumerate(template_data):
for match in re.finditer(r"(?<=(?<!\{))(\{([^{}]+)\})(?=(?!\}))", l): for match in re.finditer(r"(?<=(?<!\{))(\{([^{}]+)\})(?=(?!\}))", l):
@ -25,7 +26,7 @@ def template(colors, input_file, output_file=None):
# Color to be modified copied into new one # Color to be modified copied into new one
new_color = util.Color(colors[cname].hex_color) new_color = util.Color(colors[cname].hex_color)
# Execute each function to be done # Execute each function to be done
for func in filter(None, funcs.split(")")): for func in filter(None, re.split(r"\)|\.", funcs)):
# Get function name and arguments # Get function name and arguments
func = func.split("(") func = func.split("(")
fname = func[0] fname = func[0]
@ -47,11 +48,19 @@ def template(colors, input_file, output_file=None):
if func[0] != '.': if func[0] != '.':
replace_str += "." replace_str += "."
replace_str += "(".join(func) + ")" replace_str += "(".join(func) + ")"
else:
# if it is an attribute i.e. rgb
replace_str += '.' + fname
new_color = function
if isinstance(new_color, util.Color):
new_color = new_color.strip
# If the color was changed, replace with a unique identifier. # If the color was changed, replace with a unique identifier.
if new_color is not colors[cname]: if new_color is not colors[cname]:
template_data[i] = l.replace( new_color_clean = new_color.replace('[', '_').replace(']', '_')
replace_str, "color" + new_color.strip) template_data[i] = l.replace(replace_str,
colors["color" + new_color.strip] = new_color "color" + new_color_clean)
colors["color" + new_color_clean] = new_color
try: try:
template_data = "".join(template_data).format(**colors) template_data = "".join(template_data).format(**colors)
except ValueError: except ValueError: