Reform, a fan-fiction reformatting tool



Release: 2.11 (2006-12-04)

  • Fixed an off-by-one error in the line wrapping code that would cause single-character "words", which were also the first character in the block, to be truncated in extreme circumstances; "extreme" here meaning unlikely to happen outside of some pedantic test cases.
  • Fixed an indexing error which would occasionally cause the line wrapping code to fail to properly wrap a block when it contained multiple, sequential tab characters.
  • Added the comma, semi-colon, and ampersand characters (,;&) to the list of characters allowed within a separator line.
  • Made a few improvements to the build system based on suggestions by David Ross. Chief among the changes is a new configure script option (--enable-universal-binary) which automates the building of a Universal Binary version of Reform on Mac OS X.

Release: 2.10 (2006-04-01)

  • Changed XHTML output mode to output preformatted text in logical chunks, rather than as individual lines.
  • Rewrote large portions of the source code to eliminate the usage of the PCRE library. The only requirement to compile reform now is the reform source itself.
  • Retired the remaining depreciated command line options.

Release: 2.00 (2005-10-08)

  • The respacing code now understands more quoting characters.
  • HTML output mode, which used HTML 4.01 Transitional, has been retired in favor XHTML output mode, which uses XHTML 1.0 Strict.
  • XHTML output mode removes all blank lines, except when the blankline option is used and then all tags/blocks are separated by one blank line.
  • The options were changed significantly for various reasons and it's suggested that you re-familiarize yourself with them. Some options have been depreciated and, while they will continue to function for a few revisions, a warning will be issued when they are used.
  • The source code underwent a massive reorganization and rewrite.
  • Simplified the version numbering, and applied it retroactively.

Release: 1.30 (2004-01-17)

  • Changed the code to treat all non-blank lines equally when inserting blank lines (option: -b, --blankline) between blocks. This is particularly important to note if you use command tags to put the engine into Line mode, as it no longer disables the blank line option while in Line mode as it had previously.
  • Changed the HTML formatting (option: -m, --html) slightly.
  • Added a new option (-V, --version), which prints the version information and then exits, and removed the version information from the usage message.
  • The source code underwent a significant reorganization.
  • Changed the make system from a series of makefiles to a configure script to ease compilation and portability.

Release: 1.20 (2003-08-31)

  • Changed the interface of the formatting engine to allow for reusability.
  • Reordered a few pieces of the reformatting pipeline to handle pedantic cases better.
  • Various minor code changes for efficiency and maintainability.
  • Changed the makefiles to ease portability (again).
  • Added a makefile to compile on FreeBSD.

Release: 1.13 (2003-08-18)

  • Changed the unwrapping code slightly to handle hyphens better.
  • Changed the makefiles a bit to ease portability.
  • Added a makefile to compile on Linux (by Michael A Chase).

Release: 1.12 (2003-08-18)

  • *** This is a source only release ***
  • Added an include file and changed some types to be more portable across systems.
  • Added a makefile to compile on Mac OS X (by David Ross).

Release: 1.11 (2003-08-17)

  • Fixed an off-by-one error in the hyphen section of the line wrapping code that would cause the wrapping engine to incorrectly wrap a line that required wrapping if the previous line wrapped on a hyphen.

Release: 1.10 (2003-06-09)

  • Changed input/output file name processing section so that when the output file is omitted and an input file is given, the input file is copied to a backup (with the extension ".orig") and the original input file is used as the output file, except when the input file is a hyphen ('-'), to denote that reform should read from the standard input, in which case the output is sent to the standard output.
  • Changed the separator line code to be case insensitive.

Release: 1.00 (2003-03-20)

  • Changed the control tag processing code and the unwrapping code to support two modes of operation: block mode, the default and originally the only mode, and the new line mode, which treats every line as it's own block.
  • Changed the respacing code to support either single or double spacing between sentences and made single spacing the default.
  • Added a new option (--doublespacing), which forces the respacing code to use double spaces between sentences.
  • Changed the respacing code to exclude the colon (':') as a recognized sentence separator character as their varied usage, mostly the non-grammatical usage, can be too complex for Reform's simple separator respacing code to handle effectively.
  • Changed the respacing code slightly to handle enclosed commas and semi-colons better (I hope).
  • Changed the line wrapping code so that the line wrap length is the maximum line length, rather than the maximum line length plus one, which was the previous behavior. In other words, the line wrap length, which is set via the wrap option (-w, --wrap[=LEN]) and defaults to 72, is the maximum number of characters that will be allowed on one line, if possible. The previous behavior was that the line wrap length minus one was the maximum number of characters that would be allowed on one line, if possible.
  • Changed the line wrapping code slightly to handle breaking on hyphens better.
  • Changed the separator line code to only compact separator lines when wrapping lines and only as much as needed to make the separator line fit within the wrap length.
  • Added four new abbreviations ("sr.", "jr.", "inc.", "ltd.") to the abbreviation table, for use when double spacing between sentences is enabled.
  • Changed the usage message to include the URL to Reform's website.

Release: 0.90 (2002-11-20)

  • Added a new option (-k, --keeptags), which enables the keeping of control tags in the output.
  • Changed the control tag processing code to support the option to keep control tags in the output.
  • Changed the control tags processing code so that after processing a control tag within a line it now removes the entire line and continues on to the next line, unless the keeptags option (-k, --keeptags) is specified in which case the tags are kept and passed into the output. This is a complete reversal of the previous behavior in which the tag would simply be removed from the line and the line would continue on to be processed as normal.
  • Added a new abbreviation ("mt." == mountain) to the abbreviation table.

Release: 0.81 (2002-09-27)

  • Fixed a bug with the unwrapping code where a hyphen used as a grammatical separator within a sentence would be treated as though it was part of a hyphenated word when encountered at the end of a line and would be erroneously joined with the first word of the next line. All previous versions of Reform contained this bug.
  • Changed the paragraph respacing code to detect and handle period-terminated abbreviations and made a small adjustment to the behavior of the sentence separator (chars: ,;:) formatting code. The current list of abbreviations consists of: "Mr.", "Mrs.", "Ms.", and "Dr."
  • Changed the command tags optional processing option (-u, --usetags) to be enabled by default. The option itself is now depreciated and will likely be removed in a future version.
  • Added a new optional processing option (-a, --all), which turns on all optional processing modes.

Release: 0.80 (2002-09-24)

  • Adjusted the HTML formatting slightly and added header and footer sections to the HTML output.
  • Changed the option code to allow line wrapping when in HTML mode.
  • Made some small adjustments to the behavior of the line wrapping code when in HTML mode.

Release: 0.73 (2002-09-22)

  • Adjusted the paragraph respacing (option: -s, --spacing) code slightly to be more robust.
  • Changed the default character set to 'ascii-7bit'.

Release: 0.72 (2002-09-20)

  • Adjusted the character set conversion code to better handle the conversion of characters into HTML entities in HTML mode.
  • Adjusted the spacing code to better detect and handle ending punctuation inside quoting/emphasis characters within a sentence.

Release: 0.71 (2002-09-19)

  • Fixed a serious set of bugs in the character set conversion code that caused characters which should be converted to be ignored if they followed within a few characters of a previous conversion. The bugs were introduced in version: 0.61.

Release: 0.70 (2002-09-16)

  • Added a new optional processing option (-s, --spacing), which tries to ensure proper spacing within paragraphs.
  • The processing engine now defaults to ON, in all cases. Before the engine would default to ON unless tag processing was enabled in which case the engine would default to OFF.

Release: 0.61 (2002-09-03)

  • Adjusted the HTML formatting (option: -m, --html) slightly.

Release: 0.60 (2002-09-01)

  • Added a new output mode option (-m, --html), which enables HTML formatting.
  • Added two characters to the character set conversion table that were accidentally excluded on the initial release. (Latin Capital Z With Caron & Latin Small Letter Z With Caron)

Release: 0.50 (2002-08-27)

  • Initial public release.