I decided to do a straight Perl to Ruby conversion of Spreadsheet::WriteExcel version .20 yesterday. I jammed for a couple of hours, no tests, worked out the syntax errors and ..... no love.
I did something wrong somewhere. The file size is way off. In other words, I threw a bomb on 1st and 10 but ended up tossing an incomplete pass.
For my 2nd down play I decided to go with a more conservative slant right and port version .26 instead. I can handle formats. Formulas (formulae?) are another story. For extra blocking power I'm pulling the left guard and doing unit tests to keep me out of trouble.
I figured I could do unit tests by running a simple Perl script, checking the output and/or file size and then compare that against my Ruby code. I can get away with this approach because *I know* John's code works (thanks John!). That has also meant running lots of class methods independently that you normally wouldn't run independently (or at all). Sometimes a lack of 'private' is a good thing. None of those pesky errors to prevent me from doing what I want to do. :)
So far that strategy has paid off, even if it has been slow going. I've caught a few subtle, but significant bugs that could account for the earlier disaster. So far the BIFFWriter and OLEWriter classes look good. The only design change I decided on was to make OLEWriter a subclass of File, rather than store a separate filehandle within the class.