diff options
| author | Loic Guegan <manzerbredes@mailbox.org> | 2019-10-08 15:27:16 -0400 |
|---|---|---|
| committer | Loic Guegan <manzerbredes@mailbox.org> | 2019-10-08 15:27:16 -0400 |
| commit | 5dc172040ffb50ee02a4fbf599353420d50714f9 (patch) | |
| tree | c7fa0b6c23b99025b3af701aac5269cfc1d0d5de /src | |
| parent | 58a2941879e287cd38927f2f6a20e22dd7f670f5 (diff) | |
Handle variables while extracting theme
Diffstat (limited to 'src')
| -rwxr-xr-x | src/config.py | 4 | ||||
| -rw-r--r-- | src/theme.py | 23 |
2 files changed, 21 insertions, 6 deletions
diff --git a/src/config.py b/src/config.py index 80e264f..b59f79d 100755 --- a/src/config.py +++ b/src/config.py @@ -83,7 +83,9 @@ def extract_theme(config_file): is_theme_line=True if contains(".*colors",line): in_colors=True - if is_theme_line or in_colors: + if contains("(\s)*set",line): # If var definition + build.parse(line_orig) + elif is_theme_line or in_colors: build.parse(line_orig) # Seems to by strange to have comment here if contains(".*}",line) and in_colors: in_colors=False diff --git a/src/theme.py b/src/theme.py index fd1461a..f18df35 100644 --- a/src/theme.py +++ b/src/theme.py @@ -77,9 +77,18 @@ class ThemeBuilder: self.theme={"meta": {"description": "Generated From i3-colors"}, "window_colors":dict(), "bar_colors":dict()} + self.vars=list() + self.vars_values=dict() + def dump(self): print(yaml.dump(self.theme)) + def get(self,key): + if key in self.vars: + return(self.vars_values[key]) + else: + return(key) + def parse(self,line): if re.match("client.*",line): tokens=line.split() @@ -88,14 +97,14 @@ class ThemeBuilder: subkeys=["border","background","text","indicator","child_border"] self.theme["window_colors"][key]=dict() for token in tokens: - self.theme["window_colors"][key][subkeys[0]]=token + self.theme["window_colors"][key][subkeys[0]]=self.get(token) subkeys.pop(0) elif re.match(".*background.*",line): - self.theme["bar_colors"]["background"]=line.split()[1] + self.theme["bar_colors"]["background"]=self.get(line.split()[1]) elif re.match(".*statusline.*",line): - self.theme["bar_colors"]["statusline"]=line.split()[1] + self.theme["bar_colors"]["statusline"]=self.get(line.split()[1]) elif re.match(".*separator.*",line): - self.theme["bar_colors"]["separator"]=line.split()[1] + self.theme["bar_colors"]["separator"]=self.get(line.split()[1]) elif re.match(".*_workspace.*",line): tokens=line.split() key=tokens[0] @@ -103,7 +112,11 @@ class ThemeBuilder: subkeys=["border","background","text"] self.theme["bar_colors"][key]=dict() for token in tokens: - self.theme["bar_colors"][key][subkeys[0]]=token + self.theme["bar_colors"][key][subkeys[0]]=self.get(token) subkeys.pop(0) + elif re.match("(\s)*set",line): + key,name,value=line.split() + self.vars.append(name) + self.vars_values[name]=value |
