summaryrefslogtreecommitdiff
path: root/pywal/export.py
diff options
context:
space:
mode:
Diffstat (limited to 'pywal/export.py')
-rw-r--r--pywal/export.py59
1 files changed, 32 insertions, 27 deletions
diff --git a/pywal/export.py b/pywal/export.py
index b175c11..ae619cd 100644
--- a/pywal/export.py
+++ b/pywal/export.py
@@ -13,38 +13,43 @@ def template(colors, input_file, output_file=None):
"""Read template file, substitute markers and
save the file elsewhere."""
template_data = util.read_file_raw(input_file)
- matches = re.finditer(r"(?<=(?<!\{))(\{([^{}]+)\})(?=(?!\}))", "".join(template_data), re.MULTILINE)
- print(colors)
- for match in matches:
- # Check that this color doesn't already exist
- match_str = match.group(2)
- color, _, funcs = match_str.partition(".")
- #if len(funcs) != 0:
- #print(funcs)
- #print(colors[color].hex_color,input_file)
-
- '''if match_str not in colors:
- # Extract original color and functions
- attr, _, funcs = match_str.partition(".")
- original_color = colors[attr]
- funcs = funcs.split(".")
- # Apply every function to the original color
- for func in funcs:
- # Check if this sub-color has already been generated
- if not hasattr(original_color, func):
- # Generate new color using function from util.py
- func, arg = func.strip(")").split("(")
- arg = arg.split(",")
- new_color = util.Color(
- getattr(util, func)(original_color.hex_color, *arg))
- setattr(original_color, func, new_color)
- original_color = getattr(original_color, func)'''
+ for i in range(len(template_data)):
+ line = template_data[i]
+ matches = re.finditer(r"(?<=(?<!\{))(\{([^{}]+)\})(?=(?!\}))", line)
+ for match in matches:
+ # Check that this color doesn't already exist
+ color, _, funcs = match.group(2).partition(".")
+ if len(funcs) != 0:
+ to_replace = color
+ new_color = None
+ for func in funcs.split(")"):
+ if len(func) == 0:
+ continue
+ func_split = func.split("(")
+ if len(func_split) > 1:
+ args = func_split[1].split(",")
+ else:
+ args = []
+ name = func_split[0]
+ if name[0] == '.':
+ name = name[1:]
+ x = getattr(colors[color], name)
+ if callable(x):
+ new_color = x(*args)
+ if func[0] != '.':
+ to_replace += "."
+ to_replace += func + ")"
+ else:
+ pass
+ if not new_color is None:
+ cname = "color" + new_color.strip
+ template_data[i] = line.replace(to_replace, cname)
+ colors[cname] = new_color
try:
template_data = "".join(template_data).format(**colors)
except ValueError:
logging.error("Syntax error in template file '%s'.", input_file)
return
-
util.save_file(template_data, output_file)