Skip to content

Repository files navigation

Maestria.Extensions

NuGet Version NuGet Downloads Apimundo



buy-me-a-coffee smile.png

If my contributions helped you, please help me buy a coffee :D

donate


What is Maestria.Extensions?

Extension function pack to increase productivity and improve source code writing. By default, all extension methods are safe.


What is Maestria Project?

This library is part of Maestria Project.

Maestria is a project to provide productivity and elegance to your source code writing.


Where can I get it?

Install the Maestria.Extensions using the command line:

dotnet add package Maestria.Extensions

How do I get started?

First, import "Maestria.Extensions" reference:

using Maestria.Extensions;

Then in your application code, use fluent syntax:

// 1. Numeric rounding
using Maestria.Extensions;
decimal value = 3.14159m;
var rounded = value.Round(2); // 3.14
// Detailed: [Number extensions](docs/usage/number.md)

// 2. Range check
int score = 85;
bool isGradeB = score.Between(80, 89); // true
// Detailed: [Comparable extensions](docs/usage/comparable.md)

// 3. Enum display name
DayOfWeek day = DayOfWeek.Monday;
string name = day.GetDisplayName(); // "Monday"
// Detailed: [Enum extensions](docs/usage/enum.md)

// 4. Collection has items
var list = new[] { 1, 2, 3 };
bool has = list.HasItems(); // true
// Detailed: [Enumerable extensions](docs/usage/enumerable.md)

// 5. String trimming
string path = "/folder/";
var trimmed = path.TrimEnd("/"); // "/folder"
// Detailed: [String extensions](docs/usage/string.md)

// 6. XML escaping
string xml = "<tag>\"Value\" & More</tag>";
var escaped = xml.EscapeXml(); // "&lt;tag&gt;&quot;Value&quot; &amp; More&lt;/tag&gt;"
// Detailed: [String extensions](docs/usage/string.md)

// 7. Base64 encoding
string text = "hello";
var b64 = text.ToBase64(); // "aGVsbG8="
// Detailed: [String extensions](docs/usage/string.md)

// 8. Guid handling
Guid guid = Guid.Empty;
var newGuid = guid.IfEmpty().Then(Guid.NewGuid());
// Detailed: [Other extensions](docs/usage/other.md)

// 9. Pipeline example
var result = "12345"
    .OnlyNumbers()
    .Format("{0:###-##}"); // "123-45"
// Detailed: [String extensions](docs/usage/string.md)

Data Types

The library ships with two expressive result types that eliminate boilerplate error handling:

Result and Result<TValue>

// Result — implicit conversions keep method signatures clean
public Result Save(Order order)
{
    if (order == null) return "Order cannot be null"; // implicit failure
    // ...
    return true; // implicit success
}

var result = Save(order);
if (result) Console.WriteLine("Saved!");
else        Console.WriteLine(result.Message);

Try<TSuccess, TFailure>

// Try<TSuccess, TFailure> — distinct types for success and failure
public Try<OrderCreated, ValidationError> Submit(Order order) { ... }

var r = Submit(order);
if (r) Console.WriteLine($"Order ID: {r.Value.Id}");
else   Console.WriteLine($"Error {r.Failure.Code}: {r.Failure.Message}");

See docs/usage/datatypes.md for full documentation, implicit conversion rules, Result<T>, and advanced usage.


Settings

It's possible set default settings for library:

MaestriaExtensionsSettings.Configure(config => config
    .FloatingPointTolerance(<default-float-and-double-comparasion-tolerance>) // Default is 0.00001f
    .DefaultEncoding(<encoding>) // Default if Encoding.UTF8

Full usage documentations

There are many more extension methods available. See the full documentation:

Topic Samples methods
Comparable & fluent expressions Between, In, LimitToMin, LimitToMax, fluent If...Then, NullIf
Data types Result, Try<TSuccess, TFailure>
Enum extensions GetDisplayName, GetDescription, GetValues
Enumerable & collection extensions HasItems, IsNullOrEmpty, Iterate, TryGetValue, WithIndex
Number extensions Round, RoundUp, Truncate for numeric types
Other extensions OutVar and pipeline helpers
String extensions Trimming, substring, hashing, Base64, encoding, and more

Extra documentations

See additional documentations at docs folder.


buy-me-a-coffee smile.png

If my contributions helped you, please help me buy a coffee :D

donate

About

Extension function pack to increase productivity and improve source code writing.

Resources

Contributing

Stars

7 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages