Friday, August 22, 2008

BooLangStudio 1.0 Alpha 1 in the wild

After much slacking off, an alpha release of BooLangStudio has been released for public review. It is can be downloaded here.

This release has a slew of changes, including:
  • A proper installer (finally)
  • works in the main hive (finally)
  • a project property page
  • debugger breakpoints (w00t!)
  • James Gregory's initial intellisense implementation. This is still a work in progress and is lacking alot of functionality, such as: intellisense on method arguments, self, super, etc. No support for showing a method signature tooltip on methods with overloads (always shows the first overload). For some reason, the intellisense is only showing up when you do a ctrl+space (this is most likely a result of the merge I did).
  • improved syntax highlighting
It's the culmination of alot of work and I'm really excited and proud to be a part of this effort.

Sadly, due to some issues with Boo.Pegs and a refactoring in Boo.Lang.List, you can't build BooLangStudio from source when using this newest version. I plan to address this very soon by reworking the BooPegLexer over to being Boo.OMeta-based, instead.

Tuesday, July 15, 2008

Something that's possible in Boo's trunk that wasn't before...

...An implementation of the AutoMockingContainer wrapper in Boo. Compiles cleanly on svn rev 3018:
namespace AMC

import System
import Rhino.Mocks
import Rhino.Testing.AutoMocking

public abstract class AutoMockingTestFixture:

[property(Mocks)]
private _mocks as MockRepository

[property(Container)]
private _container as AutoMockingContainer

public def constructor():
_mocks = MockRepository();
_container = AutoMockingContainer(_mocks);
_container.Initialize();

public def Create[of T]() as T:
return _container.Create[of T]()

public def Mock[of T(class)]() as T:
return _container.Get[of T]()

public def Provide[of TService, TImplementation]() as void:
_container.AddComponent(typeof(TImplementation).FullName, typeof(TService), typeof(TImplementation))

public def Provide[of TService](instance as object) as void:
_container.Kernel.AddComponentInstance(instance.GetType().FullName, typeof(TService), instance)


The main item of note here is the Mock[of T]() method, which has a constraint on it and looks like this:
public def Mock[of T(class)]() as T:
return _container.Get[of T]()


This maps to the corresponding C# code:
public T Mock() where T : class {
return _container.Get()
}

Pretty cut'n'dry, no? Thanks to Avishay Lavie who is spearheading this effort, it seems (and who also notes that the constraints implementation is still incomplete at this time).

Thursday, June 12, 2008

Lulz

Thursday, April 24, 2008

Hello world!

My very first blarg post. yay for me.