Plaintext prose redundancy linter. https://github.com/gbgar/Wordlint
|Latest on Hackage:||0.2.0.4|
This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.
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
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
This version brings breaking changes if you typically
use a non-default set of linting arguments.
- Command line arguments -w/--wordlength, -d/--distance and -t/--type
have been removed.
- The -m/--matchlength replaces -w/--wordlength
- The-w/--words, -l/--lines, and -p/--percent take Int/Int/Double, respectively.
The parameter itself represents the type of lint you wish to perform, while the
argument provided by the user indicates the maximum distance between matches.
- Intersecting lints have been added. The type/distance arguments provided (or not)
are used to create a set of lists. The intersection of these lists
is provided as the end result.
- Some granularity in the human-readable data has been lost. Due to the addition of
intersecting lints, all final results are treated as Doubles, and the "intervening
distance" between word pairs are unlabeled. This is no issue if running one type of
lint, but with more, it is difficult to sort out which unit is being provided.
- Wordlint.hs has been heavily manicured.
- Wordlint.Linters and the `Linter` datatype and associated functions have been
taken the place of the `run*Linter` family of functions in Wordlint.hs
- Wordlint.Output has been added to house the Human/Machine functions from Wordlint.hs.
These functions have been pruned and some higher-level functions added.
2014-12-01 - version 0.1.0.2
- Changed "-s vim" to "-s error".
- Changed output of "-s error" to produce better, text editor-agnostic output.
2014-11-25 - version 0.1.0.1
- Added labels to machine-readable output table.