aboutsummaryrefslogtreecommitdiffstats
path: root/src/blogc/template-parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blogc/template-parser.c')
-rw-r--r--src/blogc/template-parser.c106
1 files changed, 53 insertions, 53 deletions
diff --git a/src/blogc/template-parser.c b/src/blogc/template-parser.c
index b085a33..f73cd53 100644
--- a/src/blogc/template-parser.c
+++ b/src/blogc/template-parser.c
@@ -9,10 +9,10 @@
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
+#include <squareball.h>
+#include "error.h"
#include "template-parser.h"
-#include "../common/error.h"
-#include "../common/utils.h"
typedef enum {
@@ -41,8 +41,8 @@ typedef enum {
} blogc_template_parser_state_t;
-bc_slist_t*
-blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
+sb_slist_t*
+blogc_template_parse(const char *src, size_t src_len, sb_error_t **err)
{
if (err == NULL || *err != NULL)
return NULL;
@@ -63,7 +63,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
bool foreach_open = false;
bool block_foreach_open = false;
- bc_slist_t *ast = NULL;
+ sb_slist_t *ast = NULL;
blogc_template_node_t *node = NULL;
/*
@@ -94,21 +94,21 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
case TEMPLATE_START:
if (last) {
- node = bc_malloc(sizeof(blogc_template_node_t));
+ node = sb_malloc(sizeof(blogc_template_node_t));
node->type = type;
if (lstrip_next) {
- tmp = bc_strndup(src + start, src_len - start);
- node->data[0] = bc_strdup(bc_str_lstrip(tmp));
+ tmp = sb_strndup(src + start, src_len - start);
+ node->data[0] = sb_strdup(sb_str_lstrip(tmp));
free(tmp);
tmp = NULL;
lstrip_next = false;
}
else {
- node->data[0] = bc_strndup(src + start, src_len - start);
+ node->data[0] = sb_strndup(src + start, src_len - start);
}
node->op = 0;
node->data[1] = NULL;
- ast = bc_slist_append(ast, node);
+ ast = sb_slist_append(ast, node);
previous = node;
node = NULL;
}
@@ -125,21 +125,21 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
else
state = TEMPLATE_VARIABLE_START;
if (end > start) {
- node = bc_malloc(sizeof(blogc_template_node_t));
+ node = sb_malloc(sizeof(blogc_template_node_t));
node->type = type;
if (lstrip_next) {
- tmp = bc_strndup(src + start, end - start);
- node->data[0] = bc_strdup(bc_str_lstrip(tmp));
+ tmp = sb_strndup(src + start, end - start);
+ node->data[0] = sb_strdup(sb_str_lstrip(tmp));
free(tmp);
tmp = NULL;
lstrip_next = false;
}
else {
- node->data[0] = bc_strndup(src + start, end - start);
+ node->data[0] = sb_strndup(src + start, end - start);
}
node->op = 0;
node->data[1] = NULL;
- ast = bc_slist_append(ast, node);
+ ast = sb_slist_append(ast, node);
previous = node;
node = NULL;
}
@@ -153,7 +153,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
if ((previous != NULL) &&
(previous->type == BLOGC_TEMPLATE_NODE_CONTENT))
{
- previous->data[0] = bc_str_rstrip(previous->data[0]); // does not need copy
+ previous->data[0] = sb_str_rstrip(previous->data[0]); // does not need copy
}
state = TEMPLATE_BLOCK_START;
break;
@@ -169,13 +169,13 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
break;
}
if (c == '-') {
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid statement syntax. Duplicated whitespace "
"cleaner before statement.");
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid statement syntax. Must begin with lowercase letter.");
break;
@@ -195,7 +195,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
block_foreach_open = foreach_open;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER,
src, src_len, current, "Blocks can't be nested.");
break;
}
@@ -204,14 +204,14 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
{
if (block_open) {
if (if_count != block_if_count) {
- *err = bc_error_new_printf(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf(BLOGC_ERROR_TEMPLATE_PARSER,
"%d open 'if', 'ifdef' and/or 'ifndef' statements "
"were not closed inside a '%s' block!",
if_count - block_if_count, block_type);
break;
}
if (!block_foreach_open && foreach_open) {
- *err = bc_error_new_printf(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf(BLOGC_ERROR_TEMPLATE_PARSER,
"An open 'foreach' statement was not closed "
"inside a '%s' block!", block_type);
break;
@@ -221,7 +221,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
block_open = false;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER,
src, src_len, current,
"'endblock' statement without an open 'block' statement.");
break;
@@ -268,13 +268,13 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
else_open = true;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER,
src, src_len, current,
"More than one 'else' statement for an open 'if', "
"'ifdef' or 'ifndef' statement.");
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER,
src, src_len, current,
"'else' statement without an open 'if', 'ifdef' or "
"'ifndef' statement.");
@@ -292,7 +292,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
else_open = false;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER,
src, src_len, current,
"'endif' statement without an open 'if', 'ifdef' or "
"'ifndef' statement.");
@@ -308,7 +308,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
foreach_open = true;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER,
src, src_len, current, "'foreach' statements can't "
"be nested.");
break;
@@ -324,14 +324,14 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
foreach_open = false;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER,
src, src_len, current,
"'endforeach' statement without an open 'foreach' "
"statement.");
break;
}
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid statement type: Allowed types are: 'block', "
"'endblock', 'if', 'ifdef', 'ifndef', 'else', 'endif', "
@@ -346,7 +346,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
start = current;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid block syntax. Must begin with lowercase letter.");
break;
@@ -380,7 +380,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
break;
}
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid block type. Allowed types are: 'entry', 'listing' "
"and 'listing_once'.");
@@ -394,7 +394,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
start = current;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid variable name. Must begin with uppercase letter.");
break;
@@ -410,7 +410,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
state = TEMPLATE_BLOCK_END_WHITESPACE_CLEANER;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid variable name. Must be uppercase letter, number "
"or '_'.");
@@ -446,7 +446,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
}
op_start = 0;
op_end = 0;
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid 'if' operand. Must be double-quoted static "
"string or variable.");
@@ -476,7 +476,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
start = current;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid foreach variable name. Must begin with uppercase "
"letter.");
@@ -490,7 +490,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
state = TEMPLATE_BLOCK_END_WHITESPACE_CLEANER;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid foreach variable name. Must be uppercase letter, "
"number or '_'.");
@@ -512,13 +512,13 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
break;
}
if (c == '-') {
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid statement syntax. Duplicated whitespace "
"cleaner after statement.");
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid statement syntax. Must end with '%%}'.");
break;
@@ -532,7 +532,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
start = current;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid variable name. Must begin with uppercase letter.");
break;
@@ -550,7 +550,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
state = TEMPLATE_CLOSE_BRACKET;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid variable name. Must be uppercase letter, number "
"or '_'.");
@@ -563,7 +563,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
state = TEMPLATE_CLOSE_BRACKET;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid statement syntax. Must end with '}}'.");
break;
@@ -589,7 +589,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
tmp_op = BLOGC_TEMPLATE_OP_NEQ;
}
if (tmp_op == 0) {
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER,
src, src_len, op_start,
"Invalid 'if' operator. Must be '<', '>', "
"'<=', '>=', '==' or '!='.");
@@ -600,21 +600,21 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
op_start = 0;
op_end = 0;
}
- node = bc_malloc(sizeof(blogc_template_node_t));
+ node = sb_malloc(sizeof(blogc_template_node_t));
node->type = type;
node->op = tmp_op;
node->data[0] = NULL;
node->data[1] = NULL;
if (end > start)
- node->data[0] = bc_strndup(src + start, end - start);
+ node->data[0] = sb_strndup(src + start, end - start);
if (end2 > start2) {
- node->data[1] = bc_strndup(src + start2, end2 - start2);
+ node->data[1] = sb_strndup(src + start2, end2 - start2);
start2 = 0;
end2 = 0;
}
if (type == BLOGC_TEMPLATE_NODE_BLOCK)
block_type = node->data[0];
- ast = bc_slist_append(ast, node);
+ ast = sb_slist_append(ast, node);
previous = node;
node = NULL;
state = TEMPLATE_START;
@@ -622,7 +622,7 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
start = current + 1;
break;
}
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src,
src_len, current,
"Invalid statement syntax. Must end with '}'.");
break;
@@ -637,17 +637,17 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
if (*err == NULL) {
if (state == TEMPLATE_BLOCK_IF_STRING_OPERAND)
- *err = bc_error_parser(BLOGC_ERROR_TEMPLATE_PARSER, src, src_len,
+ *err = sb_error_new_printf_parser(BLOGC_ERROR_TEMPLATE_PARSER, src, src_len,
start2, "Found an open double-quoted string.");
else if (if_count != 0)
- *err = bc_error_new_printf(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new_printf(BLOGC_ERROR_TEMPLATE_PARSER,
"%d open 'if', 'ifdef' and/or 'ifndef' statements were not closed!",
if_count);
else if (block_open)
- *err = bc_error_new(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new(BLOGC_ERROR_TEMPLATE_PARSER,
"An open block was not closed!");
else if (foreach_open)
- *err = bc_error_new(BLOGC_ERROR_TEMPLATE_PARSER,
+ *err = sb_error_new(BLOGC_ERROR_TEMPLATE_PARSER,
"An open 'foreach' statement was not closed!");
}
@@ -665,9 +665,9 @@ blogc_template_parse(const char *src, size_t src_len, bc_error_t **err)
void
-blogc_template_free_ast(bc_slist_t *ast)
+blogc_template_free_ast(sb_slist_t *ast)
{
- for (bc_slist_t *tmp = ast; tmp != NULL; tmp = tmp->next) {
+ for (sb_slist_t *tmp = ast; tmp != NULL; tmp = tmp->next) {
blogc_template_node_t *data = tmp->data;
if (data == NULL)
continue;
@@ -675,5 +675,5 @@ blogc_template_free_ast(bc_slist_t *ast)
free(data->data[1]);
free(data);
}
- bc_slist_free(ast);
+ sb_slist_free(ast);
}