Collection of crossword puzzle file format converters and other utilities, written in Kotlin.
The library uses Kotlin multiplatform and supports Java, Javascript, and native Mac/Windows/Linux.
This project also includes a web interface for generating digital versions of different variety puzzles and a command line tool to perform conversions and dump puzzle information.
- Read crosswords in a variety of file formats, including formats used by online puzzle sites
- Remove a direction of clues to make puzzles more challenging
- Write crosswords in .puz, .jpz, or .ipuz format
- Generate PDFs for crosswords
- Create .jpz and .ipuz files for variety crossword puzzles
In your build.gradle:
dependencies {
implementation "com.jeffpdavidson.kotwords:kotwords:1.5.0"
}Sample code for parsing a JPZ file and converting it to a PDF with only Down clues:
val pdf = JpzFile(jpz).asPuzzle().withDownsOnly().asPdf();See the Javadoc for full API details.
Release builds include Mac/Windows/Linux command-line tools.
Example to convert a PUZ file to a PDF:
kotwords-cli convert \
--input-file=/path/to/puzzle.puz \
--input-format=PUZ \
--output-file=/path/to/puzzle.pdf \
--output-format=PDFExample to print all clues and answers in a JPZ file:
kotwords-cli dump-entries \
--file=/path/to/puzzle.jpz \
--output-format="[[clue]]: [[answer]]"Run the tool with no flags to see all available commands, and add --help after any command to see the available options.
Kotwords is a standard Gradle project that can be imported into IntelliJ. Common commands include:
- Run all tests for all environments:
./gradlew check - Run a local instance of the web tools:
./gradlew jsBrowserDevelopmentRun - Publish to the local Maven repository for testing in another application:
./gradlew publishToMavenLocal
Bug reports and contributions welcome!