Support `properties` and `complexProperties`
It would be great if we supported properties and complexProperties, to allow users of the library to use the unified interface FileRef instead of the format-specific APIs, see https://github.com/robinst/taglib-ruby/pull/143#issuecomment-2053594803
See here for API usage docs: https://taglib.org/api/
If you take one of those C++ FileRef examples, what do you think it should look like as Ruby code?
Hi. I had a play with this and concluded that just type converting betweene PropertyMap to a Ruby Hash<String,Array<String>> is likely to be easier to use than using the methods on PropertyMap itself.
I ended up with merge_properties(Hash) and replace_properties(Hash) on FileRef to write the properties back.
The same technique for reading complexProperties would be easy enough. Writing back to the Variant might be more complex, eg if you have to track the specific int type when building up the Variant object.
My hackery was just using rice.hpp to wrap FileRef in a very simple way and I do wonder if using the FileRef/PropertyMap API is an either or thing (vs using the specific File types); and that it could actually be presented as a separate gem.