diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/commentscan.l | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/src/commentscan.l b/src/commentscan.l index aae403d..42318d1 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -989,6 +989,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" %x CiteLabel %x CopyDoc %x GuardExpr +%x CdataSection %% @@ -1081,13 +1082,16 @@ RCSTAG "$"{ID}":"[^\n$]+"$" insidePre=FALSE; addOutput(yytext); } -<Comment>{RCSTAG} { // RCS tag which end a brief description - setOutput(OutputDoc); - REJECT; - } -<Comment>"<!--" { - BEGIN(HtmlComment); - } +<Comment>{RCSTAG} { // RCS tag which end a brief description + setOutput(OutputDoc); + REJECT; + } +<Comment>"<!--" { + BEGIN(HtmlComment); + } +<Comment>"<!\[CDATA\[" { + BEGIN(CdataSection); + } <Comment>{B}*{CMD}"endinternal"{B}* { addOutput("\\endinternal "); if (!inInternalDocs) @@ -1318,6 +1322,24 @@ RCSTAG "$"{ID}":"[^\n$]+"$" <HtmlComment>. { // ignore every else } +<CdataSection>"\]\]>" { + BEGIN( Comment ); + } +<CdataSection>{DOCNL} { + addOutput('\n'); + if (*yytext=='\n') yyLineNr++; + } +<CdataSection>[<>&] { // the special XML characters for iwhich the CDATA section is especially used + addOutput('\\'); + addOutput(*yytext); + } +<CdataSection>[^\\\n\]<>&]+ { + addOutput(yytext); + } +<CdataSection>. { + addOutput(*yytext); + } + /* -------------- Rules for handling formulas ---------------- */ <ReadFormulaShort>{CMD}"f$" { // end of inline formula |