From 9ea3b88684b50fbc812bbdb56926d790b5e434f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Gonz=C3=A1lez?= Date: Sun, 1 Feb 2026 16:16:04 +0100 Subject: [PATCH] WEB_PORT, para juntar en master --- Makefile | 4 ++-- lib/formula_evaluator.dart | 8 ++++++-- lib/formula_models.dart | 8 ++++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 651d088..a2e95d6 100644 --- a/Makefile +++ b/Makefile @@ -23,10 +23,10 @@ run-linux-debug-container: pub-get-container ./docker-exec.sh exec flutter run -d linux run-web-debug-container: pub-get-container - ./docker-exec.sh exec flutter run --web-port 8081 -d web-server + ./docker-exec.sh exec flutter run --web-port $${WEB_PORT:-8081} -d web-server run-linux-debug-native: build-linux-debug-container ./build/linux/x64/debug/bundle/d4rt_formulas run-web-debug-native: build-web-debug-container - cd build/web && python3 -m http.server 8081 + cd build/web && python3 -m http.server $${WEB_PORT:-8081} diff --git a/lib/formula_evaluator.dart b/lib/formula_evaluator.dart index d880729..40e67f7 100644 --- a/lib/formula_evaluator.dart +++ b/lib/formula_evaluator.dart @@ -142,6 +142,8 @@ class FormulaEvaluator { import "package:d4rt_formulas.dart"; """; + static const reservedVariableNames = { "variableValues", "indexOf", "variableAllowedValues"} ; + String _buildCompleteSource(Formula formula, Map inputValues) { final buffer = StringBuffer(); @@ -220,10 +222,12 @@ class FormulaEvaluator { // Some functions to deal with string values buffer.writeln(""" - int indexOf(String inputName) { + // If return type is int, there is an error converting double to int 🤷‍ + dynamic indexOf(String inputName) { String value = variableValues[inputName]; String allowedValues = variableAllowedValues[inputName]; - return allowedValues.indexOf(value); + dynamic ret = allowedValues.indexOf(value) as int; + return ret as int; } """); diff --git a/lib/formula_models.dart b/lib/formula_models.dart index 9a0c5f6..bff597c 100644 --- a/lib/formula_models.dart +++ b/lib/formula_models.dart @@ -1,5 +1,6 @@ import 'package:d4rt/d4rt.dart'; import 'package:collection/collection.dart'; +import 'package:d4rt_formulas/d4rt_formulas.dart'; abstract class SetUtils { static Object safeGet(Map map, String key) { @@ -105,6 +106,13 @@ class VariableSpec { final List? values; VariableSpec({required this.name, this.unit, this.values}){ + validate(); + } + + void validate(){ + if( FormulaEvaluator.reservedVariableNames.contains(name) ){ + throw ArgumentError("$name: is a reserved variable name for FormulaEvaluator"); + } final valuesValid = values != null && values?.isNotEmpty == true; if( unit == null && !valuesValid ){ throw ArgumentError("$name: at least unit or allowedValues should be valid");