diff options
Diffstat (limited to 'src/docparser.cpp')
-rw-r--r-- | src/docparser.cpp | 123 |
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; |