PHP-Spellchecker
Check misspellings from any text source with the most popular PHP spellchecker.
About
PHP-Spellchecker is a spellchecker abstraction library for PHP. By providing a unified interface for many different spellcheckers, youβre able to swap out spellcheckers without extensive rewrites.
Using PHP-Spellchecker can eliminate vendor lock-in, reduce technical debt, and improve the testability of your code.
Features
PHP-Spellchecker is a welcoming project for new contributors.
Want to make your first open source contribution? Check the roadmap, pick one task, open an issue and we'll help you go through it π€π
Roadmap
The project is still in its initial phase, requiring more real life usage to stabilize its final 1.0.0 API.
Global
- [ ] Add a CLI that could do something like
vendor/bin/php-spellchecker "misspell" Languagetools EchoHandler --lang=en_US
- [ ] Add asynchronous mechanism to spellcheckers.
- [ ] Make some computed misspelling properties optional to improve performance for certain use cases (e.g., lines and offset in
LanguageTools
).
- [ ] Add a language mapper to manage different representations across spellcheckers.
- [ ] Evaluate
strtok
instead of explode
to parse lines of text, for performance.
- [ ] Evaluate
MutableMisspelling
for performance comparison.
- [ ] Wrap
Webmozart/Assert
library exceptions to throw PHP-Spellchecker custom exceptions instead.
- [ ] Improve the
Makefile
.
Sources
- [ ] Make a
SourceInterface
class that's able to have an effect on the used spellchecker configuration.
- [ ]
League/Flysystem
source.
- [ ]
Symfony/Finder
source.
Text processors
- [ ] Markdown - Find a way to keep original offset and line of words after stripping.
- [ ] Add PHPDoc processor.
- [ ] Add HTML Processor (inspiration).
- [ ] Add XLIFF Processor (inspiration).
Spell checkers
- [ ] Cache suggestions of already spellchecked words (PSR-6/PSR-16?).
- [ ] Pspell - Find way to compute word offset.
- [ ] LanguageTools - Evaluate HTTPlug library to make API requests.
- [x] Pspell - find way to list available dictionaries.
- [x] Add JamSpell spellchecker.
- [ ] Add NuSpell spellchecker.
- [ ] Add SymSpell spellchecker.
- [ ] Add Yandex.Speller API spellchecker.
- [ ] Add Bing Spell Check API spellchecker.
Handlers
- [ ] MonologHandler
- [ ] ChainedHandler
- [ ] HTMLReportHandler
- [ ] XmlReportHandler
- [ ] JSONReportHandler
- [ ] ConsoleTableHandler
Tests
- [ ] Add or improve tests with different text encoding.
- [ ] Refactor duplicate Dockerfile content between PHP images.
Versioning
We follow SemVer v2.0.0.
There still are many design decisions that should be confronted with real-world usage before thinking about a v1.0.0 stable release:
- Are
TextInterface
and MisspellingInterface
really useful?
- Is using generators the right way to go?
- Should all the contributed spellcheckers be maintained by the package itself?
- How to design an intuitive CLI given the needed flexibility of usage?
- Is the "context" array passed through all the layers the right design to handle data sharing?
Contributing
Please see CONTRIBUTING.
Credits
License
The MIT License (MIT). Please see license file for more information.
Logo:
Elements taken for the final rendering are Designed by rawpixel.com / Freepik.