Ticket #992: headingids.diff
| File headingids.diff, 3.7 KB (added by Manuzhai, 7 years ago) |
|---|
-
.py
old new 136 136 return href_join(self.base, 'about_trac') 137 137 138 138 def wiki(self, page=None, version=None, diff=0, history=0): 139 anchor = '' 140 if page and page.find('#') != -1: 141 anchor = page[page.find('#'):] 142 page = page[:page.find('#')] 139 143 if page and version and diff: 140 return href_join(self.base, 'wiki', page) + '?version=' + str(version) + '&diff=yes' 144 return href_join(self.base, 'wiki', page) + '?version=' + str(version) + '&diff=yes' + anchor 141 145 elif page and version: 142 return href_join(self.base, 'wiki', page) + '?version=' + str(version) 146 return href_join(self.base, 'wiki', page) + '?version=' + str(version) + anchor 143 147 elif page and history: 144 return href_join(self.base, 'wiki', page) + '?history=yes' 148 return href_join(self.base, 'wiki', page) + '?history=yes' + anchor 145 149 elif page: 146 return href_join(self.base, 'wiki', page) 150 return href_join(self.base, 'wiki', page) + anchor 147 151 else: 148 152 return href_join(self.base, 'wiki') 149 153 -
.py
old new 45 45 r"""(?P<changesethref>!?\[\d+\])""", 46 46 r"""(?P<reporthref>!?\{\d+\})""", 47 47 r"""(?P<modulehref>!?((?P<modulename>bug|ticket|browser|source|repos|report|changeset|wiki|milestone|search):(?P<moduleargs>("(.*?)"|'(.*?)')|([^ ]*[^'~_\., \)]))))""", 48 r"""(?P<wikilink>!?(^|(?<=[^A-Za-z]))[A-Z][a-z]+(?:[A-Z][a-z]*[a-z/])+(? =\Z|\s|[.,;:!?\)}\]]))""",48 r"""(?P<wikilink>!?(^|(?<=[^A-Za-z]))[A-Z][a-z]+(?:[A-Z][a-z]*[a-z/])+(?:#[A-Za-z0-9]+)?(?=\Z|\s|[.,;:!?\)}\]]))""", 49 49 r"""(?P<fancylink>!?\[(?P<fancyurl>([a-z]+:[^ ]+)) (?P<linkname>.*?)\])"""] 50 50 51 51 _open_tags = [] … … 162 162 else: 163 163 return self._href.ticket(args), '%s:%s' % (module, args), 1, '' 164 164 elif module == 'wiki': 165 page = args 166 if page.find('#') != -1: page = page[:page.find('#')] 165 167 if not self.env._wiki_pages.has_key(args): 166 168 return self._href.wiki(args), '%s:%s' % (module, args), 1, None 167 169 else: … … 205 207 206 208 def _wikilink_formatter(self, match, fullmatch): 207 209 if not self.env._wiki_pages.has_key(match): 210 page = match 211 if page.find('#') != -1: page = page[:page.find('#')] 208 212 return '<a class="missing" href="%s">%s?</a>' % \ 209 213 (self._href.wiki(match), match) 210 214 else: … … 269 273 270 274 _compiled_rules = re.compile('(?:' + string.join(_rules, '|') + ')') 271 275 _processor_re = re.compile('#\!([a-zA-Z0-9/+-]+)') 276 _anchor_re = re.compile('[^\w\d]+') 272 277 mime_type = "" 273 278 fragments = [] 274 279 275 280 # RE patterns used by other patterna 276 281 _helper_patterns = ('idepth', 'ldepth', 'hdepth', 'fancyurl', … … 362 367 self.close_paragraph() 363 368 self.close_indentation() 364 369 self.close_list() 365 self.out.write('<h%d>%s</h%d>' % (depth, match[depth + 1:len(match) - depth - 1], depth)) 370 371 txt = match[depth + 1:len(match) - depth - 1] 372 simplefrag = frag = txt.lower().replace(' ', '-') 373 i = 0 374 while frag in self.fragments: 375 frag = simplefrag + '-' + str(i) 376 i += 1 377 self.fragments.append(frag) 378 379 self.out.write('<h%d id="%s">%s</h%d>' % (depth, frag, txt, depth)) 366 380 return '' 367 381 368 382 def _svnimg_formatter(self, match, fullmatch):
