# HG changeset patch # User Kaito Tokumori # Date 1441095770 -32400 # Node ID d9f74f32513508a242bac3681c020186d4481ca0 # Parent 7af72e3e4b6276e53a9bfc220417cd22378a205c name base: fix meta_stub bug. diff -r 7af72e3e4b62 -r d9f74f325135 meta_connector/meta_connector_name.py --- a/meta_connector/meta_connector_name.py Mon Aug 10 21:45:18 2015 +0900 +++ b/meta_connector/meta_connector_name.py Tue Sep 01 17:22:50 2015 +0900 @@ -13,7 +13,7 @@ Parse meta connect syntax. Default output is stdout. sample) - goto meta_code1|code1(arg1, arg2, ...); + goto code1(arg1, arg2, ...); \t| \tV goto meta_code1(context, arg1, arg2, ..., Code1); @@ -35,7 +35,7 @@ comment_out = False target_cs = False caller_name = '' - isMeta = False + isMetaOrStub = False for i,l in enumerate(lines): regexed_l = re.search(r"[a-zA-Z0-9_]+ *\(",l) @@ -43,21 +43,32 @@ # get caller code segment name if re.search(r"^ *__code",l) is not None: caller_name = regexed_l.group(0).rstrip('(') - if re.search(r"^ *meta_*",caller_name) is not None: - isMeta = True + if re.search(r"^ *meta_*|stub$",caller_name) is not None: + isMetaOrStub = True else: - isMeta = False + isMetaOrStub = False file.write(l) - elif not isMeta and regexed_l is not None and re.search(r"^ *goto",l): + elif not isMetaOrStub and regexed_l is not None and re.search(r"^ *goto",l): callee_name = regexed_l.group(0).rstrip('(') - file.write("/*-- connected by script */\n") - file.write('// '+l) - file.write("goto {0:s}(context, {1:s}, {2:s});\n".format('meta_'+caller_name,\ + if meta_search(lines, callee_name): + file.write("/*-- connected by script */\n") + file.write('// '+l) + file.write("goto {0:s}(context, {1:s}, {2:s});\n".format('meta_'+caller_name,\ l.split('(')[1].rsplit(')')[0],\ callee_name.capitalize())) + else: + file.write(l) else: file.write(l) +# search meta code segment. +# Find it : __code meta_'name' +def meta_search(lines, name): + for l in lines: + if re.search(r"^ *__code +meta_{0:s}\(".format(name),l) is not None: + return True + return False + def main(): args = get_args() output = sys.stdout