go-phone-iso3166/gen/e164.py

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])