slweb

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

чување 90d006dfdc6c499479adf904c95bb3e0dea57246
родитељ 26a4ae3d0e236c4ea56d1392956b6043d8939183
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Fri,  7 Apr 2023 23:07:50 +0200

slweb.c: Fix lists not closing at the end of file (add explicit process_line_start when processing links; examples/lists: New example

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Aexamples/lists/all.do | 1+
Aexamples/lists/index.slw | 17+++++++++++++++++
Mslweb.c | 55++++++++++++++++++++++++++++++++-----------------------
измењених датотека: 3, додавања: 50(+), брисања: 23(-)

diff --git a/examples/lists/all.do b/examples/lists/all.do @@ -0,0 +1 @@ +redo-ifchange index.html diff --git a/examples/lists/index.slw b/examples/lists/index.slw @@ -0,0 +1,17 @@ +1. Apples +2. Oranges +3. Bananas +4. Pineapples +5. Pears +6. Plums +7. Peaches +8. Grapes 123. item stability test +9. Lions +10. Tigers +11. Bears + +``` +1. Oh +2. my +3. ! +``` diff --git a/slweb.c b/slweb.c @@ -2239,7 +2239,8 @@ process_image(FILE* output, const u8* image_text, const u8* image_file_prefix, int process_line_start(FILE* output, const u8* line, const u8* link_prefix, const int first_line_in_doc, const int previous_line_blank, - const int read_yaml_macros_and_links, const int list_para) + const int read_yaml_macros_and_links, const int list_para, + const int new_para_ok) { if ((first_line_in_doc || previous_line_blank) && !(ANY(state, ST_BLOCKQUOTE | ST_PRE))) @@ -2277,7 +2278,9 @@ process_line_start(FILE* output, const u8* line, const u8* link_prefix, state &= ~(ST_FOOTNOTE_TEXT | ST_PARA_OPEN); } } - if (!ANY(state, ST_TABLE | ST_TABLE_HEADER | ST_TABLE_LINE)) + if (new_para_ok + && !ANY(state, + ST_TABLE | ST_TABLE_HEADER | ST_TABLE_LINE)) { if (!read_yaml_macros_and_links) { @@ -2295,14 +2298,15 @@ process_text_token(FILE* output, const u8* line, const u8* link_prefix, const int first_line_in_doc, const int previous_line_blank, const int processed_start_of_line, const int read_yaml_macros_and_links, const int list_para, u8** token, u8** ptoken, size_t* token_size, - const int add_enclosing_paragraph) + const int add_enclosing_paragraph, const int new_para_ok) { if (!(IN(state, ST_YAML))) { if (add_enclosing_paragraph && !processed_start_of_line) process_line_start(output, line, link_prefix, first_line_in_doc, previous_line_blank, - read_yaml_macros_and_links, list_para); + read_yaml_macros_and_links, list_para, + new_para_ok); **ptoken = 0; if (**token && !read_yaml_macros_and_links && !(IN(state, ST_MACRO_BODY))) @@ -2992,7 +2996,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -3032,7 +3036,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -3073,7 +3077,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -3145,7 +3149,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -3251,7 +3255,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -3293,7 +3297,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -3373,7 +3377,7 @@ do_line: { process_line_start(output, line, link_prefix, first_line_in_doc, previous_line_blank, - read_yaml_macros_and_links, list_para); + read_yaml_macros_and_links, list_para, 1); /* Ignore abbreviations (for now) */ pline = NULL; @@ -3445,7 +3449,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -3488,7 +3492,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -3537,7 +3541,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, &token, - &ptoken, &token_size, 1); + &ptoken, &token_size, 1, 1); processed_start_of_line = 1; while (*pline == ' ' || *pline == '\t') { @@ -3628,7 +3632,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, &token, - &ptoken, &token_size, 0); + &ptoken, &token_size, 0, 1); processed_start_of_line = 1; } @@ -3760,7 +3764,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); processed_start_of_line = 1; if (!read_yaml_macros_and_links @@ -4016,7 +4020,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, &token, - &ptoken, &token_size, 0); + &ptoken, &token_size, 0, 1); processed_start_of_line = 1; RESET_TOKEN(token, ptoken, token_size); @@ -4092,7 +4096,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); } processed_start_of_line = 1; @@ -4111,7 +4115,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, &token, - &ptoken, &token_size, 1); + &ptoken, &token_size, 1, 1); } processed_start_of_line = 1; @@ -4312,6 +4316,11 @@ do_line: switch (*(pline + 1)) { case ':': + process_line_start(output, line, link_prefix, + first_line_in_doc, previous_line_blank, + read_yaml_macros_and_links, list_para, + 0); + links_count++; if (!links) @@ -4399,7 +4408,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, &token, - &ptoken, &token_size, 1); + &ptoken, &token_size, 1, 1); processed_start_of_line = 1; RESET_TOKEN(token, ptoken, token_size); @@ -4466,7 +4475,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); } processed_start_of_line = 1; @@ -4502,7 +4511,7 @@ do_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); } processed_start_of_line = 1; @@ -4779,7 +4788,7 @@ done_line: first_line_in_doc, previous_line_blank, processed_start_of_line, read_yaml_macros_and_links, list_para, - &token, &ptoken, &token_size, 1); + &token, &ptoken, &token_size, 1, 1); } if (!ANY(state,