@@ -169,16 +169,14 @@ def find_unique(n):
169169 return ""
170170
171171
172- def link_charter_doc_match1 (match ):
172+ def link_charter_doc_match (match ):
173173 if not doc_canonical_name (match [0 ]):
174174 return match [0 ]
175- return f'<a href="/doc/{ match [1 ][:- 1 ]} /{ match [2 ]} /">{ match [0 ]} </a>'
176-
177-
178- def link_charter_doc_match2 (match ):
179- if not doc_canonical_name (match [0 ]):
180- return match [0 ]
181- return f'<a href="/doc/{ match [1 ][:- 1 ]} /{ match [2 ]} /">{ match [0 ]} </a>'
175+ url = urlreverse (
176+ "ietf.doc.views_doc.document_main" ,
177+ kwargs = dict (name = match [1 ][:- 1 ], rev = match [2 ]),
178+ )
179+ return f'<a href="{ url } ">{ match [0 ]} </a>'
182180
183181
184182def link_non_charter_doc_match (match ):
@@ -187,20 +185,26 @@ def link_non_charter_doc_match(match):
187185 if not cname :
188186 return match [0 ]
189187 if name == cname :
190- return f'<a href="/doc/{ cname } /">{ match [0 ]} </a>'
188+ url = urlreverse ("ietf.doc.views_doc.document_main" , kwargs = dict (name = cname ))
189+ return f'<a href="{ url } ">{ match [0 ]} </a>'
191190
192191 # if we get here, the name probably has a version number and/or extension at the end
193192 rev_split = re .search (r"^(" + re .escape (cname ) + r")-(\d{2,})" , name )
194193 if rev_split :
195194 name = rev_split .group (1 )
196195 else :
197- return f'<a href="/doc/{ cname } /">{ match [0 ]} </a>'
196+ url = urlreverse ("ietf.doc.views_doc.document_main" , kwargs = dict (name = cname ))
197+ return f'<a href="{ url } ">{ match [0 ]} </a>'
198198
199199 cname = doc_canonical_name (name )
200200 if not cname :
201201 return match [0 ]
202202 if name == cname :
203- return f'<a href="/doc/{ cname } /{ rev_split .group (2 )} /">{ match [0 ]} </a>'
203+ url = urlreverse (
204+ "ietf.doc.views_doc.document_main" ,
205+ kwargs = dict (name = cname , rev = rev_split .group (2 )),
206+ )
207+ return f'<a href="{ url } ">{ match [0 ]} </a>'
204208
205209 # if we get here, we can't linkify
206210 return match [0 ]
@@ -211,44 +215,33 @@ def link_other_doc_match(match):
211215 rev = match [3 ]
212216 if not doc_canonical_name (doc + rev ):
213217 return match [0 ]
214- return f'<a href="/doc/{ doc } { rev } /">{ match [1 ]} </a>'
218+ url = urlreverse ("ietf.doc.views_doc.document_main" , kwargs = dict (name = doc + rev ))
219+ return f'<a href="{ url } ">{ match [1 ]} </a>'
215220
216221
217222@register .filter (name = "urlize_ietf_docs" , is_safe = True , needs_autoescape = True )
218223def urlize_ietf_docs (string , autoescape = None ):
219224 """
220- Make occurrences of RFC NNNN and draft-foo-bar links to / doc/ .
225+ Make occurrences of RFC NNNN and draft-foo-bar links to the doc pages .
221226 """
222227 if autoescape and not isinstance (string , SafeData ):
223228 if "<" in string :
224229 string = escape (string )
225230 else :
226231 string = mark_safe (string )
227- exp1 = r"\b(?<![/\-:=#])(charter-(?:[\d\w\.+]+-)*)(\d{2}-\d{2})(\.(?:txt|ps|pdf|html))?\b"
228- exp2 = r"\b(?<![/\-:=#])(charter-(?:[\d\w\.+]+-)*)(\d{2})(\.(?:txt|ps|pdf|html))?\b"
229- if re .search (exp1 , string ):
230- string = re .sub (
231- exp1 ,
232- link_charter_doc_match1 ,
233- string ,
234- flags = re .IGNORECASE | re .ASCII ,
235- )
236- elif re .search (exp2 , string ):
237- string = re .sub (
238- exp2 ,
239- link_charter_doc_match2 ,
240- string ,
241- flags = re .IGNORECASE | re .ASCII ,
242- )
232+ string = re .sub (
233+ r"\b(?<![/\-:=#])(charter-(?:[\d\w\.+]+-)*)(\d{2}(?:-\d{2}))(\.(?:txt|ps|pdf|html))?\b" ,
234+ link_charter_doc_match ,
235+ string ,
236+ flags = re .IGNORECASE | re .ASCII ,
237+ )
243238 string = re .sub (
244239 r"\b(?<![/\-:=#])((?:draft-|bofreq-|conflict-review-|status-change-)[\d\w\.+-]+(?![-@]))" ,
245- # r"\b(?<![/\-:=#])(((?:draft-|bofreq-|conflict-review-|status-change-)(?:[\d\w\.+]+-)*)([\d\w\.+]+?)(\.(?:txt|ps|pdf|html))?)\b(?![-@])",
246240 link_non_charter_doc_match ,
247241 string ,
248242 flags = re .IGNORECASE | re .ASCII ,
249243 )
250244 string = re .sub (
251- # r"\b((RFC|BCP|STD|FYI|(?:draft-|bofreq-|conflict-review-|status-change-|charter-)[-\d\w.+]+)\s*0*(\d+))\b",
252245 r"\b(?<![/\-:=#])((RFC|BCP|STD|FYI)\s*0*(\d+))\b" ,
253246 link_other_doc_match ,
254247 string ,
0 commit comments