A new project just came in last week. We need to analyze Opera desktop builds (like this one) and extract all settings from them and populate a nice database.
We can do that quite easily since Opera stores most of its settings as either .ini or bookmarks (.adr) files.
In Perl land, we can use Config::IniFiles and Bookmarks::Parser to do most of this. We had to subclass
Config::IniFiles to skip the non-standard
Opera Preferences file ... first line, while
Bookmarks::Parser, that includes an Opera-specific
Bookmarks::Opera class, wasn't updated with all the latest Opera-specific properties we use in our Desktop builds.
Working on our first prototype of this build cataloger tool, we "patched"
Bookmarks::Opera to do what we needed, but the solution that makes the most long-term sense is to bring back some love upstream, so have our patches in the CPAN version of
Bookmarks::Parser. It's what makes the most sense to me anyway, so I usually always try to get in touch with the current author or maintainer.
That's what I did in this case too, with great results. I was given co-maintainer bit in less than 24 hours. Rest of the story is in the github repository now:
- Fixed a couple of bad bugs in the Opera bookmarks parser
- Added test cases for those bugs, plus a sample of our current Desktop build bookmarks file
Then, since I had a spare couple of hours during this weekend:
- I fixed all bugs ever reported in the RT queue (2 LOL), which were more than 5 years old
- Added some documentation love
So, now we'll just package the stock CPAN version of
Bookmarks::Parser instead of maintaining our own patched version, plus whoever attempts to use it to work with Opera files will be happier.
Source code, as usual, up on https://github.com/cosimo/Bookmarks-Parser, and CPAN is now at v0.04.