This page describes the software components of the Croiseur project.
Here are the software components of Croiseur:
Name | Description |
---|---|
croiseur |
Application core library |
croiseur-cli |
Command-line frontend to croiseur |
croiseur-clue-openai-plugin |
A clue provider backed by OpenAI Web API |
croiseur-common |
Common types used as building blocks by all other modules |
croiseur-dictionary-common |
Collection of utility classes useful for implementing dictionary providers |
croiseur-dictionary-hunspell-codec |
Library which allows to read Hunspell dictionaries and generate all word forms from them |
croiseur-dictionary-hunspell-plugin |
Dictionary provider of local word lists written as Hunspell dictionaries |
croiseur-dictionary-txt-plugin |
Dictionary provider of local word lists written as text files |
croiseur-dictionary-xml-codec |
Library which allows to read and write dictionaries in a custom XML format |
croiseur-dictionary-xml-plugin |
Dictionary provider of local word lists written in XML |
croiseur-gui |
Desktop application, frontend to croiseur |
croiseur-gui-controller |
Controller submodule of croiseur-gui (calls croiseur service upon croiseur-gui-view events) |
croiseur-gui-presenter |
Presenter submodule of croiseur-gui (presents croiseur outputs by updating croiseur-gui-view-model ) |
croiseur-gui-view |
View submodule of croiseur-gui (widgets of croiseur-gui ) |
croiseur-gui-view-model |
View-model submodule of croiseur-gui (a model representing the state of the views, observed and displayed by croiseur-gui-view ) |
croiseur-puzzle-codec-xd |
Library which allows to read/write puzzles in the xd format |
croiseur-puzzle-codec-xd-plugin |
Puzzle codec provider adapting croiseur-puzzle-codec-xd |
croiseur-puzzle-repository-filesystem-plugin |
Puzzle repository implementation which stores puzzles as files on disk |
croiseur-puzzle-repository-memory-plugin |
Puzzle repository implementation whose storage is purely in memory - only used for tests |
croiseur-solver-ginsberg |
Crossword solver library based on Matt Ginsberg's papers |
croiseur-solver-ginsberg-plugin |
Solver provider adapting croiseur-solver-ginsberg |
croiseur-solver-paulgb |
Crossword solver library based on paulgb's Crossword Composer |
croiseur-solver-paulgb-plugin |
Solver provider adapting croiseur-solver-paulgb |
croiseur-solver-sat |
Crossword solver library based on a generic SAT solver |
croiseur-solver-sat-plugin |
Solver provider adapting croiseur-solver-sat |
croiseur-solver-szunami |
Crossword solver library based on szunami's xwords-rs |
croiseur-solver-szunami-plugin |
Solver provider adapting croiseur-solver-szunami |
croiseur-spi-clue |
Interface definition for clue providers |
croiseur-spi-dictionary |
Interface definition for dictionary providers |
croiseur-spi-presenter |
Interface definition for presenters |
croiseur-spi-puzzle-codec |
Interface definition for puzzle codecs |
croiseur-spi-puzzle-repository |
Interface definition for puzzle repositories |
croiseur-spi-solver |
Interface definition for solvers |
In addition to these components, the following external components are used:
Name | Description |
---|---|
java |
The Java platform |
javafx |
Framework for creating graphical user interface |
info.picocli |
Framework for creating command-line user interface |
com.azure.ai.openai |
OpenAI Web API Client |
org.ow2.sat4j.{core,pb} |
Boolean reasoning library |
The following conventions apply to all diagrams:
- Components are referenced via their simplified Java module names, which is their component names
with the
-
separator replaced by.
. The module'sre.belv.
prefix is omitted for brevity. - Dependencies to
java.logging
are omitted (pervasive across the project). - Direct dependencies are omitted when already provided by transitivity (i.e.
if
A -> B
,A -> C
andB -> C
, then onlyA -> B
andB -> C
are represented). - Nodes representing modules which are external to the project are filled with gray.
This diagram represents the main module dependencies, with the following omissions:
- Clue SPI implementations (see dedicated section below)
- Dictionary SPI implementations (see dedicated section below)
- Puzzle codec SPI implementations (see dedicated section below)
- Puzzle repository SPI implementations (see dedicated section below)
- Solver SPI implementations (see dedicated section below)
- GUI detailed dependencies (see dedicated section below)
Note: Some dependencies of javafx.*
are omitted for clarity.
Refer to the generated Javadoc.