{"id":19322209,"url":"https://github.com/seddryck/expressif","last_synced_at":"2025-04-12T15:22:06.216Z","repository":{"id":63153017,"uuid":"565076497","full_name":"Seddryck/Expressif","owner":"Seddryck","description":"Expressif is the variable substitution syntax combined with a library of predicates and functions. Initially designed for NBi.io, Expressif allows you to define variables, transformations of these variables (with expressions and functions), in plain text, which can then be interpreted by the engine. Same can be done with predicates.","archived":false,"fork":false,"pushed_at":"2025-04-02T21:16:24.000Z","size":38039,"stargazers_count":1,"open_issues_count":43,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T22:24:23.635Z","etag":null,"topics":["predicate","predicate-functions","variable-binding","variable-substitution"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Seddryck.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-12T09:09:37.000Z","updated_at":"2025-04-02T21:16:27.000Z","dependencies_parsed_at":"2024-01-30T20:29:53.389Z","dependency_job_id":"d55bdf74-b04a-4d49-b0f9-44eff4b6ede0","html_url":"https://github.com/Seddryck/Expressif","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seddryck%2FExpressif","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seddryck%2FExpressif/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seddryck%2FExpressif/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Seddryck%2FExpressif/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Seddryck","download_url":"https://codeload.github.com/Seddryck/Expressif/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248586446,"owners_count":21129042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["predicate","predicate-functions","variable-binding","variable-substitution"],"created_at":"2024-11-10T01:40:31.940Z","updated_at":"2025-04-12T15:22:06.187Z","avatar_url":"https://github.com/Seddryck.png","language":"C#","readme":"# Expressif\nExpressif is the variable substitution syntax, initially designed for [NBi.io](https://www.nbi.io).\n\nExpressif allows you to define variables and transformation of these variables (functions), in plain text, which can then be interpreted by the engine. The syntax for the definition of the expression transforming the variable is similar to:\n\n```\n@myVariable | text-to-lower | text-to-pad-right(@myCount, *)\n```\n\n![Logo](https://raw.githubusercontent.com/Seddryck/Expressif/main/misc/icon/expressif-icon-256.png)\n\n[About][] | [Quickstart][] | [Installing][] | [Functions and predicates][]\n\n[About]: #about (About)\n[Quickstart]: #quickstart (Quickstart)\n[Installing]: #installing (Installing)\n[Functions and predicates]: #supported-functions-and-predicates (Functions and predicates)\n\n## About\n\n**Social media:** [![website](https://img.shields.io/badge/website-seddryck.github.io/Expressif-fe762d.svg)](https://seddryck.github.io/Expressif)\n[![twitter badge](https://img.shields.io/badge/twitter%20Expressif-@Seddryck-blue.svg?style=flat\u0026logo=twitter)](https://twitter.com/Seddryck)\n\n**Releases:** [![nuget](https://img.shields.io/nuget/v/Expressif.svg)](https://www.nuget.org/packages/Expressif/)\u003c!-- [![GitHub Release Date](https://img.shields.io/github/release-date/seddryck/Expressif.svg)](https://github.com/Seddryck/Expressif/releases/latest) --\u003e [![licence badge](https://img.shields.io/badge/License-Apache%202.0-yellow.svg)](https://github.com/Seddryck/Expressif/blob/master/LICENSE)\n\n**Dev. activity:** [![GitHub last commit](https://img.shields.io/github/last-commit/Seddryck/Expressif.svg)](https://github.com/Seddryck/Expressif/commits)\n![Still maintained](https://img.shields.io/maintenance/yes/2025.svg)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/y/Seddryck/Expressif)\n\n**Continuous integration builds:** [![Build status](https://ci.appveyor.com/api/projects/status/7btqredpvl803ri5?svg=true)](https://ci.appveyor.com/project/Seddryck/Expressif/)\n[![Tests](https://img.shields.io/appveyor/tests/seddryck/Expressif.svg)](https://ci.appveyor.com/project/Seddryck/Expressif/build/tests)\n[![CodeFactor](https://www.codefactor.io/repository/github/seddryck/expressif/badge)](https://www.codefactor.io/repository/github/seddryck/expressif)\n[![codecov](https://codecov.io/github/Seddryck/Expressif/branch/main/graph/badge.svg?token=9ZSJ6N0X9E)](https://codecov.io/github/Seddryck/Expressif)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FSeddryck%2FExpressif.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FSeddryck%2FExpressif?ref=badge_shield)\n\n**Status:** [![stars badge](https://img.shields.io/github/stars/Seddryck/Expressif.svg)](https://github.com/Seddryck/Expressif/stargazers)\n[![Bugs badge](https://img.shields.io/github/issues/Seddryck/Expressif/bug.svg?color=red\u0026label=Bugs)](https://github.com/Seddryck/Expressif/issues?utf8=%E2%9C%93\u0026q=is:issue+is:open+label:bug+)\n[![Features badge](https://img.shields.io/github/issues/seddryck/Expressif/new-feature.svg?color=purple\u0026label=Feature%20requests)](https://github.com/Seddryck/Expressif/issues?utf8=%E2%9C%93\u0026q=is:issue+is:open+label:new-feature+)\n[![Top language](https://img.shields.io/github/languages/top/seddryck/Expressif.svg)](https://github.com/Seddryck/Expressif/search?l=C%23)\n\n## Quickstart\n\n### Expression\n\u003c!-- START EXPRESSION QUICK START --\u003e\n\nExpressif provides a class named *Expression* to define a chain of functions applied to a value. The class is expecting the textual representation of the chained functions in its constructor.\n\n```csharp\nvar expression = new Expression(\"lower\");\nvar result = expression.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.EqualTo(\"nikola tesla\"));\n```\n\nSome functions require parameters, you can specify them between the parenthesis following the function name. Note that literal textual values don't required quotes surronding them.\n\n```csharp\nvar expression = new Expression(\"remove-chars(a)\");\nvar result = expression.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.EqualTo(\"Nikol Tesl\"));\n```\n\nYou can chain the functions with the operator pipe (`|`). The functions are executed from left to right.\n\n```csharp\nvar expression = new Expression(\"lower | remove-chars(a)\");\nvar result = expression.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.EqualTo(\"nikol tesl\"));\n```\n\nIt's possible to use variables as function parameters. The name of the variables must always start by an arobas (`@`)\n\n```csharp\nvar context = new Context();\ncontext.Variables.Add\u003cchar\u003e(\"myChar\", 'k');\n\nvar expression = new Expression(\"lower | remove-chars(@myChar)\", context);\nvar result = expression.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.EqualTo(\"niola tesla\"));\n```\n\nIn addition to the variables that must be scalar values (text, numeric, dateTime ...), you can also add a property-object to the context. A property-object must be a pure C# object, an IDictionnary, an IList, or a DataRow. You can access the properties of the property-object based on the property's name with the syntax `[property-name]`.\n\n```csharp\nvar context = new Context();\ncontext.CurrentObject.Set(new { CharToBeRemoved = 't' });\n\nvar expression = new Expression(\"lower | remove-chars([CharToBeRemoved])\", context);\nvar result = expression.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.EqualTo(\"nikola esla\"));\n```\n\nor based on its position with the syntax `#index` (where index is positive number).\n\n```csharp\nvar context = new Context();\ncontext.CurrentObject.Set(new List\u003cchar\u003e() { 'e', 's' });\n\nvar expression = new Expression(\"lower | remove-chars(#1)\", context);\nvar result = expression.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.EqualTo(\"nikola tela\"));\n```\n\nIt's also possible to use the result of function as the value of a parameter for another function. To achieve this the function as a parameter must be surrounded by curly braces `{...}`.\n\n```csharp\nvar context = new Context();\ncontext.Variables.Add\u003cint\u003e(\"myVar\", 6);\ncontext.CurrentObject.Set(new List\u003cint\u003e() { 15, 8, 3 });\n\nvar expression = new Expression(\"lower | skip-last-chars( {@myVar | subtract(#2) })\", context);\nvar result = expression.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.EqualTo(\"nikola te\"));\n```\n\u003c!-- END EXPRESSION QUICK START --\u003e\n\n### Predication\n\u003c!-- START PREDICATION QUICK START --\u003e\n\nExpressif provides a class named *Predication* to define a combination of predicates applied to an argument. The class is expecting the textual representation of the predicates in its constructor.\n\n```csharp\nvar predication = new Predication(\"lower-case\");\nvar result = predication.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.False);\n```\n\nSame than for expressions, some predicates require parameters, you can specify them between the parenthesis immediately following the predicate name. More specifically, some predicates require an interval as parameter. The parameter can be define with the help of square brackets or parenthesis.\n\n```csharp\nvar predication = new Predication(\"within-interval([0;20[)\");\nvar result = predication.Evaluate(15);\nAssert.That(result, Is.True);\n```\n\nOther predicates require a culture as parameter. To specify a culture just use the textual representation of the culture composed of the two letter ISO code of the language then the two letters ISO code of the country separated by a dash i.e. `fr-be` for Belgian French, `nl-be` for Belgian Dutch or `de-de` for German.\n\n```csharp\nvar predication = new Predication(\"matches-date(fr-fr)\");\nvar result = predication.Evaluate(\"28/12/1978\");\nAssert.That(result, Is.True);\n```\n\nAny predicate can be negated to return the opposite result. To negate a predicate just put the exclamation mark (`!`) in front of the predicate name.\n\n```csharp\nvar predication = new Predication(\"!starts-with(Nik)\");\nvar result = predication.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.False);\n```\n\nYou can combine the predicates. Each predicate will accept the same argument and will be evaluated separatly. The results of the combination is dependening on the combinational operator used. To specify the name of the combinational operator use the pipe operator (`|`) immediately followed by the name of the operator. The following operators are valid `|AND`, `|OR`, `|XOR`. \n\nTake into account that when possible, the operators are implementing a short-circuit. If the two predicates are combined with the operator `|AND` and the first is returning `false`, the second will not be evaluated. Following the same reasoning, if the two predicates are combined with the operator `|OR` and the first is returning `true`, the second will also be ignored.\n\n```csharp\nvar predication = new Predication(\"starts-with(Nik) |AND ends-with(sla)\");\nvar result = predication.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.True);\n```\n\nBy default, the predicates are combined from left to right. If you've three predicates, the two firsts will be combined and then the result of this combination will be combined with the third predicate. To alter this order, you must group the predicates with the help of curly braces `{...}`. Each predicate inside a group is evaluated from left to right and then the result of the group is combined with another group or predicate also from left to right.\n\n```csharp\nvar predication = new Predication(\"{starts-with(Nik) |AND ends-with(sla)} |OR {starts-with(ola) |AND ends-with(Tes)}\");\nvar result = predication.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.True);\n\nvar withoutGroupsPredication = new Predication(\"starts-with(Nik) |AND ends-with(sla) |OR starts-with(ola) |AND ends-with(Tes)\");\nvar secondResult = withoutGroupsPredication.Evaluate(\"Nikola Tesla\");\nAssert.That(result, Is.Not.EqualTo(secondResult));\n```\n\u003c!-- END PREDICATION QUICK START --\u003e\n\n## Installing\n\nInstall in the usual .NET fashion:\n\n```sh\nInstall-Package Expressif\n```\n\n## Supported functions and predicates\n\n### Functions\n\u003c!-- START FUNCTION TABLE --\u003e\n|Scope    | Name                       | Aliases                                                                          |\n|-------- | -------------------------- | ---------------------------------------------------------------------------------|\n|IO       | creation-datetime          | file-to-creation-datetime, file-to-creation-dateTime                             |\n|IO       | creation-datetime-utc      | file-to-creation-datetime-utc, file-to-creation-dateTime-utc                     |\n|IO       | directory                  | path-to-directory                                                                |\n|IO       | extension                  | path-to-extension                                                                |\n|IO       | filename                   | path-to-filename                                                                 |\n|IO       | filename-without-extension | path-to-filename-without-extension                                               |\n|IO       | root                       | path-to-root                                                                     |\n|IO       | size                       | file-to-size                                                                     |\n|IO       | update-datetime            | file-to-update-datetime, file-to-update-dateTime                                 |\n|IO       | update-datetime-utc        | file-to-update-datetime-utc, file-to-update-dateTime-utc                         |\n|Numeric  | absolute                   | numeric-to-absolute                                                              |\n|Numeric  | add                        | numeric-to-add                                                                   |\n|Numeric  | ceiling                    | numeric-to-ceiling                                                               |\n|Numeric  | clip                       | numeric-to-clip                                                                  |\n|Numeric  | cube-power                 | numeric-to-cube-power                                                            |\n|Numeric  | cube-root                  | numeric-to-cube-root                                                             |\n|Numeric  | decrement                  | numeric-to-decrement                                                             |\n|Numeric  | divide                     | numeric-to-divide                                                                |\n|Numeric  | floor                      | numeric-to-floor                                                                 |\n|Numeric  | increment                  | numeric-to-increment                                                             |\n|Numeric  | integer                    | numeric-to-integer                                                               |\n|Numeric  | invert                     | numeric-to-invert                                                                |\n|Numeric  | multiply                   | numeric-to-multiply                                                              |\n|Numeric  | nth-root                   | numeric-to-nth-root                                                              |\n|Numeric  | null-to-zero               |                                                                                  |\n|Numeric  | oppose                     | numeric-to-oppose                                                                |\n|Numeric  | power                      | numeric-to-power                                                                 |\n|Numeric  | round                      | numeric-to-round                                                                 |\n|Numeric  | sign                       | numeric-to-sign                                                                  |\n|Numeric  | square-power               | numeric-to-square-power                                                          |\n|Numeric  | square-root                | numeric-to-square-root                                                           |\n|Numeric  | subtract                   | numeric-to-subtract                                                              |\n|Special  | any-to-any                 |                                                                                  |\n|Special  | neutral                    | Special-to-neutral                                                               |\n|Special  | null-to-value              |                                                                                  |\n|Special  | value-to-value             |                                                                                  |\n|Temporal | age                        | date-to-age                                                                      |\n|Temporal | backward                   | dateTime-to-backward, dateTime-to-subtract                                       |\n|Temporal | ceiling-hour               | dateTime-to-ceiling-hour                                                         |\n|Temporal | ceiling-minute             | dateTime-to-ceiling-minute                                                       |\n|Temporal | change-of-hour             | dateTime-to-change-of-hour                                                       |\n|Temporal | change-of-minute           | dateTime-to-change-of-minute                                                     |\n|Temporal | change-of-month            | dateTime-to-change-of-month                                                      |\n|Temporal | change-of-second           | dateTime-to-change-of-second                                                     |\n|Temporal | change-of-year             | dateTime-to-change-of-year                                                       |\n|Temporal | clamp                      | dateTime-to-clamp, dateTime-to-clip                                              |\n|Temporal | datetime-to-date           | dateTime-to-date                                                                 |\n|Temporal | day-of-month               | dateTime-to-day-of-month                                                         |\n|Temporal | day-of-week                | dateTime-to-day-of-week                                                          |\n|Temporal | day-of-year                | dateTime-to-day-of-year                                                          |\n|Temporal | first-in-month             | dateTime-to-first-in-month                                                       |\n|Temporal | first-of-month             | dateTime-to-first-of-month                                                       |\n|Temporal | first-of-year              | dateTime-to-first-of-year                                                        |\n|Temporal | floor-hour                 | dateTime-to-floor-hour                                                           |\n|Temporal | floor-minute               | dateTime-to-floor-minute                                                         |\n|Temporal | forward                    | dateTime-to-forward, dateTime-to-add                                             |\n|Temporal | hour                       | dateTime-to-hour                                                                 |\n|Temporal | hour-minute                | dateTime-to-hour-minute                                                          |\n|Temporal | hour-minute-second         | dateTime-to-hour-minute-second                                                   |\n|Temporal | hour-of-day                | dateTime-to-hour-of-day                                                          |\n|Temporal | invalid-to-date            |                                                                                  |\n|Temporal | iso-day-of-year            | dateTime-to-iso-day-of-year                                                      |\n|Temporal | iso-week-of-year           | dateTime-to-iso-week-of-year                                                     |\n|Temporal | iso-year-day               | dateTime-to-iso-year-day                                                         |\n|Temporal | iso-year-week              | dateTime-to-iso-year-week                                                        |\n|Temporal | iso-year-week-day          | dateTime-to-iso-year-week-day                                                    |\n|Temporal | last-in-month              | dateTime-to-last-in-month                                                        |\n|Temporal | last-of-month              | dateTime-to-last-of-month                                                        |\n|Temporal | last-of-year               | dateTime-to-last-of-year                                                         |\n|Temporal | length-of-month            | dateTime-to-length-of-month                                                      |\n|Temporal | length-of-year             | dateTime-to-length-of-year                                                       |\n|Temporal | local-to-utc               |                                                                                  |\n|Temporal | minute-of-day              | dateTime-to-minute-of-day                                                        |\n|Temporal | minute-of-hour             | dateTime-to-minute-of-hour                                                       |\n|Temporal | month                      | dateTime-to-month                                                                |\n|Temporal | month-day                  | dateTime-to-month-day                                                            |\n|Temporal | month-of-year              | dateTime-to-month-of-year                                                        |\n|Temporal | next-business-days         | temporal-to-next-business-days, next-business-day, add-business-days             |\n|Temporal | next-day                   | dateTime-to-next-day                                                             |\n|Temporal | next-month                 | dateTime-to-next-month                                                           |\n|Temporal | next-weekday               | dateTime-to-next-weekday                                                         |\n|Temporal | next-weekday-or-same       | dateTime-to-next-weekday-or-same                                                 |\n|Temporal | next-year                  | dateTime-to-next-year                                                            |\n|Temporal | null-to-date               |                                                                                  |\n|Temporal | previous-business-days     | temporal-to-previous-business-days, previous-business-day, subtract-business-days|\n|Temporal | previous-day               | dateTime-to-previous-day                                                         |\n|Temporal | previous-month             | dateTime-to-previous-month                                                       |\n|Temporal | previous-weekday           | dateTime-to-previous-weekday                                                     |\n|Temporal | previous-weekday-or-same   | dateTime-to-previous-weekday-or-same                                             |\n|Temporal | previous-year              | dateTime-to-previous-year                                                        |\n|Temporal | second-of-day              | dateTime-to-second-of-day                                                        |\n|Temporal | second-of-hour             | dateTime-to-second-of-hour                                                       |\n|Temporal | second-of-minute           | dateTime-to-second-of-minute                                                     |\n|Temporal | set-time                   | dateTime-to-set-time                                                             |\n|Temporal | set-to-local               |                                                                                  |\n|Temporal | set-to-utc                 |                                                                                  |\n|Temporal | utc-to-local               |                                                                                  |\n|Temporal | year                       | dateTime-to-year                                                                 |\n|Temporal | year-of-era                | dateTime-to-year-of-era                                                          |\n|Text     | after-substring            | text-to-after-substring                                                          |\n|Text     | append                     | text-to-append                                                                   |\n|Text     | append-new-line            | text-to-append-new-line                                                          |\n|Text     | append-space               | text-to-append-space                                                             |\n|Text     | before-substring           | text-to-before-substring                                                         |\n|Text     | clean-whitespace           | text-to-clean-whitespace                                                         |\n|Text     | collapse-whitespace        | text-to-collapse-whitespace                                                      |\n|Text     | count-distinct-chars       | text-to-count-distinct-chars                                                     |\n|Text     | count-substring            | text-to-count-substring                                                          |\n|Text     | empty-to-null              |                                                                                  |\n|Text     | filter-chars               | text-to-filter-chars                                                             |\n|Text     | first-chars                | text-to-first-chars                                                              |\n|Text     | html-to-text               |                                                                                  |\n|Text     | last-chars                 | text-to-last-chars                                                               |\n|Text     | length                     | text-to-length, count-chars                                                      |\n|Text     | lower                      | text-to-lower                                                                    |\n|Text     | mask-to-text               |                                                                                  |\n|Text     | null-to-empty              |                                                                                  |\n|Text     | pad-center                 | text-to-pad-center                                                               |\n|Text     | pad-left                   | text-to-pad-left                                                                 |\n|Text     | pad-right                  | text-to-pad-right                                                                |\n|Text     | prefix                     | text-to-prefix                                                                   |\n|Text     | prefix-new-line            | text-to-prefix-new-line                                                          |\n|Text     | prefix-space               | text-to-prefix-space                                                             |\n|Text     | prepend                    | text-to-prepend                                                                  |\n|Text     | prepend-new-line           | text-to-prepend-new-line                                                         |\n|Text     | prepend-space              | text-to-prepend-space                                                            |\n|Text     | remove-chars               | text-to-remove-chars                                                             |\n|Text     | replace-chars              | text-to-replace-chars                                                            |\n|Text     | replace-slice              | text-to-replace-slice                                                            |\n|Text     | retain-alpha               | text-to-retain-alpha                                                             |\n|Text     | retain-alpha-numeric       | text-to-retain-alpha-numeric                                                     |\n|Text     | retain-numeric             | text-to-retain-numeric                                                           |\n|Text     | retain-numeric-symbol      | text-to-retain-numeric-symbol                                                    |\n|Text     | skip-first-chars           | text-to-skip-first-chars                                                         |\n|Text     | skip-last-chars            | text-to-skip-last-chars                                                          |\n|Text     | suffix                     | text-to-suffix                                                                   |\n|Text     | suffix-new-line            | text-to-suffix-new-line                                                          |\n|Text     | suffix-space               | text-to-suffix-space                                                             |\n|Text     | text-to-datetime           | text-to-dateTime                                                                 |\n|Text     | text-to-html               |                                                                                  |\n|Text     | text-to-mask               |                                                                                  |\n|Text     | token                      | text-to-token                                                                    |\n|Text     | token-count                | text-to-token-count                                                              |\n|Text     | trim                       | text-to-trim                                                                     |\n|Text     | upper                      | text-to-upper                                                                    |\n|Text     | whitespaces-to-empty       | blank-to-empty                                                                   |\n|Text     | whitespaces-to-null        | blank-to-null                                                                    |\n|Text     | without-diacritics         | text-to-without-diacritics                                                       |\n|Text     | without-whitespaces        | text-to-without-whitespaces                                                      |\n\u003c!-- END FUNCTION TABLE --\u003e\n\n### Predicates\n\u003c!-- START PREDICATE TABLE --\u003e\n|Scope    | Name                           | Aliases                               |\n|-------- | ------------------------------ | --------------------------------------|\n|Boolean  | false                          | boolean-is-false                      |\n|Boolean  | false-or-null                  | boolean-is-false-or-null              |\n|Boolean  | identical-to                   | boolean-is-identical-to               |\n|Boolean  | true                           | boolean-is-true                       |\n|Boolean  | true-or-null                   | boolean-is-true-or-null               |\n|Numeric  | equal-to                       | numeric-is-equal-to                   |\n|Numeric  | even                           | numeric-is-even                       |\n|Numeric  | greater-than                   | numeric-is-greater-than               |\n|Numeric  | greater-than-or-equal          | numeric-is-greater-than-or-equal      |\n|Numeric  | integer                        | numeric-is-integer                    |\n|Numeric  | less-than                      | numeric-is-less-than                  |\n|Numeric  | less-than-or-equal             | numeric-is-less-than-or-equal         |\n|Numeric  | modulo                         | numeric-is-modulo                     |\n|Numeric  | negative                       | numeric-is-negative                   |\n|Numeric  | negative-or-zero               | numeric-is-negative-or-zero           |\n|Numeric  | odd                            | numeric-is-odd                        |\n|Numeric  | one                            | numeric-is-one                        |\n|Numeric  | opposite                       | numeric-is-opposite                   |\n|Numeric  | positive                       | numeric-is-positive                   |\n|Numeric  | positive-or-zero               | numeric-is-positive-or-zero           |\n|Numeric  | within-interval                | numeric-is-within-interval            |\n|Numeric  | zero                           | numeric-is-zero                       |\n|Numeric  | zero-or-null                   | numeric-is-zero-or-null               |\n|Special  | null                           | is-null                               |\n|Temporal | after                          | dateTime-is-after                     |\n|Temporal | after-or-same-instant          | dateTime-is-after-or-same-instant     |\n|Temporal | before                         | dateTime-is-before                    |\n|Temporal | before-or-same-instant         | dateTime-is-before-or-same-instant    |\n|Temporal | business-day                   | dateTime-is-business-day              |\n|Temporal | contained-in                   | dateTime-is-contained-in              |\n|Temporal | in-the-future                  | dateTime-is-in-the-future             |\n|Temporal | in-the-future-or-now           | dateTime-is-in-the-future-or-now      |\n|Temporal | in-the-future-or-today         | dateTime-is-in-the-future-or-today    |\n|Temporal | in-the-past                    | dateTime-is-in-the-past               |\n|Temporal | in-the-past-or-now             | dateTime-is-in-the-past-or-now        |\n|Temporal | in-the-past-or-today           | dateTime-is-in-the-past-or-today      |\n|Temporal | leap-year                      | dateTime-is-leap-year                 |\n|Temporal | on-the-day                     | dateTime-is-on-the-day                |\n|Temporal | on-the-hour                    | dateTime-is-on-the-hour               |\n|Temporal | on-the-minute                  | dateTime-is-on-the-minute             |\n|Temporal | same-instant                   | dateTime-is-same-instant              |\n|Temporal | today                          | dateTime-is-today                     |\n|Temporal | tomorrow                       | dateTime-is-tomorrow                  |\n|Temporal | weekday                        | dateTime-is-weekday                   |\n|Temporal | weekend                        | dateTime-is-weekend                   |\n|Temporal | within-current-month           | dateTime-is-within-current-month      |\n|Temporal | within-current-week            | dateTime-is-within-current-week       |\n|Temporal | within-current-year            | dateTime-is-within-current-year       |\n|Temporal | within-last-month              | dateTime-is-within-last-month         |\n|Temporal | within-last-week               | dateTime-is-within-last-week          |\n|Temporal | within-last-year               | dateTime-is-within-last-year          |\n|Temporal | within-next-days               | dateTime-is-within-next-days          |\n|Temporal | within-previous-days           | dateTime-is-within-previous-days      |\n|Temporal | within-upcoming-month          | dateTime-is-within-upcoming-month     |\n|Temporal | within-upcoming-week           | dateTime-is-within-upcoming-week      |\n|Temporal | within-upcoming-year           | dateTime-is-within-upcoming-year      |\n|Temporal | yesterday                      | dateTime-is-yesterday                 |\n|Text     | any-of                         | text-is-any-of                        |\n|Text     | contains                       | text-contains                         |\n|Text     | empty                          | text-is-empty                         |\n|Text     | empty-or-null                  | text-is-empty-or-null                 |\n|Text     | ends-with                      | text-ends-with                        |\n|Text     | equivalent-to                  | text-is-equivalent-to                 |\n|Text     | lower-case                     | text-is-lower-case                    |\n|Text     | matches-date                   | text-matches-date                     |\n|Text     | matches-datetime               | text-matches-datetime                 |\n|Text     | matches-numeric                | text-matches-numeric                  |\n|Text     | matches-regex                  | text-matches-regex                    |\n|Text     | matches-time                   | text-matches-time                     |\n|Text     | sorted-after                   | text-is-sorted-after                  |\n|Text     | sorted-after-or-equivalent-to  | text-is-sorted-after-or-equivalent-to |\n|Text     | sorted-before                  | text-is-sorted-before                 |\n|Text     | sorted-before-or-equivalent-to | text-is-sorted-before-or-equivalent-to|\n|Text     | starts-with                    | text-starts-with                      |\n|Text     | upper-case                     | text-is-upper-case                    |\n\u003c!-- END PREDICATE TABLE --\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseddryck%2Fexpressif","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseddryck%2Fexpressif","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseddryck%2Fexpressif/lists"}