Argument validation framework released

Download:
http://www.puzzleframework.com/Roger/alsingcore.zip

I’ve finally got my thumb out and cleaned up and made a mini framework of the fluent argument validation concept I blogged about in my last post: http://rogeralsing.com/2008/05/10/followup-how-to-validate-a-methods-arguments/

The framework contains a little bit of everything.

Fluent Argument Validation Specification.
An extensible argument validation system based on a fluent extension method API.
(Maybe I should work at marketing ;-) )

Async fork.
A fluent API for performing async operations.

Text parser.
A Deterministic Finite-State Automata based parser.
It is the same parser that we used in NPath for NPersist but with a cleaned up API.

Flextensions.
A handful of useful extension methods to increase expressiveness.
Loggers, casting, formatting etc.

Generic Math.
A generic numeric type that supports math operations.

 

Examples:

Validation pre conditions:

static string ValidationFunc(int a,string b,DateTime c)
{
  //pre conditions:
  a.Require("a")
   .IsGreaterThan(10);

  b.Require("b")
   .NotNull()
   .NotEmpty()
   .LongerThan(2)
   .StartsWith("Ro");

  c.Require("c")
   .IsInRange(new DateTime(2000, 01, 01),
   new DateTime(2010, 01, 01));

Validation post conditions:

string res = "Foo";
//post condition:
return res.Require("res")
          .NotNull()
          .LongerThan(2)
          .ShorterThan(100);

Async fork:

static int ForkIt()
{
   int a = 0;
   int b = 0;

   //begin async fork
   Fork.Begin()
       .Call(() => a = SomeSlowCall())
       .Call(() => b = SomeOtherSlowCall())
       .End();
   //async fork done
   return a + b;
}

Flextensions:

//fluent casts, no need to wrap in ((int)var).
someVar.Cast<Foo>().Bar();
someVar.As<Boo>().Yoo();

//formatting and output;
myVar.FormatAs("myVar is: {0}").Output();

"Hello {0} {1}".FormatWith(firstName,LastName).Output();

"ROGER ALSING".ToProperCase().Output();

//string matching
bool match = myString.Like("Roger%");
bool match = myString.Match(regexPattern);

 More examples can be found in the demo project and in the unit tests in the same zip as the framework. 

Enjoy.
//Roger

Download:
http://www.puzzleframework.com/Roger/alsingcore.zip

Follow

Get every new post delivered to your Inbox.