summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnastasios Grammenos <anastasios.grammenos@noris.gr>2022-10-23 19:20:39 +0300
committerAnastasios Grammenos <anastasios.grammenos@noris.gr>2022-10-23 19:20:39 +0300
commit7c5af1b2768247984a08569b35e47ff927e70389 (patch)
tree04ebe56d46bc4511a5549b0eda2a136d682185ea
parent7b7240d50dd5e418bc17beff48aa5681b398b980 (diff)
downloadfoodtools-7c5af1b2768247984a08569b35e47ff927e70389.tar.gz
foodtools-7c5af1b2768247984a08569b35e47ff927e70389.tar.bz2
foodtools-7c5af1b2768247984a08569b35e47ff927e70389.zip
Start work for step evaluation
-rw-r--r--src/eval.c27
-rw-r--r--src/types.c9
2 files changed, 32 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c
index d6c8933..98ad3bf 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -21,6 +21,31 @@ create_hash(recipe * r)
sha1digest(NULL, r->sha1, (uint8_t *)data, strlen(data));
}
+int
+eval_step(step * s)
+{
+ s->duration = strdup(s->inst);
+ s->result = strdup(s->inst);
+ return 0;
+}
+
+int
+resolve_steps(recipe * r)
+{
+ if (!r) return 1;
+
+ int rc = 0;
+ for (int i=0; i < r->sn; i++) {
+ rc += eval_step(r->s[i]);
+ }
+
+ if (rc > 0) {
+ return 1;
+ }
+
+ return 0;
+}
+
recipe *
eval(recipe * r)
{
@@ -33,6 +58,8 @@ eval(recipe * r)
copy_subrecipes(_r, r, 0 /* shallow copy off */);
create_hash(_r);
+
+ resolve_steps(_r);
return _r;
}
diff --git a/src/types.c b/src/types.c
index 9314f8d..68c402c 100644
--- a/src/types.c
+++ b/src/types.c
@@ -72,7 +72,7 @@ new_step(recipe * r)
r->s[r->sn] = (step *)malloc(sizeof(step));
if (!r->s[r->sn])
- die("Couldn't allocate memory for item");
+ die("Couldn't allocate memory for step");
r->s[r->sn]->inst = NULL;
r->s[r->sn]->duration = NULL;
r->s[r->sn]->result = NULL;
@@ -220,8 +220,8 @@ tojson(recipe * r)
printf(",\"steps\":[");
int i = 0;
for (; i < r->sn - 1; i++)
- printf("\"%s\",", r->s[i]->inst);
- printf("\"%s\"]", r->s[i]->inst);
+ printf("{\"inst\":\"%s\",\"duration\":\"%s\",\"result\":\"%s\",\"type\":\"%s\"},", r->s[i]->inst, r->s[i]->duration, r->s[i]->result, r->s[i]->type == 0 ? "prep" : (r->s[i]->type == 1 ? "cook" : "serve") );
+ printf("{\"inst\":\"%s\",\"duration\":\"%s\",\"result\":\"%s\",\"type\":\"%s\"}]", r->s[i]->inst, r->s[i]->duration, r->s[i]->result, r->s[i]->type == 0 ? "prep" : (r->s[i]->type == 1 ? "cook" : "serve") );
}
printf("}");
}
@@ -421,7 +421,8 @@ distinct_sum_items(recipe * dst, recipe * src)
if (!strcmp(dst->i[n]->qty, "")
&& !strcmp(src->i[i]->qty, "")) {
// noop
- } else if (strlen(dst->i[n]->qty) + strlen(src->i[i]->qty) != 0) {
+ } else if (!strcmp(dst->i[n]->qty, "")
+ || !strcmp(src->i[i]->qty, "")) {
char tmp[FOOD_MAX_ARRAY] = "";
strcat(tmp, dst->i[n]->qty);
strcat(tmp, src->i[i]->qty);