aboutsummaryrefslogtreecommitdiff
path: root/tools/refactoring/stringmanipulation.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/refactoring/stringmanipulation.py')
-rw-r--r--tools/refactoring/stringmanipulation.py303
1 files changed, 0 insertions, 303 deletions
diff --git a/tools/refactoring/stringmanipulation.py b/tools/refactoring/stringmanipulation.py
deleted file mode 100644
index 0d9e0ff3a5..0000000000
--- a/tools/refactoring/stringmanipulation.py
+++ /dev/null
@@ -1,303 +0,0 @@
-import string
-
-# returns tuple, [success,updated_string] where the updated string has
-# has one less (the first) occurance of match string
-def removefirstoccurance( remove_string, match_string ):
- lowercase_string = remove_string.lower()
- lowercase_match_string = match_string.lower()
- lowest_index = lowercase_string.find(lowercase_match_string)
- if(lowest_index == -1):
- return [False,remove_string]
- past_match_index = lowest_index + len(lowercase_match_string)
- highest_index = len(remove_string)
- remove_string = remove_string[0:lowest_index] + remove_string[past_match_index: highest_index]
- return [True,remove_string]
-
-# returns a string with all occurances of match_string removed
-def removealloccurances( remove_string, match_string ):
- return_value = [True, remove_string]
- while(return_value[0]):
- return_value = removefirstoccurance(return_value[1],match_string)
- return return_value[1]
-
-# removes an occurance of match_string only if it's first in the string
-# returns tuple [succes, new_string]
-def removeprefix( remove_string, match_string ):
- lowercase_string = remove_string.lower()
- lowercase_match_string = match_string.lower()
- lowest_index = lowercase_string.find(lowercase_match_string)
- if(lowest_index == -1):
- return [False,remove_string]
- if(lowest_index != 0):
- return [False,remove_string]
- past_match_index = lowest_index + len(lowercase_match_string)
- highest_index = len(remove_string)
- remove_string = remove_string[0:lowest_index] + remove_string[past_match_index: highest_index]
-# print lowest_index
-# print past_match_index
- return [True,remove_string]
-
-# removes multiple occurances of match string as long as they are first in
-# the string
-def removeallprefix( remove_string, match_string ):
- return_value = [True, remove_string]
- while(return_value[0]):
- return_value = removeprefix(return_value[1],match_string)
- return return_value[1]
-
-# returns true if extensionstring is a correct extension
-def isextension( extensionstring ):
- if(len(extensionstring) < 2):
- return False
- if(extensionstring[0] != '.'):
- return False
- if(extensionstring[1:len(extensionstring)-1].find('.') != -1):
- return False
- return True
-
-# returns the index of start of the last occurance of match_string
-def findlastoccurance( original_string, match_string ):
- search_index = original_string.find(match_string)
- found_index = search_index
- last_index = len(original_string) - 1
- while((search_index != -1) and (search_index < last_index)):
- search_index = original_string[search_index+1:last_index].find(match_string)
- if(search_index != -1):
- found_index = search_index
- return found_index
-
-# changes extension from original_extension to new_extension
-def changeextension( original_string, original_extension, new_extension):
- if(not isextension(original_extension)):
- return original_string
- if(not isextension(new_extension)):
- return original_string
- index = findlastoccurance(original_string, original_extension)
- if(index == -1):
- return original_string
- return_value = original_string[0:index] + new_extension
- return return_value
-
-# wanted to do this with str.find however didnt seem to work so do it manually
-# returns the index of the first capital letter
-def findfirstcapitalletter( original_string ):
- for index in range(len(original_string)):
- if(original_string[index].lower() != original_string[index]):
- return index
- return -1
-
-
-# replaces capital letters with underscore and lower case letter (except very
-# first
-def lowercasewithunderscore( original_string ):
-# ignore the first letter since there should be no underscore in front of it
- if(len(original_string) < 2):
- return original_string
- return_value = original_string[1:len(original_string)]
- index = findfirstcapitalletter(return_value)
- while(index != -1):
- return_value = return_value[0:index] + \
- '_' + \
- return_value[index].lower() + \
- return_value[index+1:len(return_value)]
- index = findfirstcapitalletter(return_value)
- return_value = original_string[0].lower() + return_value
- return return_value
-
-# my table is a duplicate of strings
-def removeduplicates( my_table ):
- new_table = []
- for old_string1, new_string1 in my_table:
- found = 0
- for old_string2, new_string2 in new_table:
- if(old_string1 == old_string2):
- found += 1
- if(new_string1 == new_string2):
- if(new_string1 == ''):
- found += found
- else:
- found += 1
- if(found == 1):
- print 'missmatching set, terminating program'
- print old_string1
- print new_string1
- print old_string2
- print new_string2
- quit()
- if(found == 2):
- break
- if(found == 0):
- new_table.append([old_string1,new_string1])
- return new_table
-
-def removenochange( my_table ):
- new_table = []
- for old_string, new_string in my_table:
- if(old_string != new_string):
- new_table.append([old_string,new_string])
- return new_table
-
-# order table after size of the string (can be used to replace bigger strings
-# first which is useful since smaller strings can be inside the bigger string)
-# E.g. GIPS is a sub string of GIPSVE if we remove GIPS first GIPSVE will never
-# be removed. N is small so no need for fancy sort algorithm. Use selection sort
-def ordertablesizefirst( my_table ):
- for current_index in range(len(my_table)):
- biggest_string = 0
- biggest_string_index = -1
- for search_index in range(len(my_table)):
- if(search_index < current_index):
- continue
- length_of_string = len(my_table[search_index][0])
- if(length_of_string > biggest_string):
- biggest_string = length_of_string
- biggest_string_index = search_index
- if(biggest_string_index == -1):
- print 'sorting algorithm failed, program exit'
- quit()
- old_value = my_table[current_index]
- my_table[current_index] = my_table[biggest_string_index]
- my_table[biggest_string_index] = old_value
- return my_table
-
-# returns true if string 1 or 2 is a substring of the other, assuming neither
-# has whitespaces
-def issubstring( string1, string2 ):
- if(len(string1) == 0):
- return -1
- if(len(string2) == 0):
- return -1
- large_string = string1
- small_string = string2
- if(len(string1) < len(string2)):
- large_string = string2
- small_string = string1
-
- for index in range(len(large_string)):
- large_sub_string = large_string[index:index+len(small_string)].lower()
- if(large_sub_string ==\
- small_string.lower()):
- return index
- return -1
-
-#not_part_of_word_table = [' ','(',')','{','}',':','\t','*','&','/','[',']','.',',','\n']
-#def ispartofword( char ):
-# for item in not_part_of_word_table:
-# if(char == item):
-# return False
-# return True
-
-# must be numerical,_ or charachter
-def ispartofword( char ):
- if(char.isalpha()):
- return True
- if(char.isalnum()):
- return True
- if(char == '_'):
- return True
- return False
-
-# returns the index of the first letter in the word that the current_index
-# is pointing to and the size of the word
-def getword( line, current_index):
- if(current_index < 0):
- return []
- line = line.rstrip()
- if(len(line) <= current_index):
- return []
- if(line[current_index] == ' '):
- return []
- start_pos = current_index
- while start_pos >= 0:
- if(not ispartofword(line[start_pos])):
- start_pos += 1
- break
- start_pos -= 1
- if(start_pos == -1):
- start_pos = 0
- end_pos = current_index
- while end_pos < len(line):
- if(not ispartofword(line[end_pos])):
- break
- end_pos += 1
- return [start_pos,end_pos - start_pos]
-
-# my table is a tuple [string1,string2] complement_to_table is just a list
-# of strings to compare to string1
-def complement( my_table, complement_to_table ):
- new_table = []
- for index in range(len(my_table)):
- found = False;
- for compare_string in complement_to_table:
- if(my_table[index][0].lower() == compare_string.lower()):
- found = True
- if(not found):
- new_table.append(my_table[index])
- return new_table
-
-def removestringfromhead( line, remove_string):
- for index in range(len(line)):
- if(line[index:index+len(remove_string)] != remove_string):
- return line[index:index+len(line)]
- return ''
-
-def removeccomment( line ):
- comment_string = '//'
- for index in range(len(line)):
- if(line[index:index+len(comment_string)] == comment_string):
- return line[0:index]
- return line
-
-def whitespacestoonespace( line ):
- return ' '.join(line.split())
-
-def fixabbreviations( original_string ):
- previouswascapital = (original_string[0].upper() == original_string[0])
- new_string = ''
- for index in range(len(original_string)):
- if(index == 0):
- new_string += original_string[index]
- continue
- if(original_string[index] == '_'):
- new_string += original_string[index]
- previouswascapital = False
- continue
- if(original_string[index].isdigit()):
- new_string += original_string[index]
- previouswascapital = False
- continue
- currentiscapital = (original_string[index].upper() == original_string[index])
- letter_to_add = original_string[index]
- if(previouswascapital and currentiscapital):
- letter_to_add = letter_to_add.lower()
- if(previouswascapital and (not currentiscapital)):
- old_letter = new_string[len(new_string)-1]
- new_string = new_string[0:len(new_string)-1]
- new_string += old_letter.upper()
- previouswascapital = currentiscapital
- new_string += letter_to_add
- return new_string
-
-def replaceoccurances(old_string, replace_string, replace_with_string):
- if (len(replace_string) == 0):
- return old_string
- if (len(old_string) < len(replace_string)):
- return old_string
- # Simple implementation, could proably be done smarter
- new_string = ''
- for index in range(len(old_string)):
- #print new_string
- if(len(replace_string) > (len(old_string) - index)):
- new_string += old_string[index:index + len(old_string)]
- break
- match = (len(replace_string) > 0)
- for replace_index in range(len(replace_string)):
- if (replace_string[replace_index] != old_string[index + replace_index]):
- match = False
- break
- if (match):
- new_string += replace_with_string
- index =+ len(replace_string)
- else:
- new_string += old_string[index]
- return new_string