| 5 | |
| 6 | |
| 7 | def jsContexter(script): |
| 8 | broken = script.split(xsschecker) |
| 9 | pre = broken[0] |
| 10 | # remove everything that is between {..}, "..." or '...' |
| 11 | pre = re.sub(r'(?s)\{.*?\}|\(.*?\)|".*?"|\'.*?\'', '', pre) |
| 12 | breaker = '' |
| 13 | num = 0 |
| 14 | for char in pre: # iterate over the remaining characters |
| 15 | if char == '{': |
| 16 | breaker += '}' |
| 17 | elif char == '(': |
| 18 | breaker += ';)' # yes, it should be ); but we will invert the whole thing later |
| 19 | elif char == '[': |
| 20 | breaker += ']' |
| 21 | elif char == '/': |
| 22 | try: |
| 23 | if pre[num + 1] == '*': |
| 24 | breaker += '/*' |
| 25 | except IndexError: |
| 26 | pass |
| 27 | elif char == '}': # we encountered a } so we will strip off "our }" because this one does the job |
| 28 | breaker = stripper(breaker, '}') |
| 29 | elif char == ')': # we encountered a ) so we will strip off "our }" because this one does the job |
| 30 | breaker = stripper(breaker, ')') |
| 31 | elif breaker == ']': # we encountered a ] so we will strip off "our }" because this one does the job |
| 32 | breaker = stripper(breaker, ']') |
| 33 | num += 1 |
| 34 | return breaker[::-1] # invert the breaker string |