<s> import re <EOL> def selection_contain_linebreaks ( string , startIndex , endIndex ) : <EOL> linebreakRe = re . compile ( "<STR_LIT>" ) <EOL> part = string [ startIndex : endIndex ] <EOL> result = linebreakRe . search ( part ) <EOL> if result : <EOL> return True <EOL> else : <EOL> return False <EOL> def create_return_obj ( start , end , string , type ) : <EOL> return { "<STR_LIT:start>" : start , "<STR_LIT:end>" : end , "<STR_LIT:string>" : string [ start : end ] , "<STR_LIT:type>" : type } <EOL> def get_line ( string , startIndex , endIndex ) : <EOL> linebreakRe = re . compile ( r'<STR_LIT:\n>' ) <EOL> searchIndex = startIndex - <NUM_LIT:1> ; <EOL> while True : <EOL> if searchIndex < <NUM_LIT:0> : <EOL> newStartIndex = searchIndex + <NUM_LIT:1> <EOL> break <EOL> char = string [ searchIndex : searchIndex + <NUM_LIT:1> ] <EOL> if linebreakRe . match ( char ) : <EOL> newStartIndex = searchIndex + <NUM_LIT:1> <EOL> break <EOL> else : <EOL> searchIndex -= <NUM_LIT:1> <EOL> searchIndex = endIndex ; <EOL> while True : <EOL> if searchIndex > len ( string ) - <NUM_LIT:1> : <EOL> newEndIndex = searchIndex <EOL> break <EOL> char = string [ searchIndex : searchIndex + <NUM_LIT:1> ] <EOL> if linebreakRe . match ( char ) : <EOL> newEndIndex = searchIndex <EOL> break <EOL> else : <EOL> searchIndex += <NUM_LIT:1> <EOL> return { "<STR_LIT:start>" : newStartIndex , "<STR_LIT:end>" : newEndIndex } <EOL> def trim ( string ) : <EOL> trim = re . compile ( r'<STR_LIT>' , re . DOTALL ) <EOL> r = trim . search ( string ) <EOL> if r : <EOL> return { "<STR_LIT:start>" : r . start ( <NUM_LIT:1> ) , "<STR_LIT:end>" : r . end ( <NUM_LIT:1> ) } <EOL> else : <EOL> return None </s>
