Initialize Tizen 2.3
[framework/web/webkit-efl.git] / TizenScripts / code-injecter.py
1 #! /usr/bin/python
2 # scripted by ryuan.choi
3 import sys
4 import os
5 import re
6
7 # gloaval variables.
8 fileMap = {}
9 macro = "TIZEN_PROFILE"
10 CONFIG_HEADER = "include \"config.h\""
11 HEADER = """
12 #include "WebCore/platform/efl/tizen/TizenProfiler.h"
13 """
14
15 # functions
16 def resetFunctions(srcStr):
17     srcStr = srcStr.replace(HEADER, "")
18     srcStr = srcStr.replace(macro, "")
19     return srcStr
20
21 def injectHeader(srcStr):
22     return srcStr.replace(CONFIG_HEADER, CONFIG_HEADER + HEADER)
23
24 def injectFunctions(srcStr, functions):
25     if "*" in functions:
26         return re.sub(r"(\w*\([\s\w,<>&\*]*\)[\s\w]*\n{)", r"\1" + macro, srcStr)
27     else:
28         functions = "|".join(str(i).strip() for i in functions)
29         return re.sub(r"((" + functions + ")\([\s\w,<>&\*]*\)[\s\w]*\n{)", r"\1" + macro, srcStr)
30
31 # main code
32 fin = open("TizenScripts/injecter/default.txt", "r")
33 lines = fin.readlines()
34 fin.close()
35 for line in lines:
36     if line.startswith("#") or len(line.strip()) == 0:
37         continue
38
39     items = line.strip().split(":")
40     if (len(items) == 1):
41         functionNames = set('*')
42     else:
43         functionNames = set(items[1].split(','))
44
45     fileName = items[0]
46     if fileName in fileMap:
47         fileMap[fileName] = fileMap[fileName] | functionNames
48     else:
49         fileMap[fileName] = functionNames
50
51 for fileName, functions in fileMap.iteritems():
52     fileName = fileName.split("Source/")[-1] #if Source path is given, remove it.
53
54     src = open("Source/" + fileName, "r")
55     srcStr = src.read()
56     src.close()
57
58     buffer = resetFunctions(srcStr)
59     if "reset" not in sys.argv:
60         buffer = injectHeader(buffer)
61         buffer = injectFunctions(buffer, functions)
62
63     dest = open("Source/" + fileName, "w")
64     dest.write(buffer)
65     dest.close()