فهرست منبع

feat(expressions): allow expr() to be called without parameters

Update expr() convenience function to accept nullable first parameter
with default value, enabling calls without any arguments. Also fix
ParameterExpression string formatting to use printf instead of
string template syntax.
Billy Barrow 1 ماه پیش
والد
کامیت
752d726731
3فایلهای تغییر یافته به همراه8 افزوده شده و 5 حذف شده
  1. 4 1
      src/lib/Expressions/Convenience.vala
  2. 1 1
      src/lib/Expressions/Expressions/ParameterExpression.vala
  3. 3 3
      src/tests/TestRunner.vala

+ 4 - 1
src/lib/Expressions/Convenience.vala

@@ -1,7 +1,10 @@
 
 
 namespace Invercargill.Expressions {
 namespace Invercargill.Expressions {
 
 
-    public Expression expr(string expression, Element first, ...) throws ExpressionError {
+    public Expression expr(string expression, Element? first = null, ...) throws ExpressionError {
+        if(first == null) {
+            return ExpressionParser.parse(expression);
+        }
         return ExpressionParser.parse_with_params(expression, Wrap.va_list<Element>(first, va_list()));
         return ExpressionParser.parse_with_params(expression, Wrap.va_list<Element>(first, va_list()));
     }
     }
 
 

+ 1 - 1
src/lib/Expressions/Expressions/ParameterExpression.vala

@@ -46,7 +46,7 @@ namespace Invercargill.Expressions {
         }
         }
 
 
         public override string to_expression_string() {
         public override string to_expression_string() {
-            return @"$$index";
+            return "$%d".printf(index);
         }
         }
     }
     }
 }
 }

+ 3 - 3
src/tests/TestRunner.vala

@@ -39,9 +39,9 @@ public static int main(string[] args) {
     //  modifiers_tests();
     //  modifiers_tests();
     //  data_structures_tests();
     //  data_structures_tests();
     //  remaining_components_tests();
     //  remaining_components_tests();
-    //  expression_tests();
-    nullable_tests();
-    native_element_tests();
+    expression_tests();
+    //  nullable_tests();
+    //  native_element_tests();
 
 
     var result = Test.run();
     var result = Test.run();