Wednesday, August 11, 2010

EnumerationExtensions

Here is an extension that helps with bitwise operations on (flagged) enums.

[Flags]
public enum Positions
{
None = 0, Left = 1, Right = 2, Top = 4, Bottom = 8,}

public static class EnumerationExtensions
{ public static T Append<T>(this Enum type, T value)
{ return (T)(object)(((int)(object)type | (int)(object)value)); } public static T Remove<T>(this Enum type, T value)
{ return (T)(object)(((int)(object)type & ~(int)(object)value)); } public static bool Contains<T>(this Enum type, T value)
{ return (((int)(object)type & (int)(object)value) == (int)(object)value); } public static bool ContainsAny<T>(this Enum type, T value)
{ return (((int)(object)type & (int)(object)value) != 0); } public static bool ContainsNot<T>(this Enum type, T value)
{ return !Contains(type, value); } public static bool Is<T>(this Enum type, T value)
{ return (((int)(object)type == (int)(object)value)); } }


then you'll be able to write tests like this :

Positions twoPositions = Positions.Left | Position.Top;
Console.WriteLine(twoPositions.Contains(Position.Top)) // true
Positions position = Positions.None;
position.Append(Position.Bottom);
Console.WriteLine(position.Is(Position.Bottom)); // true (None is overwritten)

Sunday, January 10, 2010

Comparing (Open)Office documents versions using TortoiseSVN !

Call me a noob for not knowing this already, but I just discovered a ‘prittttty’ useful trick for comparing Office (/ OpenOffice) documents versions. (Windows boxes only sorry)
Cool thing is that Word and Excel 2007 support documents comparisons / reviewing.
And called with the right arguments, reviewing can be automated using external tools.

See, as I’ve got my technical documents versioned by SVN along with my code files, I discovered TortoiseSVN is capable of launching different Diff/Merge tools based on the file extension.
You will only need to provide it with some script files that are not currently packaged with the Tortoise setup.

diff-scripts on github

Simply put them into the Diff-Scripts folder of your tortoise setup

“C:\Program Files\TortoiseSVN\Diff-Scripts\”

Then you can right-click on your .docx / .xlsx / .ppt / .od* / .sxw document that are under revisioning control and needs to be reviewed/committed and simply click ‘Diff’ in the TortoiseSVN right-click menu.

It will open the corresponding software in review mode.

Have a look at what it looks like in Word :


neat !