summaryrefslogtreecommitdiffstats
path: root/src/docparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/docparser.cpp')
-rw-r--r--src/docparser.cpp123
1 files changed, 121 insertions, 2 deletions
diff --git a/src/docparser.cpp b/src/docparser.cpp
index b39b80e..633dc03 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -55,6 +55,7 @@
#include "growbuf.h"
#include "markdown.h"
#include "htmlentity.h"
+#include "emoji.h"
// debug off
#define DBG(x) do {} while(0)
@@ -909,6 +910,10 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children,
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found while handling command %s",
qPrint(g_token->name),qPrint(cmdName));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found while handling command %s",
+ qPrint(g_token->name),qPrint(cmdName));
+ break;
case TK_HTMLTAG:
if (insideLI(parent) && Mappers::htmlTagMapper->map(g_token->name) && g_token->endTag)
{ // ignore </li> as the end of a style command
@@ -1307,6 +1312,10 @@ static void defaultHandleTitleAndSize(const int cmd, DocNode *parent, QList<DocN
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected token %s",
tokToString(tok));
@@ -1369,7 +1378,7 @@ static bool defaultHandleToken(DocNode *parent,int tok, QList<DocNode> &children
handleWord)
{
DBG(("token %s at %d",tokToString(tok),doctokenizerYYlineno));
- if (tok==TK_WORD || tok==TK_LNKWORD || tok==TK_SYMBOL || tok==TK_URL ||
+ if (tok==TK_WORD || tok==TK_LNKWORD || tok==TK_SYMBOL || tok==TK_EMOJI|| tok==TK_URL ||
tok==TK_COMMAND || tok==TK_HTMLTAG
)
{
@@ -1404,6 +1413,9 @@ reparsetoken:
case CMD_HASH:
children.append(new DocSymbol(parent,DocSymbol::Sym_Hash));
break;
+ case CMD_COLON:
+ children.append(new DocSymbol(parent,DocSymbol::Sym_Colon));
+ break;
case CMD_DCOLON:
children.append(new DocSymbol(parent,DocSymbol::Sym_DoubleColon));
break;
@@ -1692,6 +1704,19 @@ reparsetoken:
}
}
break;
+ case TK_EMOJI:
+ {
+ int s = DocEmoji::decodeEmoji(tokenName);
+ if (s!=0)
+ {
+ children.append(new DocEmoji(parent,s));
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+ break;
case TK_WHITESPACE:
case TK_NEWPARA:
handlepara:
@@ -1769,6 +1794,12 @@ DocSymbol::SymType DocSymbol::decodeSymbol(const QCString &symName)
return HtmlEntityMapper::instance()->name2sym(symName);
}
+int DocEmoji::decodeEmoji(const QCString &symName)
+{
+ DBG(("decodeSymbol(%s)\n",qPrint(symName)));
+ return EmojiEntityMapper::instance()->name2sym(symName);
+}
+
//---------------------------------------------------------------------------
static int internalValidatingParseDoc(DocNode *parent,QList<DocNode> &children,
@@ -2340,6 +2371,10 @@ void DocSecRefItem::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected token %s",
tokToString(tok));
@@ -2482,6 +2517,10 @@ void DocInternalRef::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected token %s",
tokToString(tok));
@@ -2638,6 +2677,10 @@ void DocRef::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
case TK_HTMLTAG:
break;
default:
@@ -2772,6 +2815,10 @@ QCString DocLink::parse(bool isJavaLink,bool isXmlLink)
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
case TK_HTMLTAG:
if (g_token->name!="see" || !isXmlLink)
{
@@ -2963,6 +3010,10 @@ void DocVhdlFlow::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected token %s",
tokToString(tok));
@@ -3099,6 +3150,10 @@ int DocHtmlHeader::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected token %s",
tokToString(tok));
@@ -3142,6 +3197,10 @@ int DocHRef::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
case TK_HTMLTAG:
{
@@ -3292,6 +3351,19 @@ int DocIndexEntry::parse()
}
}
break;
+ case TK_EMOJI:
+ {
+ int s = DocEmoji::decodeEmoji(g_token->name);
+ if (s != 0)
+ {
+ m_entry+=g_token->name;
+ }
+ else
+ {
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected emoji found as argument of \\addindex");
+ }
+ }
+ break;
case TK_COMMAND:
switch (Mappers::cmdMapper->map(g_token->name))
{
@@ -3302,6 +3374,7 @@ int DocIndexEntry::parse()
case CMD_AMP: m_entry+='&'; break;
case CMD_DOLLAR: m_entry+='$'; break;
case CMD_HASH: m_entry+='#'; break;
+ case CMD_COLON: m_entry+=":"; break;
case CMD_DCOLON: m_entry+="::"; break;
case CMD_PERCENT: m_entry+='%'; break;
case CMD_NDASH: m_entry+="--"; break;
@@ -3388,6 +3461,10 @@ int DocHtmlCaption::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
case TK_HTMLTAG:
{
int tagId=Mappers::htmlTagMapper->map(g_token->name);
@@ -3997,6 +4074,10 @@ int DocHtmlDescTitle::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
case TK_HTMLTAG:
{
int tagId=Mappers::htmlTagMapper->map(g_token->name);
@@ -4550,6 +4631,10 @@ void DocTitle::parse()
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported symbol %s found",
qPrint(g_token->name));
break;
+ case TK_EMOJI:
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ break;
default:
warn_doc_error(g_fileName,doctokenizerYYlineno,"Unexpected token %s",
tokToString(tok));
@@ -5467,6 +5552,9 @@ int DocPara::handleCommand(const QCString &cmdName)
case CMD_PIPE:
m_children.append(new DocSymbol(this,DocSymbol::Sym_Pipe));
break;
+ case CMD_COLON:
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Colon));
+ break;
case CMD_DCOLON:
m_children.append(new DocSymbol(this,DocSymbol::Sym_DoubleColon));
break;
@@ -6524,7 +6612,7 @@ int DocPara::parse()
{
reparsetoken:
DBG(("token %s at %d",tokToString(tok),doctokenizerYYlineno));
- if (tok==TK_WORD || tok==TK_LNKWORD || tok==TK_SYMBOL || tok==TK_URL ||
+ if (tok==TK_WORD || tok==TK_LNKWORD || tok==TK_SYMBOL || tok==TK_EMOJI || tok==TK_URL ||
tok==TK_COMMAND || tok==TK_HTMLTAG
)
{
@@ -6780,6 +6868,20 @@ reparsetoken:
}
break;
}
+ case TK_EMOJI:
+ {
+ int s = DocEmoji::decodeEmoji(g_token->name);
+ if (s!=0)
+ {
+ m_children.append(new DocEmoji(this,s));
+ }
+ else
+ {
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ }
+ break;
+ }
case TK_NEWPARA:
retval=TK_NEWPARA;
goto endparagraph;
@@ -6994,6 +7096,20 @@ void DocText::parse()
}
}
break;
+ case TK_EMOJI:
+ {
+ int s = DocSymbol::decodeSymbol(g_token->name);
+ if (s!=0)
+ {
+ m_children.append(new DocEmoji(this,s));
+ }
+ else
+ {
+ warn_doc_error(g_fileName,doctokenizerYYlineno,"Unsupported emoji '%s' found",
+ qPrint(g_token->name));
+ }
+ }
+ break;
case TK_COMMAND:
switch (Mappers::cmdMapper->map(g_token->name))
{
@@ -7018,6 +7134,9 @@ void DocText::parse()
case CMD_HASH:
m_children.append(new DocSymbol(this,DocSymbol::Sym_Hash));
break;
+ case CMD_COLON:
+ m_children.append(new DocSymbol(this,DocSymbol::Sym_Colon));
+ break;
case CMD_DCOLON:
m_children.append(new DocSymbol(this,DocSymbol::Sym_DoubleColon));
break;