A .Net port of ActiveSupport library of Ruby on Rails. The goal is to extend Base Class Library for Common Usage with human readable syntax.
You can use NSupport by using either Nuget OR DLL download.
Install-Package NSupport
More information about nuget package at http://www.nuget.org/List/Packages/NSupport.
You can download the latest released DLL and add reference to your project.
NSupport extends the BCL by adding extension methods, so you need to add the using reference to your code.
using NSupport;
NSupport extends DateTime and DateTimeOffset to allow you to write as below and more:
var june18 = new DateTime(2011,6,18);
june18.Tomorrow(); // 2011/06/19
june18.Yesterday(); // 2011/06/17
june18.Nextyear(); // 2012/06/18
june18.EndOfDay(); // 2011/06/18 23:59:59
june18.BeginnerOfMonth(); // 2011/06/01
june18.EndOfMonth(); // 2011/06/30 23:59:59
june18.BeginningOfWeek(); // 2011/06/12
june18.NextWeek(DayOfWeek.Friday); // 2011/06/24
june18.BeginningOfQuarter(); // 2011/04/01
june18.IsToday(); // true if today is june 18 2011 regardless of time
june18.Change(years: 2010); // 2010/06/18
it also extends Integer to enable to write as:
2.IsEven(); // true
1.IsEven(); // false
0.IsOdd(); // false
15.IsMultipleOf(3); // true
1.Byte(); // 1
1.Kilobyte(); // 1024
2.Megabytes(); // 2*1024*1024
// looping 10 times
10.Times(() => {
// do something which will be executed for 10 times.
});
1.Hour(); // Timespan of 1 hour
30.Minutes().Ago(); // 30 minutes ago
(2.Hours() + 20.Minutes()).FromNow(); // 2 hours and 20 minutes from now
10.Hours().Since(new DateTime(2011,6,18)); // 2011/06/18 10:00:00
converting string to numbers.
"10".ToInt32(); // convert to int 10
"10,000".ToDecimal(); // convert to decimal 10000
"5".AsInt32(); // convert to int? 5
"notValidNumber".AsInt32(); // return null
var i = "notValidNumber".AsInt32() ?? -1; // i will have -1 (no more int.TryParse :) )
formatting string.
"{0} is {1} years old".FormatWith("Michael", 23); // Michael is 23 years old.
securing text
var password = "awesomeSecretPassword";
var salt = "123jfe3EJV24098EC"; // or Guid.NewGuid().ToString("N");
// hash password, so that no one can retrieve password
var digestPassword = password.ToHashString(salt);
var importantText = "this is super important text, so it need to be encrypt.";
var secretKey = "thisIsSecretKey";
// encrypt text so that other cannot read but I have key, so I can decrypt back to original one
var encryptedText = importantText.Encrypt(secretKey);
// decrypt to original
var decryptedText = encryptedText.Decrypt(secertKey); // decryptedText == importantText
If you find any bug, please file a bug in Github Issue.
If you have any idea for extending BCL or any doubt in using NSupport, please post message in discussion board.
If you want to hack NSupport, start by forking my repo on GitHub: