diff --git a/python/uklatn.py b/python/uklatn.py index 05292d5..e9a170e 100644 --- a/python/uklatn.py +++ b/python/uklatn.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # Generated by gentables.py, do not edit. @@ -215,26 +216,39 @@ def decode(text, table=None): def main(args): - text = ' '.join(args.text) table = args.table if table is None: table = 'DSTU_9112_A' + names = {'DSTU_9112_A': 1, 'DSTU_9112_B': 2, 'KMU_55': 3} table = names[table] + tr = encode if args.cyrillic and not args.latin: tr = decode - res = tr(text, table) - print(res) + + if args.file: + text = args.file.read() + res = tr(text, table) + print(res, end='') + + if args.text: + text = ' '.join(args.text) + res = tr(text, table) + print(res) if __name__ == '__main__': - import argparse + import argparse, sys parser = argparse.ArgumentParser() - parser.add_argument('text', nargs='+', help='text to transliterate') + parser.add_argument('text', nargs='*', help='text to transliterate') + parser.add_argument('-f', '--file', type=argparse.FileType('r'), help='read text from file') parser.add_argument('-t', '--table', choices=['DSTU_9112_A', 'DSTU_9112_B', 'KMU_55'], help='transliteration system (default: DSTU_9112_A)') parser.add_argument('-l', '--latin', action='store_true', help='convert to Latin script (default)') parser.add_argument('-c', '--cyrillic', action='store_true', help='convert to Cyrillic script') args = parser.parse_args() + if (not args.text) and (not args.file): + parser.error(f'the following arguments are required: text or file') + main(args) diff --git a/tools/Makefile b/tools/Makefile index 480ffe3..f1d9227 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -20,7 +20,7 @@ js: @$(PYTHON) gentests.py js >> ../js/testuklatn.js py: - @echo "# Generated by gentables.py, do not edit.\n" > ../python/uklatn.py + @echo "#!/usr/bin/env python\n# Generated by gentables.py, do not edit.\n" > ../python/uklatn.py @$(PYTHON) gentables.py py >> ../python/uklatn.py @echo "# Generated by gentests.py, do not edit.\n" > ../python/tests/uklatn_tests.py @$(PYTHON) gentests.py py >> ../python/tests/uklatn_tests.py diff --git a/tools/gen/gen_py.py b/tools/gen/gen_py.py index ad1533d..609d97f 100755 --- a/tools/gen/gen_py.py +++ b/tools/gen/gen_py.py @@ -243,28 +243,41 @@ def decode(text, table=None): def main(args): - text = ' '.join(args.text) table = args.table if table is None: table = {default_table!r} + names = {table_names!r} table = names[table] + tr = encode if args.cyrillic and not args.latin: tr = decode - res = tr(text, table) - print(res) + + if args.file: + text = args.file.read() + res = tr(text, table) + print(res, end='') + + if args.text: + text = ' '.join(args.text) + res = tr(text, table) + print(res) if __name__ == '__main__': - import argparse + import argparse, sys parser = argparse.ArgumentParser() - parser.add_argument('text', nargs='+', help='text to transliterate') + parser.add_argument('text', nargs='*', help='text to transliterate') + parser.add_argument('-f', '--file', type=argparse.FileType('r'), help='read text from file') parser.add_argument('-t', '--table', choices={table_list!r}, help='transliteration system (default: {default_table})') parser.add_argument('-l', '--latin', action='store_true', help='convert to Latin script (default)') parser.add_argument('-c', '--cyrillic', action='store_true', help='convert to Cyrillic script') args = parser.parse_args() + if (not args.text) and (not args.file): + parser.error(f'the following arguments are required: text or file') + main(args) ''' text = template.format(**context)