diff options
Diffstat (limited to 'circuitpython/tools/file2h.py')
-rw-r--r-- | circuitpython/tools/file2h.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/circuitpython/tools/file2h.py b/circuitpython/tools/file2h.py new file mode 100644 index 0000000..df9cc02 --- /dev/null +++ b/circuitpython/tools/file2h.py @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: 2014 MicroPython & CircuitPython contributors (https://github.com/adafruit/circuitpython/graphs/contributors) +# +# SPDX-License-Identifier: MIT + +# Reads in a text file, and performs the necessary escapes so that it +# can be #included as a static string like: +# static const char string_from_textfile[] = +# #include "build/textfile.h" +# ; +# This script simply prints the escaped string straight to stdout + +from __future__ import print_function + +import sys + +# Can either be set explicitly, or left blank to auto-detect +# Except auto-detect doesn't work because the file has been passed +# through Python text processing, which makes all EOL a \n +line_end = "\\r\\n" + +if __name__ == "__main__": + filename = sys.argv[1] + for line in open(filename, "r").readlines(): + if not line_end: + for ending in ("\r\n", "\r", "\n"): + if line.endswith(ending): + line_end = ending.replace("\r", "\\r").replace("\n", "\\n") + break + if not line_end: + raise Exception("Couldn't auto-detect line-ending of %s" % filename) + line = line.rstrip("\r\n") + line = line.replace("\\", "\\\\") + line = line.replace('"', '\\"') + print('"%s%s"' % (line, line_end)) |