Skip to content

Commit

Permalink
fix: support new States functions (#17)
Browse files Browse the repository at this point in the history
  • Loading branch information
massfords authored Sep 2, 2022
1 parent bea8aa8 commit 9e0b1ac
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 3 deletions.
57 changes: 57 additions & 0 deletions src/__tests__/validatePath.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,63 @@ describe("unit tests for the parser", () => {
path: "States.Format('{}_{}',$$.Execution.Name,$['test-batch']['batch_id'])",
valid_in: PayloadTemplatesOnly,
},
// new functions from 2022-08
{
path: "States.ArrayPartition($.inputArray,4)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.ArrayContains($.inputArray, $.lookingFor)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.ArrayRange(1, 9, 2)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.ArrayGetItem($.inputArray, $.index)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.ArrayLength($.inputArray)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.ArrayUnique($.inputArray)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.Base64Encode($.input)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.Base64Decode($.base64)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.Hash($.Data, $.Algorithm)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.JsonMerge($.json1, $.json2, false)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.MathRandom($.start, $.end)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.MathAdd($.value1, $.step)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.StringSplit($.inputString, $.splitter)",
valid_in: PayloadTemplatesOnly,
},
{
path: "States.UUID()",
valid_in: PayloadTemplatesOnly,
},

// assorted paths
{
Expand Down
26 changes: 23 additions & 3 deletions src/aslPaths.pegjs
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,31 @@ subscriptableBareword
/ WILDCARD_SUBSCRIPT

intrinsic_function
= func:"States.Format" args:function_args {return {func, args}}
= func:"States.Array" args:function_args {return {func, args}}
/ func:"States.ArrayPartition" args:function_args {return {func, args}}
/ func:"States.ArrayContains" args:function_args {return {func, args}}
/ func:"States.ArrayRange" args:function_args {return {func, args}}
/ func:"States.ArrayGetItem" args:function_args {return {func, args}}
/ func:"States.ArrayLength" args:single_arg {return {func, args}}
/ func:"States.ArrayUnique" args:single_arg {return {func, args}}
/ func:"States.Base64Encode" args:single_arg {return {func, args}}
/ func:"States.Base64Decode" args:single_arg {return {func, args}}
/ func:"States.Hash" args:function_args {return {func, args}}
/ func:"States.JsonMerge" args:function_args {return {func, args}}
/ func:"States.StringToJson" args:single_arg {return {func, args}}
/ func:"States.JsonToString" args:single_arg {return {func, args}}
/ func:"States.Array" args:function_args {return {func, args}}
/ func:"States.MathRandom" args:function_args {return {func, args}}
/ func:"States.MathAdd" args:function_args {return {func, args}}
/ func:"States.StringSplit" args:function_args {return {func, args}}
/ func:"States.UUID" args:no_args {return {func, args}}
/ func:"States.Format" args:function_args {return {func, args}}

no_args
= PAREN_LEFT _ PAREN_RIGHT
{return {
head: null,
tail: [] }
}

single_arg
= PAREN_LEFT _ head:jsonpath__ _ PAREN_RIGHT
Expand Down Expand Up @@ -130,4 +151,3 @@ escaped = "\\" c:allchars { return c; }
allchars = $[^\\n]

_ "whitespace" = [ \t\n]*

0 comments on commit 9e0b1ac

Please sign in to comment.