So, after last evening work, I passed the night (yes, the whole night) working on RubyTag++. It wasn’t easy, I had to smash my head against the wall a couple of times at least as there are things on the documentation that doesn’t really seem to behave as told.
At the end I worked around by using an empyrical evil evil hack, that I won’t comment over for now, as it was probably sheer luck if it worked, but anyway that allowed me to proceed to concentrate on more things.
At about 7am CEST I was able to read basic tags out of FLAC files, a couple of minutes later I was also able to set them. Okay not much useful this randomness, but worked :)
I had to fight also with optional parameters, but I resolved by adding more data to the yml and then having a switch/case statement to get the right call when the parameters are omitted.
Maybe the generated code is not elegant, but screw that, it’s generated code, after all :P
I’ve then added a few more supports in the yml that’s still in flux, as I’ve changed a couple of declarations in the run, it will probably remain in flux until it’s entirely finished.
Right now I can: get and set the basic tags as if they were variables in Ogg and FLAC tags; strips tags from MP3s; get basic audio information on files; get extra information out of Ogg Vorbis files.
Not bad after all, considering that I’ve wrote a good deal of it during the night instead of sleeping.
Adding more support like ID3v1/ID3v2 access should be just matter of tweaking the description yml at this point.
As soon as I can do that reliably, I’ll restart the work on JulTagger, my Korundum audio file tagger, so that I can get rid of EasyTag entirely :)
On a little note, I’d like to say that functions like File::isReadable and File::isWritable and similar are not being binded, why should I, when Ruby already provides the standard library for those? :P