чување 4a8cbbd91529901f8b241ab23ee83abb302545cf
родитељ 1b15c4412e6d352c1910db702ffa49cd59b4da3e
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Wed, 16 Dec 2020 19:36:21 +0100
Fixed tag/paragraph start and implemented backslash escaping
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 4, додавања: 41(+), брисања: 31(-)
diff --git a/TODO b/TODO
@@ -14,5 +14,5 @@ Migration to C checklist
[ ] Add {lsdir}
[ ] Add title: processing
[ ] Update manpage
- [ ] Add backslash-escaping of blank lines for normal tags
+ [x] Add backslash-escaping of blank lines for normal tags
diff --git a/index.html b/index.html
@@ -38,7 +38,7 @@ site-desc: My first website in slweb
{main}
# Hello world
-This is an \_example_ of a statically generated HTML.
+This is an _example_ of a statically generated HTML.
{/main}
</pre>
@@ -103,7 +103,7 @@ this program. If not, see <https://www.gnu.org/licenses/>. </p>
<div id="git-log">
Previous commit:
-index.slw 0983a2a 2020-12-16 16:30:45 +0100 (Страхиња Радић) (HEAD -> master, origin/master, origin/HEAD)
+index.slw 1b15c44 2020-12-16 18:48:23 +0100 (Страхиња Радић) (HEAD -> wip-20201216, origin/wip-20201216)
</div><!--git-log-->
@@ -114,6 +114,6 @@ Generated by <a href="https://github.com/Strahinja/slweb">slweb</a>
</main>
-<p></p>
+
</body>
</html>
diff --git a/slweb.1.in b/slweb.1.in
@@ -349,10 +349,10 @@ will produce
.in +4
.sp
<tag>
-First paragraph</p>
+First paragraph
<p>Second paragraph
-</tag>
+</tag></p>
.in -4
.sp
.EE
diff --git a/slweb.c b/slweb.c
@@ -203,9 +203,6 @@ process_tag(uint8_t* token, FILE* output, BOOL end_tag)
}
else
{
- uint8_t* attr_id = u8_strchr(token, (ucs4_t)'#');
- uint8_t* attr_class = u8_strchr(token, (ucs4_t)'.');
-
fprintf(output, "<");
if (end_tag)
fprintf(output, "/");
@@ -286,7 +283,6 @@ int
process_link(uint8_t* link_text, uint8_t* link_id, KeyValue* links,
size_t links_count, FILE* output)
{
- KeyValue* plinks = links;
uint8_t* url = get_value(links, links_count, link_id);
fprintf(output, "<a href=\"%s\">%s</a>",
url ? (char*)url : "", link_text);
@@ -320,19 +316,18 @@ process_inline_image(uint8_t* image_text, uint8_t* image_url, FILE* output)
}
int
-process_line_start(USHORT* state, BOOL* first_line_in_doc,
+process_line_start(USHORT* state, BOOL first_line_in_doc,
BOOL previous_line_blank, BOOL processed_start_of_line,
BOOL read_yaml_macros_and_links, FILE* output,
uint8_t** token,
uint8_t** ptoken)
{
- if ((*first_line_in_doc || previous_line_blank)
+ if ((first_line_in_doc || previous_line_blank)
&& !processed_start_of_line
&& !(*state & (ST_PRE | ST_BLOCKQUOTE)))
{
if (!read_yaml_macros_and_links)
fprintf(output, "<p>");
- *first_line_in_doc = FALSE;
*state |= ST_PARA_OPEN;
}
return 0;
@@ -340,7 +335,7 @@ process_line_start(USHORT* state, BOOL* first_line_in_doc,
int
process_text_token(USHORT* state,
- BOOL* first_line_in_doc,
+ BOOL first_line_in_doc,
BOOL previous_line_blank,
BOOL processed_start_of_line,
BOOL read_yaml_macros_and_links,
@@ -425,9 +420,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
size_t line_len = 0;
uint8_t* token = NULL;
uint8_t* ptoken = NULL;
- size_t token_len = 0;
uint8_t* link_text = NULL;
- uint8_t* link_url = NULL;
KeyValue* pvars = NULL;
KeyValue* plinks = NULL;
USHORT state = ST_NONE;
@@ -456,6 +449,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
pbuffer = buffer;
pvars = *vars;
plinks = *links;
+ lineno = 0;
if (!read_yaml_macros_and_links)
{
@@ -629,7 +623,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
if (u8_strlen(pline) > 1 && *(pline+1) == '_')
{
/* Output existing text up to __ */
- process_text_token(&state, &first_line_in_doc,
+ process_text_token(&state, first_line_in_doc,
previous_line_blank,
processed_start_of_line,
read_yaml_macros_and_links,
@@ -650,7 +644,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
else
{
/* Output existing text up to _ */
- process_text_token(&state, &first_line_in_doc,
+ process_text_token(&state, first_line_in_doc,
previous_line_blank,
processed_start_of_line,
read_yaml_macros_and_links,
@@ -682,7 +676,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
if (u8_strlen(pline) > 1 && *(pline+1) == '*')
{
/* Output existing text up to * */
- process_text_token(&state, &first_line_in_doc,
+ process_text_token(&state, first_line_in_doc,
previous_line_blank,
processed_start_of_line,
read_yaml_macros_and_links,
@@ -703,7 +697,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
else
{
/* Output existing text up to * */
- process_text_token(&state, &first_line_in_doc,
+ process_text_token(&state, first_line_in_doc,
previous_line_blank,
processed_start_of_line,
read_yaml_macros_and_links,
@@ -755,7 +749,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
}
/* Output existing text up to { */
- process_text_token(&state, &first_line_in_doc,
+ process_text_token(&state, first_line_in_doc,
previous_line_blank,
processed_start_of_line,
read_yaml_macros_and_links,
@@ -877,15 +871,16 @@ slweb_parse(uint8_t* buffer, FILE* output,
break;
}
- /* Output existing text up to [ */
- process_text_token(&state, &first_line_in_doc,
- previous_line_blank,
- processed_start_of_line,
- read_yaml_macros_and_links,
- output,
- &token,
- &ptoken,
- TRUE);
+ if (*token)
+ /* Output existing text up to [ */
+ process_text_token(&state, first_line_in_doc,
+ previous_line_blank,
+ processed_start_of_line,
+ read_yaml_macros_and_links,
+ output,
+ &token,
+ &ptoken,
+ TRUE);
processed_start_of_line = TRUE;
state |= ST_LINK;
@@ -1010,6 +1005,20 @@ slweb_parse(uint8_t* buffer, FILE* output,
}
}
break;
+ case '\\':
+ /*
+ *if (state & (ST_PRE | ST_CODE | ST_LINK_SECOND_ARG))
+ *{
+ * *ptoken++ = *pline++;
+ * colno++;
+ * break;
+ *}
+ */
+
+ /* TODO: Cases? */
+ pline++;
+ colno++;
+ break;
default:
*ptoken++ = *pline++;
@@ -1041,7 +1050,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
}
else
{
- process_text_token(&state, &first_line_in_doc,
+ process_text_token(&state, first_line_in_doc,
previous_line_blank,
processed_start_of_line,
read_yaml_macros_and_links,
@@ -1088,6 +1097,7 @@ slweb_parse(uint8_t* buffer, FILE* output,
*token = '\0';
ptoken = token;
+ first_line_in_doc = FALSE;
if (line_len == 0)
previous_line_blank = TRUE;