From c5e94b1db232921a4c5eb7f5aa620055e76b3414 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Sun, 10 Jun 2018 02:24:07 +0200 Subject: Revert "make: disable pagination rules if <= 0 posts per page" This reverts commit cab17026f64ba78bfd9dcac6327607af8e396ebd. Poorly implemented :/ --- man/blogcfile.5.ronn | 6 ++--- src/blogc-make/rules.c | 30 +++------------------ tests/blogc-make/check_blogc_make.sh.in | 48 +++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 30 deletions(-) diff --git a/man/blogcfile.5.ronn b/man/blogcfile.5.ronn index bb1592e..2836bad 100644 --- a/man/blogcfile.5.ronn +++ b/man/blogcfile.5.ronn @@ -50,7 +50,7 @@ however these rules can be customized with the following settings, from the * `atom_posts_per_page` (default: `10`): Number of posts per page in the Atom feeds. If negative, all the posts are - included. If negative or `0`, the `atom` and `atom_tags` build rules are disabled. + included. If `0`, no posts are include. * `atom_prefix` (default: `atom`): The prefix of the generated Atom feeds. It is relative to the output @@ -100,8 +100,8 @@ however these rules can be customized with the following settings, from the * `posts_per_page` (default: `10`): Number of posts per page in the pagination pages. If negative, all the posts - are included. If negative or `0`, the `index` and `pagination` build rules - are disabled. + are included. If `0`, no posts are included. Also, if negative or `0`, the + `pagination` build rule is disabled. * `source_ext` (default: `.txt`): The extension of the source files. diff --git a/src/blogc-make/rules.c b/src/blogc-make/rules.c index 93f504c..aea9c0f 100644 --- a/src/blogc-make/rules.c +++ b/src/blogc-make/rules.c @@ -36,18 +36,6 @@ posts_ordering(bm_ctx_t *ctx, bc_trie_t *variables, const char *variable) } -static bool -posts_pagination_enabled(bm_ctx_t *ctx, const char *variable) -{ - if (ctx == NULL || ctx->settings == NULL || ctx->settings->settings == NULL) - return false; - - return 0 < strtol( - bc_trie_lookup(ctx->settings->settings, variable), - NULL, 10); // FIXME: improve -} - - static void posts_pagination(bm_ctx_t *ctx, bc_trie_t *variables, const char *variable) { @@ -73,9 +61,6 @@ index_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL) return NULL; - if (!posts_pagination_enabled(ctx, "posts_per_page")) - return NULL; - bc_slist_t *rv = NULL; const char *html_ext = bc_trie_lookup(ctx->settings->settings, "html_ext"); @@ -134,9 +119,6 @@ atom_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL) return NULL; - if (!posts_pagination_enabled(ctx, "atom_posts_per_page")) - return NULL; - bc_slist_t *rv = NULL; const char *atom_prefix = bc_trie_lookup(ctx->settings->settings, "atom_prefix"); @@ -191,9 +173,6 @@ atom_tags_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL || ctx->settings->tags == NULL) return NULL; - if (!posts_pagination_enabled(ctx, "atom_posts_per_page")) - return NULL; - bc_slist_t *rv = NULL; const char *atom_prefix = bc_trie_lookup(ctx->settings->settings, "atom_prefix"); @@ -255,13 +234,13 @@ pagination_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL) return NULL; - if (!posts_pagination_enabled(ctx, "posts_per_page")) - return NULL; - long num_posts = bc_slist_length(ctx->posts_fctx); long posts_per_page = strtol( bc_trie_lookup(ctx->settings->settings, "posts_per_page"), NULL, 10); // FIXME: improve + if (posts_per_page <= 0) + return NULL; + size_t pages = ceilf(((float) num_posts) / posts_per_page); const char *pagination_prefix = bc_trie_lookup(ctx->settings->settings, @@ -395,9 +374,6 @@ tags_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL || ctx->settings->tags == NULL) return NULL; - if (!posts_pagination_enabled(ctx, "posts_per_page")) - return NULL; - bc_slist_t *rv = NULL; const char *tag_prefix = bc_trie_lookup(ctx->settings->settings, "tag_prefix"); diff --git a/tests/blogc-make/check_blogc_make.sh.in b/tests/blogc-make/check_blogc_make.sh.in index 20cf1f7..001241a 100755 --- a/tests/blogc-make/check_blogc_make.sh.in +++ b/tests/blogc-make/check_blogc_make.sh.in @@ -194,6 +194,7 @@ post11 EOF ${TESTS_ENVIRONMENT} @abs_top_builddir@/blogc-make -f "${TEMP}/proj/blogcfile" 2>&1 | tee "${TEMP}/output.txt" +grep "_build/index\\.html" "${TEMP}/output.txt" grep "_build/atom\\.xml" "${TEMP}/output.txt" grep "_build/post/post01/index\\.html" "${TEMP}/output.txt" grep "_build/post/post02/index\\.html" "${TEMP}/output.txt" @@ -209,6 +210,34 @@ grep "_build/post/post11/index\\.html" "${TEMP}/output.txt" rm "${TEMP}/output.txt" +cat > "${TEMP}/expected-index.html" < "${TEMP}/expected-atom.xml" < @@ -421,6 +450,7 @@ EOF ${TESTS_ENVIRONMENT} @abs_top_builddir@/blogc-make -f "${TEMP}/proj/blogcfile" 2>&1 | tee "${TEMP}/output.txt" grep "_build/index\\.html" "${TEMP}/output.txt" +grep "_build/atom\\.xml" "${TEMP}/output.txt" grep "_build/post/post01/index\\.html" "${TEMP}/output.txt" grep "_build/post/post02/index\\.html" "${TEMP}/output.txt" grep "_build/post/post03/index\\.html" "${TEMP}/output.txt" @@ -461,6 +491,24 @@ Listing: Post 02 - Sep 02, 2016, 12:00 AM GMT EOF diff -uN "${TEMP}/proj/_build/index.html" "${TEMP}/expected-index.html" +cat > "${TEMP}/expected-atom.xml" < + + Lol's Website + /atom.xml + + + + + Lol + author@example.com + + WAT?! + + +EOF +diff -uN "${TEMP}/proj/_build/atom.xml" "${TEMP}/expected-atom.xml" + cat > "${TEMP}/expected-post-post01.html" <