diff options
-rw-r--r-- | src/source-parser.c | 57 | ||||
-rw-r--r-- | tests/check_loader.c | 2 | ||||
-rw-r--r-- | tests/check_source_parser.c | 89 |
3 files changed, 8 insertions, 140 deletions
diff --git a/src/source-parser.c b/src/source-parser.c index 9e1f01d..f0fca29 100644 --- a/src/source-parser.c +++ b/src/source-parser.c @@ -27,9 +27,6 @@ typedef enum { SOURCE_SEPARATOR, SOURCE_CONTENT_START, SOURCE_CONTENT, - SOURCE_EXCERPT_SEPARATOR, - SOURCE_CONTENT2_START, - SOURCE_CONTENT2, } blogc_source_parser_state_t; @@ -44,7 +41,6 @@ blogc_source_parse(const char *src, size_t src_len, blogc_error_t **err) char *key = NULL; char *tmp = NULL; - char *tmp2 = NULL; b_trie_t *rv = b_trie_new(free); blogc_source_parser_state_t state = SOURCE_START; @@ -149,53 +145,10 @@ blogc_source_parse(const char *src, size_t src_len, blogc_error_t **err) break; case SOURCE_CONTENT: - if (c == '.') { - state = SOURCE_EXCERPT_SEPARATOR; - tmp = b_strndup(src + start, current - start); - b_trie_insert(rv, "EXCERPT", blogc_content_parse(tmp)); - free(tmp); - tmp = NULL; - break; - } if (current == (src_len - 1)) { tmp = b_strndup(src + start, src_len - start); - b_trie_insert(rv, "EXCERPT", blogc_content_parse(tmp)); - free(tmp); - tmp = NULL; - } - break; - - case SOURCE_EXCERPT_SEPARATOR: - if (c == '.') - break; - if (c == '\n' || c == '\r') { - state = SOURCE_CONTENT2_START; - break; - } - *err = blogc_error_parser(BLOGC_ERROR_SOURCE_PARSER, src, src_len, - current, - "Invalid excerpt separator. Must be more than one '.' characters."); - break; - - case SOURCE_CONTENT2_START: - start = current; - state = SOURCE_CONTENT2; - break; - - case SOURCE_CONTENT2: - if (current == (src_len - 1)) { - tmp = b_strndup(src + start, src_len - start); - tmp2 = b_strdup_printf("%s\n%s", - b_trie_lookup(rv, "EXCERPT"), tmp); - free(tmp); - tmp = NULL; - b_trie_insert(rv, "CONTENT", blogc_content_parse(tmp2)); - free(tmp2); - tmp2 = NULL; - } - if (c == '.') { - state = SOURCE_EXCERPT_SEPARATOR; - break; + b_trie_insert(rv, "RAW_CONTENT", tmp); + b_trie_insert(rv, "CONTENT", blogc_content_parse(tmp)); } break; } @@ -206,9 +159,6 @@ blogc_source_parse(const char *src, size_t src_len, blogc_error_t **err) current++; } - if (b_trie_lookup(rv, "CONTENT") == NULL) - b_trie_insert(rv, "CONTENT", b_strdup(b_trie_lookup(rv, "EXCERPT"))); - if (*err == NULL && b_trie_size(rv) == 0) { // ok, nothing found in the config trie, but no error set either. @@ -237,9 +187,6 @@ blogc_source_parse(const char *src, size_t src_len, blogc_error_t **err) case SOURCE_SEPARATOR: case SOURCE_CONTENT_START: case SOURCE_CONTENT: - case SOURCE_EXCERPT_SEPARATOR: - case SOURCE_CONTENT2_START: - case SOURCE_CONTENT2: break; // won't happen, and if even happen, shouldn't be fatal } } diff --git a/tests/check_loader.c b/tests/check_loader.c index 2d16dba..865d598 100644 --- a/tests/check_loader.c +++ b/tests/check_loader.c @@ -117,7 +117,7 @@ test_source_parse_from_file(void **state) assert_string_equal(b_trie_lookup(t, "ASD"), "123"); assert_string_equal(b_trie_lookup(t, "FILENAME"), "bola"); assert_string_equal(b_trie_lookup(t, "CONTENT"), "<p>bola</p>\n"); - assert_string_equal(b_trie_lookup(t, "EXCERPT"), "<p>bola</p>\n"); + assert_string_equal(b_trie_lookup(t, "RAW_CONTENT"), "bola"); b_trie_free(t); } diff --git a/tests/check_source_parser.c b/tests/check_source_parser.c index c33b4c1..0cec364 100644 --- a/tests/check_source_parser.c +++ b/tests/check_source_parser.c @@ -40,42 +40,10 @@ test_source_parse(void **state) assert_string_equal(b_trie_lookup(source, "CONTENT"), "<h1>This is a test</h1>\n" "<p>bola</p>\n"); - assert_string_equal(b_trie_lookup(source, "EXCERPT"), - "<h1>This is a test</h1>\n" - "<p>bola</p>\n"); - b_trie_free(source); -} - - -static void -test_source_parse_with_excerpt(void **state) -{ - const char *a = - "VAR1: asd asd\n" - "VAR2: 123chunda\n" - "----------\n" + assert_string_equal(b_trie_lookup(source, "RAW_CONTENT"), "# This is a test\n" "\n" - "bola\n" - "\n" - "...\n" - "guda\n" - "bola\n"; - blogc_error_t *err = NULL; - b_trie_t *source = blogc_source_parse(a, strlen(a), &err); - assert_null(err); - assert_non_null(source); - assert_int_equal(b_trie_size(source), 4); - assert_string_equal(b_trie_lookup(source, "VAR1"), "asd asd"); - assert_string_equal(b_trie_lookup(source, "VAR2"), "123chunda"); - assert_string_equal(b_trie_lookup(source, "CONTENT"), - "<h1>This is a test</h1>\n" - "<p>bola</p>\n" - "<p>guda\n" - "bola</p>\n"); - assert_string_equal(b_trie_lookup(source, "EXCERPT"), - "<h1>This is a test</h1>\n" - "<p>bola</p>\n"); + "bola\n"); b_trie_free(source); } @@ -102,37 +70,10 @@ test_source_parse_with_spaces(void **state) assert_string_equal(b_trie_lookup(source, "CONTENT"), "<h1>This is a test</h1>\n" "<p>bola</p>\n"); - assert_string_equal(b_trie_lookup(source, "EXCERPT"), - "<h1>This is a test</h1>\n" - "<p>bola</p>\n"); - b_trie_free(source); -} - - -static void -test_source_parse_with_spaces_and_excerpt(void **state) -{ - const char *a = - "\n \n" - "VAR1: chunda \t \n" - "\n\n" - "BOLA: guda\n" - "----------\n" + assert_string_equal(b_trie_lookup(source, "RAW_CONTENT"), "# This is a test\n" - "..\n" - "bola\n"; - blogc_error_t *err = NULL; - b_trie_t *source = blogc_source_parse(a, strlen(a), &err); - assert_null(err); - assert_non_null(source); - assert_int_equal(b_trie_size(source), 4); - assert_string_equal(b_trie_lookup(source, "VAR1"), "chunda"); - assert_string_equal(b_trie_lookup(source, "BOLA"), "guda"); - assert_string_equal(b_trie_lookup(source, "CONTENT"), - "<h1>This is a test</h1>\n" - "<p>bola</p>\n"); - assert_string_equal(b_trie_lookup(source, "EXCERPT"), - "<h1>This is a test</h1>\n"); + "\n" + "bola\n"); b_trie_free(source); } @@ -434,31 +375,12 @@ test_source_parse_invalid_separator(void **state) } -static void -test_source_parse_invalid_excerpt_separator(void **state) -{ - const char *a = "BOLA: asd\n---\nbola\n...#"; - blogc_error_t *err = NULL; - b_trie_t *source = blogc_source_parse(a, strlen(a), &err); - assert_null(source); - assert_non_null(err); - assert_int_equal(err->type, BLOGC_ERROR_SOURCE_PARSER); - assert_string_equal(err->msg, - "Invalid excerpt separator. Must be more than one '.' characters.\n" - "Error occurred near to '#'"); - blogc_error_free(err); - b_trie_free(source); -} - - int main(void) { const UnitTest tests[] = { unit_test(test_source_parse), - unit_test(test_source_parse_with_excerpt), unit_test(test_source_parse_with_spaces), - unit_test(test_source_parse_with_spaces_and_excerpt), unit_test(test_source_parse_config_empty), unit_test(test_source_parse_config_invalid_key), unit_test(test_source_parse_config_no_key), @@ -477,7 +399,6 @@ main(void) unit_test(test_source_parse_config_reserved_name10), unit_test(test_source_parse_config_value_no_line_ending), unit_test(test_source_parse_invalid_separator), - unit_test(test_source_parse_invalid_excerpt_separator), }; return run_tests(tests); } |