Convert sub-type specific formatting to GSP formatting.
        By default formatSub will replace 1-to-1 all occurences of subtitle specific tags with
        their GSP equivalents. Due to performance reasons it will not parse given 'string' in any
        other way. That means that it cannot detect exotic situations like existance of opening tags
        only. This generic behaviour is good enough for most formats but in some cases it'll be
        necessary to provide a specialized version of this method.
        If 'gsp_nl' equals to os.linesep, then a given string will be checked against occurance of
        any of newline styles (Linux, Windows and Mac).
        Trivia: GSP stands for "GenericSubParser" which was SubParser class name before.

def formatSub(self, string):
        """Convert sub-type specific formatting to GSP formatting.
        By default formatSub will replace 1-to-1 all occurences of subtitle specific tags with
        their GSP equivalents. Due to performance reasons it will not parse given 'string' in any
        other way. That means that it cannot detect exotic situations like existance of opening tags
        only. This generic behaviour is good enough for most formats but in some cases it'll be
        necessary to provide a specialized version of this method.
        If 'gsp_nl' equals to os.linesep, then a given string will be checked against occurance of
        any of newline styles (Linux, Windows and Mac).
        Trivia: GSP stands for "GenericSubParser" which was SubParser class name before."""
        string = string.strip()
        string = string.replace('{', '{{').replace('}', '}}')
        string = self._formatWithTags("gsp_b_", "_gsp_b", string)
        string = self._formatWithTags("gsp_i_", "_gsp_i", string)
        string = self._formatWithTags("gsp_u_", "_gsp_u", string)
        string = self._formatLinesep(string)
        return string