66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
|
|
# Original by Robert Sanderson, modifications by Aaron Lav
|
|
|
|
import sys
|
|
from PyZ3950 import asn1
|
|
|
|
inh = file("oids.txt")
|
|
outh = file("oids.py", "w")
|
|
outh.write('from PyZ3950 import asn1\n')
|
|
# from ... to get same globals as others importing asn1
|
|
outh.write('oids = {}\n')
|
|
|
|
oids = {}
|
|
vars = {}
|
|
|
|
for line in inh:
|
|
if (not line.isspace()):
|
|
flds = line.split(None)
|
|
name = flds[0]
|
|
number = flds[1]
|
|
if (len(flds) > 2):
|
|
aliasList = flds[2:]
|
|
else:
|
|
aliasList = []
|
|
|
|
if (number[0] == "."):
|
|
|
|
# add to previous
|
|
splitname = name.split("_")
|
|
cur = oids
|
|
for n in splitname[:-1]:
|
|
cur = cur[n]
|
|
|
|
val = cur['val'] + [int(number[1:])]
|
|
oid = asn1.OidVal(val)
|
|
|
|
cur [splitname[-1]] = {'oid': oid, 'val' : val}
|
|
|
|
vars[name] = val
|
|
tree = "oids['%s']" % "']['".join (splitname)
|
|
outh.write(tree + " = " + "{'oid': asn1.OidVal(" + str(val) + "), 'val': " + str(val) + "}\n")
|
|
|
|
else:
|
|
# base
|
|
splitnums = number.split('.')
|
|
numlist = map(int, splitnums)
|
|
|
|
oids[name] = {}
|
|
oids[name]['oid'] = asn1.OidVal(numlist)
|
|
oids[name]['val'] = numlist
|
|
vars[name] = numlist
|
|
|
|
outh.write("oids['" + name + "'] = {'oid': asn1.OidVal(" + str(numlist) + "), 'val': " + str(numlist) + "}\n")
|
|
|
|
|
|
inh.close()
|
|
|
|
items = vars.items()
|
|
items.sort()
|
|
for k,v in items:
|
|
outh.write(k + " = " + str(v) + "\n")
|
|
outh.write(k + "_ov = asn1.OidVal(" + str (v) + ")\n")
|
|
|
|
outh.close()
|