diff --git a/src/process.c b/src/process.c index 993e815..a548afe 100644 --- a/src/process.c +++ b/src/process.c @@ -5,32 +5,40 @@ #include "syntax.h" #include "process.h" -bool replace(tSyntaxElement* tree, tProcessingData* pdata) { +bool replace(tSyntaxElement* tree, tProcessingData* pd) { + if (strcmp(tree->content.string, pd->data.replace.replacethis) == 0) { + + free(tree->content.none); + + tSyntaxElement* clone = se_clone_no_next(pd->data.replace.replacewiththis, tree); + tree->content = clone->content; + tree->type = clone->type; + + free(clone); + + return true; + } else + return false; +} + +void process_mod(tSyntaxElement* tree, tProcessingData* pdata) { tProcessingData* pd = pdata; - bool didreplace = false; - while (1) { if (pd->data.replace.replacethis == NULL) break; - if (tree->type == TOKEN) - - if (strcmp(tree->content.string, pd->data.replace.replacethis) == 0) { - - didreplace = true; - - free(tree->content.none); - - tSyntaxElement* clone = se_clone_no_next(pd->data.replace.replacewiththis, tree); - tree->content = clone->content; - tree->type = clone->type; - - free(clone); - + if (tree->type == TOKEN) { + switch (pd->type) { + case REPLACE: + replace(tree,pd); + break; + case FUNCTION: + break; } + } if (pd->prev != NULL) pd = pd->prev; @@ -39,8 +47,6 @@ bool replace(tSyntaxElement* tree, tProcessingData* pdata) { } - return didreplace; - } bool process_find(tSyntaxElement* tree, tProcessingData** p_pdata) { @@ -144,16 +150,7 @@ void process(tSyntaxElement* tree, tProcessingData* pdata) { if (se_istraversable(tree)) process(tree->content.syntax, pd); - switch (pd->type) { - - case REPLACE: - replace(tree, pd); - break; - - case FUNCTION: // TODO - break; - - } + process_mod(tree, pd); }