Plaintext prose redundancy linter.
Wordlint locates matching pairs of words repeated within a user-defined distance. Text may be linted by distance between words (that is, by word count), by line count, and/or by percentage of the total words in the file. For details on running the program, see README or the included man page. Internally, Wordlint separates a text file (or stdin) into a list of Words
, after processing user flags. An instance of the Word
datatype consisting of a String that contains a lemma; its line and column coordinates; and its "position": an Int or Float depending on the type of check invoked by the user. This list is first filtered by the user-defined minimum length of the lemma. Next, items are matched by their lemma and exclusive coordinates before being added to a list of Wordpairs
, a data structure containing two Words and the difference between their respective "positions". If multiple types are specified, all Int positions are converted to the Double type and the resulting lists are intersected to produce the final results. Finally, these Wordpairs are optionally filtered by the difference in their positions (another user-specified option). All remaining Wordpairs are processed for printing to stdout in machine-readable (default) or human-readable format. Plugins exist for integration with Vim (https://github.com/gbgar/Wordlint.vim) and Emacs (https://github.com/gbgar/wordlint.el).