forked from enlightenment/efl
Elm entry: Use the new textblock functions for markup<->utf8.
SVN revision: 66256
This commit is contained in:
parent
4bdd4e8909
commit
26098d66ba
|
@ -36,129 +36,7 @@ _str_append(char *str, const char *txt, int *len, int *alloc)
|
||||||
char *
|
char *
|
||||||
_elm_util_mkup_to_text(const char *mkup)
|
_elm_util_mkup_to_text(const char *mkup)
|
||||||
{
|
{
|
||||||
char *str = NULL;
|
return evas_textblock_text_markup_to_utf8(NULL, mkup);
|
||||||
int str_len = 0, str_alloc = 0;
|
|
||||||
char *s, *p;
|
|
||||||
char *tag_start, *tag_end, *esc_start, *esc_end, *ts;
|
|
||||||
|
|
||||||
if (!mkup) return NULL;
|
|
||||||
tag_start = tag_end = esc_start = esc_end = NULL;
|
|
||||||
p = (char *)mkup;
|
|
||||||
s = p;
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
if ((!*p) ||
|
|
||||||
(tag_end) || (esc_end) ||
|
|
||||||
(tag_start) || (esc_start))
|
|
||||||
{
|
|
||||||
if (tag_end)
|
|
||||||
{
|
|
||||||
char *ttag;
|
|
||||||
|
|
||||||
ttag = malloc(tag_end - tag_start);
|
|
||||||
if (ttag)
|
|
||||||
{
|
|
||||||
_str_ncpy(ttag, tag_start + 1, tag_end - tag_start - 1);
|
|
||||||
ttag[tag_end - tag_start - 1] = 0;
|
|
||||||
if ((!strcmp(ttag, "br")) ||
|
|
||||||
(!strcmp(ttag, "\n")) ||
|
|
||||||
(!strcmp(ttag, "\\n")))
|
|
||||||
str = _str_append(str, "\n", &str_len, &str_alloc);
|
|
||||||
else if ((!strcmp(ttag, "tab")) ||
|
|
||||||
(!strcmp(ttag, "\t")) ||
|
|
||||||
(!strcmp(ttag, "\\t")))
|
|
||||||
str = _str_append(str, "\t", &str_len, &str_alloc);
|
|
||||||
else if (!strcmp(ttag, "ps")) /* Unicode paragraph separator */
|
|
||||||
str = _str_append(str, "\xE2\x80\xA9", &str_len, &str_alloc);
|
|
||||||
free(ttag);
|
|
||||||
}
|
|
||||||
tag_start = tag_end = NULL;
|
|
||||||
}
|
|
||||||
else if (esc_end)
|
|
||||||
{
|
|
||||||
ts = malloc(esc_end - esc_start + 1);
|
|
||||||
if (ts)
|
|
||||||
{
|
|
||||||
const char *esc;
|
|
||||||
_str_ncpy(ts, esc_start, esc_end - esc_start);
|
|
||||||
ts[esc_end - esc_start] = 0;
|
|
||||||
esc = evas_textblock_escape_string_get(ts);
|
|
||||||
if (esc)
|
|
||||||
str = _str_append(str, esc, &str_len, &str_alloc);
|
|
||||||
free(ts);
|
|
||||||
}
|
|
||||||
esc_start = esc_end = NULL;
|
|
||||||
}
|
|
||||||
else if ((!*p) && (s))
|
|
||||||
{
|
|
||||||
ts = malloc(p - s + 1);
|
|
||||||
if (ts)
|
|
||||||
{
|
|
||||||
_str_ncpy(ts, s, p - s);
|
|
||||||
ts[p - s] = 0;
|
|
||||||
str = _str_append(str, ts, &str_len, &str_alloc);
|
|
||||||
free(ts);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!*p) break;
|
|
||||||
}
|
|
||||||
if (*p == '<')
|
|
||||||
{
|
|
||||||
if ((s) && (!esc_start))
|
|
||||||
{
|
|
||||||
tag_start = p;
|
|
||||||
tag_end = NULL;
|
|
||||||
ts = malloc(p - s + 1);
|
|
||||||
if (ts)
|
|
||||||
{
|
|
||||||
_str_ncpy(ts, s, p - s);
|
|
||||||
ts[p - s] = 0;
|
|
||||||
str = _str_append(str, ts, &str_len, &str_alloc);
|
|
||||||
free(ts);
|
|
||||||
}
|
|
||||||
s = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (*p == '>')
|
|
||||||
{
|
|
||||||
if (tag_start)
|
|
||||||
{
|
|
||||||
tag_end = p;
|
|
||||||
/* <br /> */
|
|
||||||
/* ^^^ */
|
|
||||||
if ((p - mkup > 1) && (p[-1] == '/')) p--;
|
|
||||||
s = p + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (*p == '&')
|
|
||||||
{
|
|
||||||
if ((s) && (!tag_start))
|
|
||||||
{
|
|
||||||
esc_start = p;
|
|
||||||
esc_end = NULL;
|
|
||||||
ts = malloc(p - s + 1);
|
|
||||||
if (ts)
|
|
||||||
{
|
|
||||||
_str_ncpy(ts, s, p - s);
|
|
||||||
ts[p - s] = 0;
|
|
||||||
str = _str_append(str, ts, &str_len, &str_alloc);
|
|
||||||
free(ts);
|
|
||||||
}
|
|
||||||
s = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (*p == ';')
|
|
||||||
{
|
|
||||||
if (esc_start)
|
|
||||||
{
|
|
||||||
esc_end = p + 1;
|
|
||||||
s = p + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
|
Loading…
Reference in New Issue