Added a third user script --- for changing format depending on whether there is a comma-delimited page range or a dash-delimited one --- to test5. This brought out a bug in a corner use case in citekey sorting when the 'year' field is a negative number. Fixing this required adding a few lines to the citation sorting code in bibulous.
Added two new items to test1 in the testing suite: author_firstname_initials and editor_firstname_initials.
Adding the 'use_firstname_initials' test into test1 uncovered a bug in the testing suite --- the default options were not being read in correctly. To fix this, I replaced 'bibobj.parse_bstfile(bstfiles[0])' with 'bibobj.parse_bstfile('./test/test1.bst')' to explicitly load the file rather than assuming it to be at the front of the list. But it *was* at the front of the list, so I'm not sure what the problem was....
Updated the TODO file, removing the stuff I recently incorporated into the testing suite.
Added the 'edition_ordinal' check to test1 in the testing suite. This revealed a bug in bibulous.py's create_edition_ordinal() function, which is now fixed.
Added the 'for_japanese_audience' user variable in test5 of the testing suite. This turned out to dig up two bugs in some very old code -- the code for evaluating a [...|...] train of options and see if the variables inside each block of the train are all defined. These bugs are now fixed.\n\nAdditionally, implementing this new user variable required a rather long template, so I decided to implement a line continuation syntax, when a line ends with '...'. So far it appears to be working fine.
Added the self.disable list to the Bibdata class. Allowing many of the class methods and module-level functions to make use of this required making a new function warn() and adding glue code to all of those functions. Appears to be working well.
Mistakenly committed changes to test2.bbl while running the code, so that a blank file got into the committed code. Duh. This file is a complete version.