38 lines
996 B
Python
38 lines
996 B
Python
import phone_iso3166.e164
|
|
import io
|
|
import os
|
|
import sys
|
|
|
|
def generate(filename):
|
|
def transverse(node, path):
|
|
if isinstance(node, dict):
|
|
for k, v in node.items():
|
|
for i in transverse(v, path + str(k)):
|
|
yield i
|
|
else:
|
|
yield path, node
|
|
|
|
head = """// Code generated by gen/gen.py DO NOT EDIT.
|
|
// https://blog.golang.org/generate
|
|
package $GOPACKAGE
|
|
|
|
import iradix "github.com/hashicorp/go-immutable-radix"
|
|
|
|
func getE164() *iradix.Tree {
|
|
r := iradix.New()
|
|
t := r.Txn()
|
|
"""
|
|
head = head.replace(' ', "\t")
|
|
head = head.replace('$GOPACKAGE', os.environ['GOPACKAGE'])
|
|
|
|
with open(filename, 'w') as out:
|
|
out.write(head)
|
|
for prefix, country in transverse(phone_iso3166.e164.mapping, ''):
|
|
out.write(f"\tt.Insert([]byte(\"{prefix}\"), \"{country}\")\n")
|
|
out.write("\treturn t.Commit()\n")
|
|
out.write("}\n")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
generate(sys.argv[1])
|