From 6c2457b74a2b3fdc85803d68b1e4d4641f2261cb Mon Sep 17 00:00:00 2001 From: pantor Date: Fri, 1 Dec 2017 16:38:42 +0100 Subject: [PATCH] fix a few bugs at codacy --- src/inja.hpp | 58 ++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/inja.hpp b/src/inja.hpp index 0a597d9..19542b8 100644 --- a/src/inja.hpp +++ b/src/inja.hpp @@ -160,7 +160,7 @@ inline MatchType search(const std::string& input, std::map regexes, return search_match; } -inline MatchClosed search_closed_on_level(const std::string& input, const Regex regex_statement, const Regex regex_level_up, const Regex regex_level_down, const Regex regex_search, Match open_match) { +inline MatchClosed search_closed_on_level(const std::string& input, const Regex& regex_statement, const Regex regex_level_up, const Regex regex_level_down, const Regex regex_search, Match open_match) { int level = 0; size_t current_position = open_match.end_position(); @@ -179,7 +179,7 @@ inline MatchClosed search_closed_on_level(const std::string& input, const Regex return MatchClosed(open_match, match_delimiter); } -inline MatchClosed search_closed(const std::string& input, const Regex regex_statement, const Regex regex_open, const Regex regex_close, Match open_match) { +inline MatchClosed search_closed(const std::string& input, const Regex& regex_statement, const Regex regex_open, const Regex regex_close, Match open_match) { return search_closed_on_level(input, regex_statement, regex_open, regex_close, regex_close, open_match); } @@ -277,7 +277,7 @@ struct Parsed { std::string command; explicit ElementExpression(): ElementExpression(Function::ReadJson) { } - ElementExpression(const Function function): Element(Type::Expression), function(function), args({}), command("") { } + explicit ElementExpression(const Function function_): Element(Type::Expression), function(function_), args({}), command("") { } }; struct ElementLoop: public Element { @@ -310,8 +310,8 @@ public: explicit Template(const Parsed::Element& parsed_template, ElementNotation elementNotation): parsed_template(parsed_template), elementNotation(elementNotation) { } template - T eval_variable(const Parsed::ElementExpression& element, json data) { - const json var = eval_variable(element, data, true); + T eval_expression(const Parsed::ElementExpression& element, json data) { + const json var = eval_expression(element, data, true); if (std::is_same::value) { return var; } @@ -319,51 +319,51 @@ public: } bool eval_condition(const Parsed::ElementExpression& element, json data) { - const json var = eval_variable(element, data, false); + const json var = eval_expression(element, data, false); if (var.empty()) { return false; } else if (var.is_number()) { return (var != 0); } else if (var.is_string()) { return not var.empty(); } return var.get(); } - json eval_variable(const Parsed::ElementExpression& element, json data, bool throw_error) { + json eval_expression(const Parsed::ElementExpression& element, json data, bool throw_error) { switch (element.function) { case Parsed::Function::Upper: { - std::string str = eval_variable(element.args[0], data); + std::string str = eval_expression(element.args[0], data); std::transform(str.begin(), str.end(), str.begin(), toupper); return str; } case Parsed::Function::Lower: { - std::string str = eval_variable(element.args[0], data); + std::string str = eval_expression(element.args[0], data); std::transform(str.begin(), str.end(), str.begin(), tolower); return str; } case Parsed::Function::Range: { - const int number = eval_variable(element.args[0], data); + const int number = eval_expression(element.args[0], data); std::vector result(number); std::iota(std::begin(result), std::end(result), 0); return result; } case Parsed::Function::Length: { - const std::vector list = eval_variable>(element.args[0], data); + const std::vector list = eval_expression>(element.args[0], data); return list.size(); } case Parsed::Function::Round: { - const double number = eval_variable(element.args[0], data); - const int precision = eval_variable(element.args[1], data); + const double number = eval_expression(element.args[0], data); + const int precision = eval_expression(element.args[1], data); return std::round(number * std::pow(10.0, precision)) / std::pow(10.0, precision); } case Parsed::Function::DivisibleBy: { - const int number = eval_variable(element.args[0], data); - const int divisor = eval_variable(element.args[1], data); + const int number = eval_expression(element.args[0], data); + const int divisor = eval_expression(element.args[1], data); return (number % divisor == 0); } case Parsed::Function::Odd: { - const int number = eval_variable(element.args[0], data); + const int number = eval_expression(element.args[0], data); return (number % 2 != 0); } case Parsed::Function::Even: { - const int number = eval_variable(element.args[0], data); + const int number = eval_expression(element.args[0], data); return (number % 2 == 0); } case Parsed::Function::Not: { @@ -376,27 +376,27 @@ public: return (eval_condition(element.args[0], data) or eval_condition(element.args[1], data)); } case Parsed::Function::In: { - const json item = eval_variable(element.args[0], data); - const json list = eval_variable(element.args[1], data); + const json item = eval_expression(element.args[0], data); + const json list = eval_expression(element.args[1], data); return (std::find(list.begin(), list.end(), item) != list.end()); } case Parsed::Function::Equal: { - return eval_variable(element.args[0], data) == eval_variable(element.args[1], data); + return eval_expression(element.args[0], data) == eval_expression(element.args[1], data); } case Parsed::Function::Greater: { - return eval_variable(element.args[0], data) > eval_variable(element.args[1], data); + return eval_expression(element.args[0], data) > eval_expression(element.args[1], data); } case Parsed::Function::Less: { - return eval_variable(element.args[0], data) < eval_variable(element.args[1], data); + return eval_expression(element.args[0], data) < eval_expression(element.args[1], data); } case Parsed::Function::GreaterEqual: { - return eval_variable(element.args[0], data) >= eval_variable(element.args[1], data); + return eval_expression(element.args[0], data) >= eval_expression(element.args[1], data); } case Parsed::Function::LessEqual: { - return eval_variable(element.args[0], data) <= eval_variable(element.args[1], data); + return eval_expression(element.args[0], data) <= eval_expression(element.args[1], data); } case Parsed::Function::Different: { - return eval_variable(element.args[0], data) != eval_variable(element.args[1], data); + return eval_expression(element.args[0], data) != eval_expression(element.args[1], data); } case Parsed::Function::ReadJson: { // Json Raw Data @@ -425,6 +425,7 @@ public: std::string result = ""; for (auto element: parsed_template.children) { switch (element->type) { + case Parsed::Type::Main: { throw std::runtime_error("Main type in renderer."); } case Parsed::Type::String: { auto elementString = std::static_pointer_cast(element); result += elementString->text; @@ -432,7 +433,7 @@ public: } case Parsed::Type::Expression: { auto elementExpression = std::static_pointer_cast(element); - json variable = eval_variable(*elementExpression, data); + json variable = eval_expression(*elementExpression, data); if (variable.is_string()) { result += variable.get(); } else { @@ -446,7 +447,7 @@ public: auto elementLoop = std::static_pointer_cast(element); const std::string item_name = elementLoop->item; - const std::vector list = eval_variable>(elementLoop->list, data); + const std::vector list = eval_expression>(elementLoop->list, data); for (unsigned int i = 0; i < list.size(); i++) { json data_loop = data; data_loop[item_name] = list[i]; @@ -469,9 +470,8 @@ public: } break; } - case Parsed::Type::Comment: { break; } - case Parsed::Type::Main: { throw std::runtime_error("Main type in renderer."); } case Parsed::Type::ConditionBranch: { throw std::runtime_error("ConditionBranch type in renderer."); } + case Parsed::Type::Comment: { break; } } } return result;