read-me/resume-origin/scripts/fs_sty.py

62 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python
import os
import re
from sys import argv
scripts, css = argv
# filter icon name, ignore alias
def fil_icname(line):
if re.search('^\.fa-.*:before {$', line):
ic_name = re.split("[.:]", line)[1][3:]
return ic_name
def fil_iccode(line):
if re.search('^ content: .*;$', line):
ic_code = re.split("[\"]", line)[1][1:].upper()
return ic_code
# turn icon name to Camel Case
# forked from https://github.com/schischi-a/fontawesome-latex
def camel_case(name):
ret = name.replace('-', ' ')
ret = ret.title()
ret = ret.replace(' ', '')
return ret
def get_icons(fs_css):
icons = []
with open(fs_css, 'r') as fs_fp:
for line in fs_fp:
icon_name = fil_icname(line)
if icon_name is not None:
line = next(fs_fp)
icon_code = fil_iccode(line)
if icon_code is not None:
tex_name = camel_case(icon_name)
icons.append((icon_name, icon_code, tex_name))
return icons
def output_sty(sty, icons):
with open(sty, 'a') as f:
for ic in icons:
prefix = "\expandafter\def\csname faicon@"
ic_name_h = prefix + ic[0] + "\endcsname"
ic_code_tex = "{\symbol{\"" + ic[1] + "}} \\def\\fa" + ic[2]
ic_name_tail = " {{\FA\csname faicon@" + ic[0] + "\endcsname}}\n"
f.write(ic_name_h.ljust(63) + ic_code_tex.ljust(42) + ic_name_tail)
if __name__ == "__main__":
print("output fontawesome.sty...")
icons = get_icons(css)
temp_dir = os.path.dirname(css)
sty = os.path.join(temp_dir, "fontawesome.sty")
output_sty(sty, icons)