datalogic-rs 4.0.21

A fast, type-safe Rust implementation of JSONLogic for evaluating logical rules as JSON. Perfect for business rules engines and dynamic filtering in Rust applications.
Documentation
[
    "# DateTime creation and parsing",
    {
        "description": "Create a datetime from string",
        "rule": {"datetime": "2022-07-06T13:20:06Z"},
        "data": null,
        "result": "2022-07-06T13:20:06Z"
    },
    {
        "description": "parse_date with format string",
        "rule": {"parse_date": ["2022-07-06", "yyyy-MM-dd"]},
        "data": null,
        "result": "2022-07-06T00:00:00Z"
    },
    {
        "description": "format_date with format string",
        "rule": {"format_date": [{"datetime": "2022-07-06T13:20:06Z"}, "yyyy-MM-dd"]},
        "data": null,
        "result": "2022-07-06"
    },
    {
        "description": "format_date with timezone offset (z format)",
        "rule": {"format_date": [{"datetime": "2022-07-06T13:20:06+05:00"}, "z"]},
        "data": null,
        "result": "+0500"
    },

    "# DateTime comparisons",
    {
        "description": "Equal datetimes",
        "rule": {"==": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"datetime": "2022-07-06T13:20:06Z"}
        ]},
        "data": null,
        "result": true
    },
    {
        "description": "Not equal datetimes",
        "rule": {"==": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"datetime": "2022-07-07T13:20:06Z"}
        ]},
        "data": null,
        "result": false
    },
    {
        "description": "Strict equal datetimes",
        "rule": {"===": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"datetime": "2022-07-06T13:20:06Z"}
        ]},
        "data": null,
        "result": true
    },
    {
        "description": "Not strict equal datetimes",
        "rule": {"!==": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"datetime": "2022-07-07T13:20:06Z"}
        ]},
        "data": null,
        "result": true
    },
    {
        "description": "Greater than comparison for datetimes",
        "rule": {">": [
            {"datetime": "2022-07-07T13:20:06Z"},
            {"datetime": "2022-07-06T13:20:06Z"}
        ]},
        "data": null,
        "result": true
    },
    {
        "description": "Less than comparison for datetimes",
        "rule": {"<": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"datetime": "2022-07-07T13:20:06Z"}
        ]},
        "data": null,
        "result": true
    },
    {
        "description": "Greater than or equal comparison for datetimes",
        "rule": {">=": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"datetime": "2022-07-06T13:20:06Z"}
        ]},
        "data": null,
        "result": true
    },
    {
        "description": "Less than or equal comparison for datetimes",
        "rule": {"<=": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"datetime": "2022-07-07T13:20:06Z"}
        ]},
        "data": null,
        "result": true
    },

    "# DateTime arithmetic operations",
    {
        "description": "Add duration to datetime",
        "rule": {"+": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"timestamp": "1d"}
        ]},
        "data": null,
        "result": "2022-07-07T13:20:06Z"
    },
    {
        "description": "Subtract duration from datetime",
        "rule": {"-": [
            {"datetime": "2022-07-06T13:20:06Z"},
            {"timestamp": "1d"}
        ]},
        "data": null,
        "result": "2022-07-05T13:20:06Z"
    },
    {
        "description": "Calculate duration between two datetimes",
        "rule": {"-": [
            {"datetime": "2022-07-07T13:20:06Z"},
            {"datetime": "2022-07-06T13:20:06Z"}
        ]},
        "data": null,
        "result": "1d:0h:0m:0s"
    },
    {
        "description": "date_diff with days unit",
        "rule": {"date_diff": [
            {"datetime": "2022-07-07T13:20:06Z"},
            {"datetime": "2022-07-06T13:20:06Z"},
            "days"
        ]},
        "data": null,
        "result": 1
    },
    {
        "description": "date_diff with hours unit",
        "rule": {"date_diff": [
            {"datetime": "2022-07-06T14:20:06Z"},
            {"datetime": "2022-07-06T13:20:06Z"},
            "hours"
        ]},
        "data": null,
        "result": 1
    },

    "# Using datetime with variables",
    {
        "description": "Compare datetime from variable",
        "rule": {">": [
            {"val": "current_date"},
            {"datetime": "2022-01-01T00:00:00Z"}
        ]},
        "data": {"current_date": {"datetime": "2022-07-06T13:20:06Z"}},
        "result": true
    },
    {
        "description": "Add duration to datetime from variable",
        "rule": {"+": [
            {"val": "start_date"},
            {"timestamp": "1d"}
        ]},
        "data": {"start_date": {"datetime": "2022-07-06T13:20:06Z"}},
        "result": "2022-07-07T13:20:06Z"
    }
]