чување 401a550ec9451f0ad3d2f75c67dacbcf9c39b133
родитељ 796d1677fd8cb169387d75d0a5a74dd2b1480cc0
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Tue, 10 Aug 2021 09:19:31 +0200
Distinguish between [(Some text)][somelink] and [Some (text)][somelink]
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
| M | TODO | | | 2 | +- |
| M | index.html | | | 2 | +- |
| M | slweb.c | | | 72 | ++++++++++++++++++++++++++++++++---------------------------------------- |
измењених датотека: 3, додавања: 34(+), брисања: 42(-)
diff --git a/TODO b/TODO
@@ -5,7 +5,7 @@
[x] Add ~~ ->
- [ ] Distinguish between [(Some text)][somelink] and
+ [x] Distinguish between [(Some text)][somelink] and
[Some (text)][somelink] - the latter should not output
<span></span>, just retain the parentheses instead
diff --git a/index.html b/index.html
@@ -153,7 +153,7 @@ this program. If not, see <<a href="https://www.gnu.org/licenses">https://www
<div id="git-log">
Previous commit:
-index.slw 0e0f560 2021-08-09 21:54:48 +0200 (Страхиња Радић) (HEAD -> master, origin/master, origin/HEAD)
+index.slw 796d167 2021-08-10 09:16:12 +0200 (Страхиња Радић) (HEAD -> master)
</div><!--git-log-->
diff --git a/slweb.c b/slweb.c
@@ -2377,17 +2377,17 @@ slweb_parse(uint8_t* buffer, FILE* output, BOOL body_only,
if (ANY(state, ST_INLINE_FOOTNOTE | ST_HEADING
| ST_FOOTNOTE_TEXT | ST_LINK))
{
- uint8_t* tag = (uint8_t*)" ";
- size_t tag_len = u8_strlen(tag);
+ uint8_t* entity = (uint8_t*)" ";
+ size_t entity_len = u8_strlen(entity);
size_t token_len = 0;
*ptoken = 0;
token_len = u8_strlen(token);
- if (token_len + tag_len < BUFSIZE)
+ if (token_len + entity_len < BUFSIZE)
{
- u8_strncat(token, tag, BUFSIZE-token_len-1);
- ptoken += tag_len;
+ u8_strncat(token, entity, BUFSIZE-token_len-1);
+ ptoken += entity_len;
}
}
else
@@ -3385,7 +3385,6 @@ slweb_parse(uint8_t* buffer, FILE* output, BOOL body_only,
colno += 2;
break;
}
-
if (*token)
{
/* Output existing text up to [ */
@@ -3403,16 +3402,9 @@ slweb_parse(uint8_t* buffer, FILE* output, BOOL body_only,
*link_macro = 0;
pline++;
colno++;
- break;
- case '(':
- if (ANY(state, ST_CODE | ST_DISPLAY_FORMULA | ST_FORMULA
- | ST_FOOTNOTE_TEXT | ST_HEADING
- | ST_INLINE_FOOTNOTE | ST_LINK_SECOND_ARG_END
- | ST_MACRO_BODY | ST_PRE))
- CHECKCOPY(token, ptoken, token_size, pline)
- else if (state & ST_LINK)
- {
+ if (*pline == '(')
+ {
uint8_t* tag = (uint8_t*)"<span>";
size_t tag_len = u8_strlen(tag);
size_t token_len = 0;
@@ -3428,10 +3420,9 @@ slweb_parse(uint8_t* buffer, FILE* output, BOOL body_only,
state |= ST_LINK_SPAN;
pline++;
- }
- else
- CHECKCOPY(token, ptoken, token_size, pline)
- colno++;
+ colno++;
+ }
+
break;
case ')':
@@ -3443,27 +3434,28 @@ slweb_parse(uint8_t* buffer, FILE* output, BOOL body_only,
break;
}
- if (state & ST_LINK_SPAN)
- {
- if (u8_strlen(pline) > 1
- && *(pline+1) == ']')
- {
- uint8_t* tag = (uint8_t*)"</span>";
- size_t tag_len = u8_strlen(tag);
- size_t token_len = 0;
-
- *ptoken = 0;
- token_len = u8_strlen(token);
-
- if (token_len + tag_len + 1 < BUFSIZE)
- {
- u8_strncat(token, tag, BUFSIZE-token_len-1);
- ptoken += tag_len;
- }
- state &= ~ST_LINK_SPAN;
- }
- pline++;
- }
+ pline_len = u8_strlen(pline);
+
+ if (state & ST_LINK_SPAN && pline_len > 1
+ && *(pline+1) == ']')
+ {
+ uint8_t* tag = (uint8_t*)"</span>";
+ size_t tag_len = u8_strlen(tag);
+ size_t token_len = 0;
+
+ *ptoken = 0;
+ token_len = u8_strlen(token);
+
+ if (token_len + tag_len + 1 < BUFSIZE)
+ {
+ u8_strncat(token, tag, BUFSIZE-token_len-1);
+ ptoken += tag_len;
+ }
+ state &= ~ST_LINK_SPAN;
+ /*pline += 2;*/
+ pline++;
+ colno++;
+ }
else if (ANY(state, ST_LINK_SECOND_ARG | ST_IMAGE_SECOND_ARG))
{
*ptoken = 0;