aboutsummaryrefslogtreecommitdiff
path: root/src/data/embed.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/embed.py')
-rw-r--r--src/data/embed.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/data/embed.py b/src/data/embed.py
new file mode 100644
index 0000000..7eb825d
--- /dev/null
+++ b/src/data/embed.py
@@ -0,0 +1,56 @@
+import os, sys, random, re
+
+def fmt(fmt, dic):
+ for k in dic:
+ fmt = fmt.replace("{%s}" % k, str(dic[k]))
+ return fmt
+
+
+def makeArray(data):
+ i = [0]
+ def fn(x):
+ x = str(ord(x)) + ","
+ if i[0] + len(x) > 78:
+ i[0] = len(x)
+ x = '\n' + x
+ else:
+ i[0] += len(x)
+ return x
+ return '{' + "".join(map(fn, data)).rstrip(",") + '}'
+
+
+def safename(filename):
+ return re.sub("[^a-z0-9]", "_", os.path.basename(filename).lower())
+
+
+def process(filenames):
+ if type(filenames) is str:
+ filenames = [filenames]
+
+ strings = []
+
+ for filename in filenames:
+ data = open(filename, "rb").read()
+ strings.append(
+ fmt("/* {filename} */\n" +\
+ "static const char {name}[] = \n{array};",
+ {
+ "filename" : os.path.basename(filename),
+ "name" : safename(filename),
+ "array" : makeArray(data),
+ }))
+
+ return "/* Automatically generated; do not edit */\n\n" +\
+ "\n\n".join(strings)
+
+
+def main():
+ if len(sys.argv) < 2:
+ print "usage: embed FILENAMES"
+ sys.exit(1)
+
+ print process(sys.argv[1:])
+
+
+if __name__ == "__main__":
+ main() \ No newline at end of file