diff options
author | MITSUNARI Shigeo <herumi@nifty.com> | 2017-10-01 13:47:13 +0800 |
---|---|---|
committer | MITSUNARI Shigeo <herumi@nifty.com> | 2017-10-01 13:47:13 +0800 |
commit | f0409370691edfcc8460105b5ba02bab97b0f160 (patch) | |
tree | ee2392f0685422fbeb07d19647fe6b444f4662ac | |
parent | caf9b91ae5925162c9ac44498b67a276d02e749f (diff) | |
download | dexon-mcl-f0409370691edfcc8460105b5ba02bab97b0f160.tar.gz dexon-mcl-f0409370691edfcc8460105b5ba02bab97b0f160.tar.zst dexon-mcl-f0409370691edfcc8460105b5ba02bab97b0f160.zip |
[js] export-functions.py supports -re option
-rw-r--r-- | ffi/js/export-functions.py | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/ffi/js/export-functions.py b/ffi/js/export-functions.py index a099546..ebaea4b 100644 --- a/ffi/js/export-functions.py +++ b/ffi/js/export-functions.py @@ -1,9 +1,11 @@ -import sys, re +import sys, re, argparse #RE_PROTOTYPE = re.compile(r'MCLBN_DLL_API\s\w\s\w\([^)]*\);') RE_PROTOTYPE = re.compile(r'\w*\s(\w*)\s(\w*)\(([^)]*)\);') -RE_SPECIAL_FUNCTION_NAME = re.compile(r'(mclBn_init|setStr|getStr|[sS]erialize|setLittleEndian|setHashOf|hashAndMapTo|DecStr|HexStr|HashTo|blsSign|blsVerify|GetCurveOrder|GetFieldOrder|KeyShare|KeyRecover|blsSignatureRecover|blsInit)') -def export_functions(modName, fileNames): +def export_functions(modName, fileNames, reToAddUnderscore): + if not reToAddUnderscore: + reToAddUnderscore = r'(mclBn_init|setStr|getStr|[sS]erialize|setLittleEndian|setHashOf|hashAndMapTo|DecStr|HexStr|HashTo|blsSign|blsVerify|GetCurveOrder|GetFieldOrder|KeyShare|KeyRecover|blsSignatureRecover|blsInit)' + reSpecialFunctionName = re.compile(reToAddUnderscore) if modName: print 'function define_exported_' + modName + '(mod) {' comma = '' @@ -21,7 +23,7 @@ def export_functions(modName, fileNames): paramType = '[]' else: paramType = '[' + ("'number', " * len(arg.split(','))) + ']' - if RE_SPECIAL_FUNCTION_NAME.search(name): + if reSpecialFunctionName.search(name): exportName = '_' + name # to wrap function else: exportName = name @@ -34,16 +36,13 @@ def export_functions(modName, fileNames): print '}' def main(): - args = len(sys.argv) - modName = '' - if args <= 1: - print 'export_functions [-js <modName>] header+' - sys.exit(1) - pos = 1 - if args >= 3 and sys.argv[1] == '-js': - modName = sys.argv[2] - pos = 3 - export_functions(modName, sys.argv[pos:]) + p = argparse.ArgumentParser('export_functions') + p.add_argument('header', type=str, nargs='+', help='headers') + p.add_argument('-js', type=str, nargs='?', help='module name') + p.add_argument('-re', type=str, nargs='?', help='regular expression to add underscore to function name') + args = p.parse_args() + + export_functions(args.js, args.header, args.re) if __name__ == '__main__': main() |