11const rasterisks = / ^ \s * \* /
2- const rheaders = / ^ * ( \= + ) * ( [ ^ \n \r ] + ) * \1 ? * $ /
2+ const rheaders = / ^ * ( \= + ) * ( [ ^ \n \r ] + ? ) [ = \s ] * $ /
33let listStarted = false
44
55function escapeHTML ( string ) {
@@ -35,31 +35,33 @@ module.exports = function tracToHTML(text) {
3535 } )
3636 // Linkify http links in brackets
3737 . replace (
38- / ( ^ | \s ) \[ ( h t t p s ? : \/ \/ [ ^ \s \] ] + ) (?: \s + ( [ ^ \] ] + ) ) ? \] / g,
39- function ( _match , space , url , text ) {
40- return `${
41- space || ''
42- } <a href=" ${ url } " class="ext-link"><span class="icon"></span>${
43- text || url
38+ / ( ^ | \s ) (?: \[ h t t p s ? : \/ \/ ( [ ^ ] + ) " ( [ ^ " ] + ) " \] ) | (?: \[ h t t p s ? : \/ \/ ( [ ^ \s \] ] + ) (?: ( [ ^ \] ] + ) ) ? \] ) / g,
39+ function ( _match , space , quotedurl , quotedtext , url , text ) {
40+ return `${ space || '' } <a href=" ${
41+ quotedurl || url
42+ } " class="ext-link"><span class="icon"></span>${
43+ quotedtext || text || url
4444 } </a>`
4545 }
4646 )
4747 // Linkify hash links in brackets
4848 . replace (
49- / ( ^ | \s ) \[ ( # [ ^ \s \] ] + ) (?: \s + ( [ ^ \] ] + ) ) ? \] / g,
50- function ( _match , space , url , text ) {
51- return `${
52- space || ''
53- } <a href=" ${ url } " class="ext-link"><span class="icon"></span>${
54- text || url
49+ / ( ^ | \s ) (?: \[ ( # [ ^ ] + ) " ( [ ^ " ] + ) " \] ) | (?: \[ ( # [ ^ \s \] ] + ) (?: ( [ ^ \] ] + ) ) ? \] ) / g,
50+ function ( _match , space , quotedurl , quotedtext , url , text ) {
51+ return `${ space || '' } <a href=" ${
52+ quotedurl || url
53+ } " class="ext-link"><span class="icon"></span>${
54+ quotedtext || text || url
5555 } </a>`
5656 }
5757 )
5858 // Linkify CamelCase links in brackets
5959 . replace (
60- / ( ^ | \s ) \[ ( [ A - Z ] [ a - z ] + [ A - Z ] [ \w # - ] + ) (?: \s + ( [ ^ \] ] + ) ) ? \] / g,
61- function ( _match , space , page , text ) {
62- return `${ space || '' } <a href="/wiki/${ page } ">${ text || page } </a>`
60+ / ( ^ | \s ) (?: \[ ( [ A - Z ] [ a - z ] + [ A - Z ] [ ^ ] + ) " ( [ ^ " ] + ) " \] ) | (?: \[ ( [ A - Z ] [ a - z ] + [ A - Z ] [ ^ \s \] ] + ) (?: ( [ ^ \] ] + ) ) ? \] ) / g,
61+ function ( _match , space , quotedpage , quotedtext , page , text ) {
62+ return `${ space || '' } <a href="/wiki/${ quotedpage || page } ">${
63+ quotedtext || text || page
64+ } </a>`
6365 }
6466 )
6567 // Linkify trac links
@@ -77,7 +79,7 @@ module.exports = function tracToHTML(text) {
7779 . replace ( / # ( \d + ) (? ! < = > ) / g, `<a href="/ticket/$1">$&</a>` )
7880 // Linkify CamelCase to wiki
7981 . replace (
80- / ( ^ | \s ) ( ! ) ? ( [ A - Z ] [ a - z ] + [ A - Z ] \w + (?: # \w + ) ? ) (? ! \w ) / g,
82+ / ( ^ | \s ) ( ! ) ? ( [ A - Z ] [ a - z ] + [ A - Z ] [ \w : ] + (?: # \w + ) ? ) (? ! \w ) / g,
8183 function ( _match , space , excl , page ) {
8284 if ( excl ) {
8385 return `${ space || '' } ${ page } `
0 commit comments