Handle doc urls enclosed in parens.

It seems this has become a common pattern in at least some of our
libraries.

Fixes https://gitlab.com/kicad/code/kicad/issues/7963
This commit is contained in:
Jeff Young 2021-03-22 21:18:34 +00:00
parent f24f0d93a5
commit 49b1aceb8b
1 changed files with 31 additions and 5 deletions

View File

@ -94,15 +94,41 @@ public:
// It is currently common practice to store a documentation link in the description.
int idx = desc.find( wxT( "http:" ) );
if( idx < 0 )
idx = desc.find( wxT( "https:" ) );
if( idx >= 0 )
{
doc = desc.substr( (unsigned) idx );
// And, sadly, it appears to have also become customary to bury the url inside
// parentheses.
if( idx >= 1 && desc.at( idx - 1 ) == '(' )
{
int nesting = 0;
desc = desc.substr( 0, (unsigned) idx );
desc = desc.Trim( true );
while( idx < (int) desc.size() )
{
char c = desc.at( idx++ );
if( !desc.IsEmpty() && desc.Last() == ',' )
desc.RemoveLast( 1 );
if( c == '(' )
nesting++;
else if( c == ')' && --nesting < 0 )
break;
doc += c;
}
desc.Replace( doc, _( "doc url" ) );
}
else
{
doc = desc.substr( (unsigned) idx );
desc = desc.substr( 0, (unsigned) idx );
desc = desc.Trim( true );
if( !desc.IsEmpty() && desc.Last() == ',' )
desc.RemoveLast( 1 );
}
}
m_html.Replace( "__NAME__", EscapeHTML( name ) );