mirror of
https://forge.fsky.io/lda/Parsee.git
synced 2026-03-13 18:35:11 +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 ch_idx, chars = StrViewChars(line, 0);
|
||||||
size_t text_start = 0;
|
size_t text_start = 0;
|
||||||
size_t i;
|
size_t i;
|
||||||
bool managed = false;
|
|
||||||
|
|
||||||
for (ch_idx = 0; ch_idx < chars; ch_idx++)
|
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 = CreateElementVessel(elem, XEP393_TEXT); \
|
||||||
line_item->text_data = gen; \
|
line_item->text_data = gen; \
|
||||||
managed = true; \
|
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
span_item = CreateElementVessel(elem, sym); \
|
span_item = CreateElementVessel(elem, sym); \
|
||||||
|
|
@ -227,7 +225,6 @@ ParseLine(XEP393Element *elem, StringRect line)
|
||||||
/* TODO: Can we troll and introduce | as a Parsee extension? */
|
/* TODO: Can we troll and introduce | as a Parsee extension? */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!managed)
|
|
||||||
{
|
{
|
||||||
char *temp, *gen = NULL, chara[2] = { 0, '\0' };
|
char *temp, *gen = NULL, chara[2] = { 0, '\0' };
|
||||||
for (i = text_start; i < chars; i++)
|
for (i = text_start; i < chars; i++)
|
||||||
|
|
@ -307,27 +304,31 @@ ShoveXML(XEP393Element *element, XMLElement *xmlparent)
|
||||||
case XEP393_ITALIC:
|
case XEP393_ITALIC:
|
||||||
head = XMLCreateTag("i");
|
head = XMLCreateTag("i");
|
||||||
XMLAddChild(xmlparent, head);
|
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;
|
break;
|
||||||
case XEP393_LINE:
|
case XEP393_LINE:
|
||||||
head = XMLCreateTag("p");
|
head = XMLCreateTag("p");
|
||||||
XMLAddChild(xmlparent, head);
|
XMLAddChild(xmlparent, head);
|
||||||
break;
|
break;
|
||||||
case XEP393_SRKE:
|
|
||||||
head = XMLCreateTag("s");
|
|
||||||
XMLAddChild(xmlparent, head);
|
|
||||||
break;
|
|
||||||
case XEP393_QUOT:
|
case XEP393_QUOT:
|
||||||
head = XMLCreateTag("blockquote");
|
head = XMLCreateTag("blockquote");
|
||||||
XMLAddChild(xmlparent, head);
|
XMLAddChild(xmlparent, head);
|
||||||
break;
|
break;
|
||||||
case XEP393_EMPH:
|
|
||||||
head = XMLCreateTag("strong");
|
|
||||||
XMLAddChild(xmlparent, head);
|
|
||||||
break;
|
|
||||||
case XEP393_MONO:
|
|
||||||
head = XMLCreateTag("code");
|
|
||||||
XMLAddChild(xmlparent, head);
|
|
||||||
break;
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
if (ArraySize(element->children) == 0 &&
|
if (ArraySize(element->children) == 0 &&
|
||||||
|
|
@ -340,16 +341,25 @@ ShoveXML(XEP393Element *element, XMLElement *xmlparent)
|
||||||
for (i = 0; i < ArraySize(element->children); i++)
|
for (i = 0; i < ArraySize(element->children); i++)
|
||||||
{
|
{
|
||||||
XEP393Element *sub = ArrayGet(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);
|
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>
|
#include <StringStream.h>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue