Skip to content

Commit fe5723b

Browse files
committed
issue doxygen#11660 Conditions in HTML table seem to be broken (1.13.2 -> 1.14.0)
1 parent 34ae24c commit fe5723b

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

src/docnode.cpp

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1949,13 +1949,16 @@ bool DocHtmlRow::isHeading() const
19491949

19501950
static Token skipSpacesForTable(DocParser *parser)
19511951
{
1952+
AUTO_TRACE();
19521953
// get next token
19531954
Token tok=parser->tokenizer.lex();
19541955
// skip whitespace and tbody, thead and tfoot tags
1955-
while (tok.is_any_of(TokenRetval::TK_WHITESPACE,TokenRetval::TK_NEWPARA,TokenRetval::TK_HTMLTAG))
1956+
while (tok.is_any_of(TokenRetval::TK_WHITESPACE,TokenRetval::TK_NEWPARA,TokenRetval::TK_HTMLTAG,
1957+
TokenRetval::TK_COMMAND_AT,TokenRetval::TK_COMMAND_BS))
19561958
{
19571959
if (tok.is(TokenRetval::TK_HTMLTAG))
19581960
{
1961+
AUTO_TRACE_ADD("html_tag={}",parse->context.token->name);
19591962
HtmlTagType tagId=Mappers::htmlTagMapper->map(parser->context.token->name);
19601963
// skip over tbody, thead, tfoot tags
19611964
if (tagId==HtmlTagType::HTML_TBODY ||
@@ -1969,15 +1972,41 @@ static Token skipSpacesForTable(DocParser *parser)
19691972
break;
19701973
}
19711974
}
1975+
else if (tok.is(TokenRetval::TK_COMMAND_AT) || tok.is(TokenRetval::TK_COMMAND_BS))
1976+
{
1977+
QCString cmdName=parser->context.token->name;
1978+
AUTO_TRACE_ADD("command={}",cmdName);
1979+
auto cmdType = Mappers::cmdMapper->map(cmdName);
1980+
if (cmdType==CommandType::CMD_ILINE)
1981+
{
1982+
parser->tokenizer.pushState();
1983+
parser->tokenizer.setStateILine();
1984+
tok = parser->tokenizer.lex();
1985+
if (!tok.is(TokenRetval::TK_WORD))
1986+
{
1987+
warn_doc_error(parser->context.fileName,parser->tokenizer.getLineNr(),"invalid argument for command '{:c}{}'",
1988+
tok.command_to_char(),cmdName);
1989+
}
1990+
parser->tokenizer.popState();
1991+
tok = parser->tokenizer.lex();
1992+
}
1993+
else
1994+
{
1995+
break;
1996+
}
1997+
}
19721998
else
19731999
{
2000+
AUTO_TRACE_ADD("skip whitespace");
19742001
tok=parser->tokenizer.lex();
19752002
}
19762003
}
19772004
return tok;
19782005
}
19792006

19802007

2008+
2009+
19812010
Token DocHtmlRow::parse()
19822011
{
19832012
AUTO_TRACE();
@@ -2237,7 +2266,7 @@ Token DocHtmlTable::parse()
22372266
{
22382267
retval = Token::make_RetVal_EndTable();
22392268
}
2240-
else // found some other tag
2269+
else // found some other tag
22412270
{
22422271
warn_doc_error(parser()->context.fileName,parser()->tokenizer.getLineNr(),"expected <tr> or </table> tag but "
22432272
"found token {} instead!",retval.to_string());

0 commit comments

Comments
 (0)