Provides pools, a type that manages other objects, like an object heap, retention pool, distributed pool, etc.

collection, collections, container, containers, data, structure, structures, abstract, type, types, adt, trait, traits, pool, pools, deck, decks, card, cards
Install-Package Collectathon.Pools -Version 5.0.0-beta.7


Gitter Build Status Codacy Badge Beerpay

Stringier is a collection of projects to make working with text better.

Extension methods? ✔️ High performance parsing? ✔️ Easy to use? ✔️

Everyone works with text. Let's make it better.


Thanks to GitHub Pages, documentation is available here

Contributor documentation is provided here and in the wiki.

The goals and purpose of this project is provided here;

Subprojects: Nuget

Extensions Nuget Nuget

Stringier was born out of my typical use case of C#: working with text. While I generally really like the language, it could be better. Some of this is syntax related. Some of this is missing features. This project exists to remedy that.

Patterns Nuget Nuget Nuget Nuget

Patterns extends Stringier with further support for pattern declaration and parsing of those patterns. If you're doing a lot of text parsing or text processing, this is probably of interest to you.

Syntax Showdown:

This is just in good fun. There's a lot more to consider than just syntax.


Regex phoneNum = new Regex("^[0-9]{3}-[0-9]{3}-[0-9]{4}");


Parser<char, string> phoneNum = Digit.RepeatString(3).Then(Char('-')).Then(Digit.RepeatString(3)).Then(Char('-')).Then(Digit.RepeatString(4));


let phoneNum = attempt (digit .>>. digit .>>. digit .>>. pchar '-' .>>. digit .>>. digit .>>. digit .>>. pchar '-' .>>. digit .>>. digit .>>. digit .>>. digit)


Pattern phoneNum = DecimalDigitNumber.Repeat(3).Then('-').Then(.DecimalDigitNumber.Repeat(3)).Then('-').Then(DecimalDigitNumber.Repeat(4));
let phoneNum = DecimalDigitNumber * 3 >> DecimalDigitNumber * 3 >> DecimalDigitNumber * 4