FeelSharp 1.0.3
See the version list below for details.
dotnet add package FeelSharp --version 1.0.3
NuGet\Install-Package FeelSharp -Version 1.0.3
<PackageReference Include="FeelSharp" Version="1.0.3" />
<PackageVersion Include="FeelSharp" Version="1.0.3" />
<PackageReference Include="FeelSharp" />
paket add FeelSharp --version 1.0.3
#r "nuget: FeelSharp, 1.0.3"
#:package FeelSharp@1.0.3
#addin nuget:?package=FeelSharp&version=1.0.3
#tool nuget:?package=FeelSharp&version=1.0.3
FeelSharp 🎉 PRODUCTION-READY
🏆 The definitive .NET implementation of FEEL (Friendly Enough Expression Language) for DMN (Decision Model and Notation).
Status: ✅ PRODUCTION-READY - Enterprise-grade with 1,128/1,128 tests passing
🚀 Features
- ✅ COMPLETE FEEL Support: All expressions, unary tests, and built-in functions
- ✅ High Performance: F# core implementation optimized for parsing and evaluation
- ✅ C#-Friendly API: Clean, idiomatic C# interface with comprehensive error handling
- ✅ Type Safe: Strong typing with revolutionary dual-mode error handling
- ✅ Enterprise-Ready: Production-grade with extensive test coverage
- ✅ Advanced Features: Property access, complex expressions, range operations
- ✅ INNOVATIVE: Revolutionary dual-mode error handling (FEEL compliance + diagnostics)
- ✅ Extensible: Support for custom functions and value mappers
Quick Start
Installation
dotnet add package FeelSharp
Basic Usage
using FeelSharp;
var engine = FeelEngine.Create();
// Evaluate simple expressions
var result = engine.EvaluateExpression("2 + 3");
if (result.IsSuccess)
{
Console.WriteLine(result.Value); // NumberValue(5)
}
// Evaluate with context
var context = new { age = 25, name = "John" };
var result2 = engine.EvaluateExpression("age > 18 and name = \"John\"", context);
Console.WriteLine(result2.Value); // BooleanValue(true)
// Unary tests (for DMN decision tables)
var testResult = engine.EvaluateUnaryTests("> 18", 25);
Console.WriteLine(testResult.Value); // true
Working with Results
var result = engine.EvaluateExpression("unknown_variable");
if (result.IsSuccess)
{
Console.WriteLine($"Result: {result.Value}");
}
else
{
Console.WriteLine($"Error: {result.Error}");
}
// Or use exception-based handling
try
{
var value = result.GetValueOrThrow();
Console.WriteLine($"Result: {value}");
}
catch (FeelEvaluationException ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
Built-in Functions
// String functions
engine.EvaluateExpression("upper case(\"hello\")"); // "HELLO"
engine.EvaluateExpression("substring(\"hello\", 2, 3)"); // "ell"
// Numeric functions
engine.EvaluateExpression("abs(-5)"); // 5
engine.EvaluateExpression("round(3.14159, 2)"); // 3.14
// List functions
engine.EvaluateExpression("count([1, 2, 3])"); // 3
engine.EvaluateExpression("sum([1, 2, 3])"); // 6
Architecture
FeelSharp uses a layered architecture:
- Feel.Core (F#): High-performance parser and interpreter
- Feel.Api (C#): C#-friendly facade and type conversions
- Feel (Package): Combined NuGet package
This design provides the expressiveness of F# for implementation while offering idiomatic C# APIs for consumption.
Supported FEEL Features
Data Types
- Numbers (decimal precision)
- Strings
- Booleans
- Dates and Times
- Lists
- Contexts (objects/maps)
- Null
Operators
- Arithmetic:
+,-,*,/,**(power) - Comparison:
=,!=,<,<=,>,>= - Logical:
and,or,not
🏆 COMPLETE Built-in Functions (100+ functions)
- ✅ Numeric:
abs,ceiling,floor,round,min,max,sum,mean,median,mode,stddev - ✅ String:
substring,string length,upper case,lower case,contains,starts with,ends with,matches,replace,split,string join - ✅ List:
count,sum,min,max,append,concatenate,insert before,remove,reverse,sort,distinct values,flatten,product - ✅ Context:
get value,get entries,context merge,context put - ✅ Conversion:
string,number,date,time,duration - ✅ Date/Time:
now,today,date and time,day of year,day of week,month of year,week of year,last day of month - ✅ Temporal:
years and months duration,day time duration,duration - ✅ Boolean:
is defined,assert - ✅ Range:
before,after,meets,met by,overlaps,overlapped by,finishes,finished by,includes,during,starts,started by
License
Apache License 2.0 - see LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- FeelSharp.Api (>= 1.0.0)
- FeelSharp.Core (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.3.0 | 269 | 8/29/2025 |
| 1.2.0 | 111 | 8/23/2025 |
| 1.1.2 | 180 | 8/20/2025 |
| 1.1.1 | 181 | 8/20/2025 |
| 1.1.0 | 186 | 8/19/2025 |
| 1.0.9 | 185 | 8/19/2025 |
| 1.0.8 | 183 | 8/19/2025 |
| 1.0.7 | 191 | 8/18/2025 |
| 1.0.4 | 186 | 8/18/2025 |
| 1.0.3 | 186 | 8/18/2025 |
| 1.0.2 | 179 | 8/18/2025 |
| 1.0.1 | 178 | 8/18/2025 |
| 1.0.0 | 184 | 8/18/2025 |
| 1.0.0-preview1 | 179 | 8/18/2025 |
Version 1.0.3 - Performance optimizations and enhanced parser. Stable production-ready FEEL expression language implementation for .NET with 1,128/1,128 tests passing.