56 if ( rootDoc ==
nullptr )
72 xmlNodePtr currentNode;
79 if ( !( xmlStrcmp( currentNode->name,
reinterpret_cast<const xmlChar*
>(
"bascode") ) ) )
86 if ( !( xmlStrcmp(
m_pXmlTreeWalker->currentNode()->name,
reinterpret_cast<const xmlChar*
>(
"bascode") ) ) )
102 xmlNodePtr currParagraph;
105 currParagraph = currBascodeNode->xmlChildrenNode;
106 while ( currParagraph !=
nullptr )
109 currParagraph=currParagraph->next;
119 xmlChar* codeSnippet;
121 if ( codeSnippet ==
nullptr )
126 xmlNodePtr curNode =
paragraph->xmlChildrenNode;
128 while ( curNode !=
nullptr )
130 sibling = curNode->next;
131 xmlUnlinkNode( curNode );
132 xmlFreeNode( curNode );
137 OUString strLine(
reinterpret_cast<const char*
>(codeSnippet),
138 strlen(
reinterpret_cast<const char*
>(codeSnippet)),
139 RTL_TEXTENCODING_UTF8 );
140 std::vector<HighlightPortion> portions;
142 for (
auto const& portion : portions)
144 OString sToken(
OUStringToOString(strLine.subView(portion.nBegin, portion.nEnd-portion.nBegin), RTL_TEXTENCODING_UTF8));
145 xmlNodePtr
text = xmlNewText(
reinterpret_cast<const xmlChar*
>(sToken.getStr()));
146 if ( portion.tokenType != TokenType::Whitespace )
149 curNode = xmlNewTextChild(
paragraph,
nullptr,
reinterpret_cast<xmlChar
const *
>(
"item"),
nullptr );
150 xmlNewProp( curNode,
reinterpret_cast<xmlChar
const *
>(
"type"), typeStr );
151 xmlAddChild( curNode,
text );
157 xmlFree( codeSnippet );
175 std::cout <<
"BasCodeTagger error occurred. Error code:" <<
ex << std::endl;
189 case TokenType::Unknown :
192 case TokenType::Identifier :
195 case TokenType::Whitespace :
198 case TokenType::Number :
201 case TokenType::String :
204 case TokenType::EOL :
207 case TokenType::Comment :
210 case TokenType::Error :
213 case TokenType::Operator :
216 case TokenType::Keywords :
219 case TokenType::Parameter :
226 return xmlCharStrdup( str );
std::unique_ptr< LibXmlTreeWalker > m_pXmlTreeWalker
BasicCodeTagger(xmlDocPtr rootDoc)
void tagBasCodeParagraphs()
Extracts Basic Codes contained in <bascode> tags.
std::vector< xmlNodePtr > m_BasicCodeContainerTags
static xmlChar * getTypeString(TokenType tokenType)
Converts SyntaxHighlighter's TokenTypes enum to a type string for
void getBasicCodeContainerNodes()
Gathers all the <bascode> tag nodes from xml tree.
void tagBasicCodes()
Manages tagging process.
SyntaxHighlighter m_Highlighter
void tagParagraph(xmlNodePtr paragraph)
Used by tagBasCodeParagraphs(). It does the work on the current paragraph containing Basic code.
xmlNodePtr m_pCurrentNode
LibXmlTreeWalker(xmlDocPtr doc)
Queue for breath-first search.
void ignoreCurrNodesChildren()
std::deque< xmlNodePtr > m_Queue
void getHighlightPortions(std::u16string_view rLine, std::vector< HighlightPortion > &pPortions) const
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)