blob: 1d8ff70d8b97a8b7fa8852a49b7b470698ada364 (
plain)
| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 | #!/usr/bin/python3
import fileinput
import os
import sys
def escape_quotes(string):
  return string.replace("\"", '\\"')
def escape_newlines(string):
  return string.replace("\n", "\\n")
def quote(string):
  return "\"" + string + "\""
def main():
  if len(sys.argv) < 3:
    print("Usage: {} [text files...] [C files...]".format(sys.argv[0]))
    return 1
  files = sys.argv[1:]
  assert(len(files) % 2 == 0)
  N = int(len(files) / 2)
  text_files = files[:N]
  c_files = files[N:]
  for i in range(len(text_files)):
    text_file = text_files[i]
    c_file = c_files[i]
    h_file = c_file.replace(".c", ".h")
    variable_name = os.path.basename(text_file).replace(".", "_")
    os.makedirs(os.path.join(".", os.path.dirname(c_file)), exist_ok=True)
    # Create the C file.
    with open(c_file, 'w') as out_file:
      out_file.write("const char {}[] =\n".format(variable_name))
      pad = "  "
      with open(text_file, 'r') as in_file:
        for line in in_file.readlines():
          line = escape_quotes(line)
          line = escape_newlines(line)
          line = quote(line)
          line = pad + line + "\n"
          out_file.write(line)
        out_file.write(pad + "\"\";")
    # Create the header file.
    with open(h_file, 'w') as out_file:
      out_file.write("#pragma once\n")
      out_file.write("\n")
      out_file.write("extern const char {}[];".format(variable_name))
  return 0
if __name__ == '__main__':
  sys.exit(main())
 |