slweb

Једноставни генератор статичких веб страна
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 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:
MTODO | 2+-
Mindex.html | 6+++---
Mslweb.1.in | 4++--
Mslweb.c | 60+++++++++++++++++++++++++++++++++++-------------------------
измењених датотека: 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 &lt;https://www.gnu.org/licenses/&gt;. </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;