github-actions-expressions 1.24.1

GitHub Actions expression parser and data types
Documentation
{
  "operator_precedence_._and_._evaluate_left_to_right": [
    {
      "expr": "foo.bar.baz",
      "contexts": { "foo": { "bar": { "baz": 2 } } },
      "result": { "kind": "Number", "value": 2.0 }
    }
  ],
  "operator_precedence_._is_higher_than_!": [
    {
      "expr": "!foo.bar",
      "contexts": { "foo": { "bar": true } },
      "result": { "kind": "Boolean", "value": false }
    },
    {
      "expr": "(!foo).bar",
      "contexts": { "foo": { "bar": true } },
      "result": { "kind": "Null", "value": null }
    }
  ],
  "operator_precedence_._is_higher_than_>": [
    {
      "expr": "3 > foo.bar",
      "contexts": { "foo": { "bar": 2 } },
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "foo.bar > 2",
      "contexts": { "foo": { "bar": 3 } },
      "result": { "kind": "Boolean", "value": true }
    }
  ],
  "operator_precedence_[]_is_higher_than_>": [
    {
      "expr": "3 > foo['bar']",
      "contexts": { "foo": { "bar": 2 } },
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "foo['bar'] > 2",
      "contexts": { "foo": { "bar": 3 } },
      "result": { "kind": "Boolean", "value": true }
    }
  ],
  "operator_precedence_!_is_higher_than_<": [
    {
      "expr": "!2 < 3",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "!(2 < 3)",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_<_and_<_evaluate_left_to_right": [
    {
      "expr": "3 < 2 < 1",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "3 < (2 < 1)",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_<_and_<=_evaluate_left_to_right": [
    {
      "expr": "3 < 2 <= 1",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "3 < (2 <= 1)",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_<=_and_<_evaluate_left_to_right": [
    {
      "expr": "3 <= 2 < 1",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "3 <= (2 < 1)",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_>_and_<_evaluate_left_to_right": [
    {
      "expr": "0 > 0 < 1",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "0 > (0 < 1)",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_>_and_>_evaluate_left_to_right": [
    {
      "expr": "2 > 2 > 0",
      "result": { "kind": "Boolean", "value": false }
    },
    {
      "expr": "2 > (2 > 0)",
      "result": { "kind": "Boolean", "value": true }
    }
  ],
  "operator_precedence_<=_is_higher_than_==": [
    {
      "expr": "2 <= 3 == true",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "2 <= (3 == true)",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_==_and_==_evaluate_left_to_right": [
    {
      "expr": "2 == 2 == 1",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "2 == (2 == 1)",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_==_and_!=_evaluate_left_to_right": [
    {
      "expr": "2 == 2 != 0",
      "result": { "kind": "Boolean", "value": true }
    },
    {
      "expr": "2 == (2 != 0)",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_==_is_higher_than_&&": [
    {
      "expr": "1 == 1 && 2",
      "result": { "kind": "Number", "value": 2.0 }
    },
    {
      "expr": "1 == (1 && 2)",
      "result": { "kind": "Boolean", "value": false }
    },
    {
      "expr": "'a' == 'a' && 'b'",
      "result": { "kind": "String", "value": "b" }
    },
    {
      "expr": "'a' == ('a' && 'b')",
      "result": { "kind": "Boolean", "value": false }
    }
  ],
  "operator_precedence_&&_is_higher_than_||": [
    {
      "expr": "false && 0 || null",
      "result": { "kind": "Null", "value": null }
    },
    {
      "expr": "false && (0 || null)",
      "result": { "kind": "Boolean", "value": false }
    },
    {
      "expr": "1 || 2 && 3",
      "result": { "kind": "Number", "value": 1.0 }
    },
    {
      "expr": "(1 || 2) && 3",
      "result": { "kind": "Number", "value": 3.0 }
    }
  ]
}