All entries for June 2006

June 27, 2006

Rhino Mocks Boo Macros Released

Writing about web page http://www.equin.co.uk/boo/rmbm.htm

My Boo syntactic macros for the Rhino Mocks mock object library are available to test. I've only spent a few days working on them but they are already powerful.

For download links and docs see preliminary documentation


June 23, 2006

Mackery: "Macro Hackery

I've been doing some pretty hairy stuff with Boo macros. AST manipulation to the extreme :p

I came up with the term "Mackery" – Macro Hackery!


June 14, 2006

Commoditization of Spreadsheets = Office Express?

Writing about web page http://spreadsheet.google.com/

With the release of Google's new free spreadsheet service targeted at low–end, home users, will we see the commoditization of spreadsheets? Microsoft has recently made free "Express" editions of their programming environments. Perhaps Microsoft will release kind of "Office Express" – a cut down version of Office – for free?

Google Spreadsheet still feels very green and lacks some of the key features which even low–end users may want e.g. Charting. I know they will keep rolling–out features, but being stuck in the browser does have its limits.

However, paying top dollar for MS Office when there are free alternatives will certainly start to make people think (at least in the SOHO and academic environments). An Office Express would certainly slow the desertion to other free products (especially Open Office).


June 12, 2006

BDD Meta–programming

I'm working on a Boo macro library for Rhino Mocks . I'm "dog-fooding" my Specter behaviour driven development framework in the process.
I have to be able to specify how a macro should expand into real code. The spec code is now looking like this:
specify "x as int arg is sent as 0":
check(
ast { disallow foo.Bar(x as int) },
ast { foo.Bar(0); Rhino.Mocks.LastCall.Repeat.Never() }
)

I'm loving how flexible the Boo language is. It's hard to believe that the code is still Boo!

"check" is a function that expands the first argument using the macro being spec'd and makes sure it matches the second argument. (check is actual a partial application of a general check function that takes the macro first)

check = { input as MacroStatement, expected as Node | CheckMacro(macro, input, expected) }
def CheckMacro(macro as AbstractAstMacro, input as MacroStatement, expected as Node):
m = Method()
m.Body.Add(input)
NUnit.Framework.Assert.AreEqual(
expected.ToCodeString().Trim(),
macro.Expand(input).ToCodeString().Trim()
)

June 07, 2006

Technorati Setup

Technorati Profile

Google Ads

Search this blog

Most recent comments

  • I scratched my eye while i was holding some kind of plastic packaging.. Anyways the corner of the pl… by Ercan on this entry
  • About a year ago my contacts that i was wearing, i guess were fautly, because shortly after they wer… by Jon on this entry
  • I got shower gel in my eye 4 and a half days ago, and becasue i rubbed my eyes a lot, i have scratch… by Chris on this entry
  • This website may help http://www.webmd.com/eye–health/tc/Eye–Injuries–Home–Treatment by S on this entry
  • I somehow got dirt, or debris in my eye. The terrible pain sent me in a tailspin. I was afraid of sa… by Bobbi on this entry

Tags

June 2006

Mo Tu We Th Fr Sa Su
May |  Today  | Jul
         1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30      

Galleries

Blog archive

Loading…
Not signed in
Sign in

Powered by BlogBuilder
© MMXX