mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 18:25:10 +00:00
[FIX/WIP] Fix leak, add formatting chars on XML
This commit is contained in:
parent
b7d2ea8a43
commit
8d1dc09c54
1 changed files with 29 additions and 19 deletions
|
|
@ -183,7 +183,6 @@ ParseLine(XEP393Element *elem, StringRect line)
|
|||
size_t ch_idx, chars = StrViewChars(line, 0);
|
||||
size_t text_start = 0;
|
||||
size_t i;
|
||||
bool managed = false;
|
||||
|
||||
for (ch_idx = 0; ch_idx < chars; ch_idx++)
|
||||
{
|
||||
|
|
@ -210,7 +209,6 @@ ParseLine(XEP393Element *elem, StringRect line)
|
|||
} \
|
||||
line_item = CreateElementVessel(elem, XEP393_TEXT); \
|
||||
line_item->text_data = gen; \
|
||||
managed = true; \
|
||||
} \
|
||||
\
|
||||
span_item = CreateElementVessel(elem, sym); \
|
||||
|
|
@ -227,7 +225,6 @@ ParseLine(XEP393Element *elem, StringRect line)
|
|||
/* TODO: Can we troll and introduce | as a Parsee extension? */
|
||||
}
|
||||
|
||||
if (!managed)
|
||||
{
|
||||
char *temp, *gen = NULL, chara[2] = { 0, '\0' };
|
||||
for (i = text_start; i < chars; i++)
|
||||
|
|
@ -307,27 +304,31 @@ ShoveXML(XEP393Element *element, XMLElement *xmlparent)
|
|||
case XEP393_ITALIC:
|
||||
head = XMLCreateTag("i");
|
||||
XMLAddChild(xmlparent, head);
|
||||
XMLAddChild(head, XMLCreateText("_"));
|
||||
break;
|
||||
case XEP393_MONO:
|
||||
head = XMLCreateTag("code");
|
||||
XMLAddChild(xmlparent, head);
|
||||
XMLAddChild(head, XMLCreateText("`"));
|
||||
break;
|
||||
case XEP393_SRKE:
|
||||
head = XMLCreateTag("s");
|
||||
XMLAddChild(xmlparent, head);
|
||||
XMLAddChild(head, XMLCreateText("~"));
|
||||
break;
|
||||
case XEP393_EMPH:
|
||||
head = XMLCreateTag("strong");
|
||||
XMLAddChild(xmlparent, head);
|
||||
XMLAddChild(head, XMLCreateText("*"));
|
||||
break;
|
||||
case XEP393_LINE:
|
||||
head = XMLCreateTag("p");
|
||||
XMLAddChild(xmlparent, head);
|
||||
break;
|
||||
case XEP393_SRKE:
|
||||
head = XMLCreateTag("s");
|
||||
XMLAddChild(xmlparent, head);
|
||||
break;
|
||||
case XEP393_QUOT:
|
||||
head = XMLCreateTag("blockquote");
|
||||
XMLAddChild(xmlparent, head);
|
||||
break;
|
||||
case XEP393_EMPH:
|
||||
head = XMLCreateTag("strong");
|
||||
XMLAddChild(xmlparent, head);
|
||||
break;
|
||||
case XEP393_MONO:
|
||||
head = XMLCreateTag("code");
|
||||
XMLAddChild(xmlparent, head);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
if (ArraySize(element->children) == 0 &&
|
||||
|
|
@ -340,16 +341,25 @@ ShoveXML(XEP393Element *element, XMLElement *xmlparent)
|
|||
for (i = 0; i < ArraySize(element->children); i++)
|
||||
{
|
||||
XEP393Element *sub = ArrayGet(element->children, i);
|
||||
if (sub->type == XEP393_TEXT && !sub->text_data)
|
||||
{
|
||||
XMLFreeElement(ArrayDelete(
|
||||
xmlparent->children,
|
||||
ArraySize(xmlparent->children) - 1
|
||||
));
|
||||
continue;
|
||||
}
|
||||
ShoveXML(sub, head);
|
||||
}
|
||||
|
||||
switch (element->type)
|
||||
{
|
||||
case XEP393_ITALIC:
|
||||
XMLAddChild(head, XMLCreateText("_"));
|
||||
break;
|
||||
case XEP393_MONO:
|
||||
XMLAddChild(head, XMLCreateText("`"));
|
||||
break;
|
||||
case XEP393_SRKE:
|
||||
XMLAddChild(head, XMLCreateText("~"));
|
||||
break;
|
||||
case XEP393_EMPH:
|
||||
XMLAddChild(head, XMLCreateText("*"));
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
#include <StringStream.h>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue