Edgewall Software

Ticket #2877: wiki_insert_spaces_r3013.diff

File wiki_insert_spaces_r3013.diff, 1.5 kB (added by cboos, 3 years ago)

A slightly refined patches, with a TracIni setting for the feature.

  • trac/wiki/api.py

     
    197197     
    198198    def get_wiki_syntax(self): 
    199199        ignore_missing = self.config.getbool('wiki', 'ignore_missing_pages') 
     200        insert_spaces = self.config.getbool('wiki', 'insert_spaces') 
    200201        yield (r"!?(?<!/)\b[A-Z][a-z]+(?:[A-Z][a-z]*[a-z/])+" 
    201202                "(?:#[A-Za-z0-9]+)?(?=:?\Z|:?\s|[.,;!?\)}\]])", 
    202                lambda x, y, z: self._format_link(x, 'wiki', y, y, 
    203                                                  ignore_missing)) 
     203               lambda x, y, z: self._format_syntax_link(x, 'wiki', y, y, 
     204                                                        insert_spaces, 
     205                                                        ignore_missing)) 
    204206 
    205207    def get_link_resolvers(self): 
    206         yield ('wiki', self._format_fancy_link) 
     208        yield ('wiki', self._format_resolver_link) 
    207209 
    208     def _format_fancy_link(self, f, n, p, l): 
     210    def _format_syntax_link(self, formatter, ns, page, label, 
     211                            insert_spaces, ignore_missing): 
     212        if insert_spaces: 
     213            words = re.split(r"([A-Z])", page) 
     214            label = ' '.join([a+b for a,b in zip(words[1::2], words[::2][1:])]) 
     215        return self._format_link(formatter, ns, page, label, ignore_missing) 
     216 
     217    def _format_resolver_link(self, f, n, p, l): 
    209218        return self._format_link(f, n, p, l, False) 
    210219 
    211220    def _format_link(self, formatter, ns, page, label, ignore_missing):