From 53c32bf531708da25954b8f816c78aa27652cb10 Mon Sep 17 00:00:00 2001 From: Dmitry Dodzin Date: Sun, 15 Jun 2025 23:24:16 +0300 Subject: [PATCH 1/2] More correct order parsing of value --- src/lib.rs | 9 +++++++++ src/parser/jslt.pest | 10 +++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 502f439..4e0ac65 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1279,6 +1279,15 @@ mod tests { } #[rstest] + #[case( + "def definition() { \"foo\": \"bar\" } definition()", + "{ \"foo\": \"bar\" }" + )] + #[case( + "def letter() let message = \"foo\" { \"text\": $message } letter()", + "{ \"text\": \"foo\" }" + )] + #[case("def nuller() null nuller()", "null")] #[case("def my_add(a, b)\n $a + $b \n my_add(1, 2)", "3")] #[case("def my_add(a, b)\n let foo = $a \n $foo + $b \n my_add(1, 2)", "3")] #[case( diff --git a/src/parser/jslt.pest b/src/parser/jslt.pest index 6dc5afc..d79fb94 100644 --- a/src/parser/jslt.pest +++ b/src/parser/jslt.pest @@ -1,6 +1,6 @@ Jslt = _{ SOI ~ Expr ~ EOI } -Value = _{ Array | Object | Number | String | Boolean | Null | FunctionCall | Accessor | Scope | Variable } +Value = _{ FunctionCall | Accessor | Scope | Variable | Array | Object | Number | String | Boolean | Null } Expr = _{ OperatorExpr | ValueExpr } ValueExpr = _{ VariableDef | FunctionDef | IfStatement | Value } @@ -22,8 +22,8 @@ And = { "and" } Or = { "or" } If = _{ "if" } For = _{ "for" } -Def = _{ "def" } -Let = _{ "let" } +Def = _{ "def " } +Let = _{ "let " } Scope = { "(" ~ Expr ~ ")" } @@ -35,8 +35,8 @@ FromRangeAccessor = { Expr ~ ":" ~ Expr? } ToRangeAccessor = { Expr? ~ ":" ~ Expr } RangeAccessor = { FromRangeAccessor | ToRangeAccessor } -FunctionCall = { Ident ~ FunctionCallArgs ~ Accessor? } -FunctionCallArgs = { "(" ~ Expr? ~ ("," ~ Expr)* ~ ")" } +FunctionCall = ${ Ident ~ FunctionCallArgs ~ Accessor? } +FunctionCallArgs = !{ "(" ~ Expr? ~ ("," ~ Expr)* ~ ")" } FunctionDef = { Def ~ Ident ~ "(" ~ Ident? ~ ("," ~ Ident)* ~ ")" ~ Expr ~ Expr? } From 195df7391290cc6c4c4e7625af8bb2a913702b49 Mon Sep 17 00:00:00 2001 From: Dmitry Dodzin Date: Fri, 7 Nov 2025 13:46:07 +0200 Subject: [PATCH 2/2] Explicit Lifetime --- src/format.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/format.rs b/src/format.rs index a2f1ffb..3285e06 100644 --- a/src/format.rs +++ b/src/format.rs @@ -85,7 +85,7 @@ pub trait Display { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result; } -pub fn format(value: &T) -> Formatted { +pub fn format<'a, T>(value: &'a T) -> Formatted<'a, T> { Formatted(value) }