Holger Hans Peter Freyther | 9d09a8f | 2009-08-19 06:31:59 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | |
| 3 | # |
| 4 | # Convert ETSI documents to an enum |
| 5 | # |
| 6 | |
| 7 | import re, sys |
| 8 | |
| 9 | def convert(string): |
| 10 | string = string.strip().replace(" ", "").rjust(8, "0") |
| 11 | var = 0 |
| 12 | offset = 7 |
| 13 | for char in string: |
| 14 | assert offset >= 0 |
| 15 | var = var | (int(char) << offset) |
| 16 | offset = offset - 1 |
| 17 | |
| 18 | return var |
| 19 | |
| 20 | def string(name): |
| 21 | name = name.replace(" ", "_") |
| 22 | name = name.replace('"', "") |
| 23 | name = name.replace('/', '_') |
| 24 | name = name.replace('(', '_') |
| 25 | name = name.replace(')', '_') |
| 26 | return "%s_%s" % (sys.argv[2], name.upper()) |
| 27 | |
| 28 | file = open(sys.argv[1]) |
| 29 | |
| 30 | |
| 31 | for line in file: |
| 32 | m = re.match(r"[ \t]*(?P<value>[01 ]+)[ ]+(?P<name>[a-zA-Z /0-9()]+)", line[:-1]) |
| 33 | |
| 34 | if m: |
| 35 | print "\t%s\t\t= %d," % (string(m.groupdict()["name"]), convert(m.groupdict()["value"])) |
| 36 | else: |
| 37 | print line[:-1] |