Major refactoring cleanup: - Add new controller architecture (class-controller-*.php) - Add new settings-v2 UI (views/settings-v2/) - Add new CSS architecture (agentic-sidebar.css, tokens) - Add esbuild build pipeline (scripts/build.js, package.json) - Add composer dependencies (vendor/) - Add frontend src directory (assets/js/src/index.jsx) - Add documentation files - Remove old/obsolete files (class-settings.php, old CSS) This commits all pending changes from previous refactoring efforts.
47 lines
1.8 KiB
Markdown
47 lines
1.8 KiB
Markdown
# Parsica
|
|
|
|
|
|
[](https://github.com/parsica-php/parsica/actions/workflows/tests.yml)
|
|
|
|
The easiest way to build robust parsers in PHP.
|
|
|
|
```bash
|
|
composer require parsica-php/parsica
|
|
```
|
|
|
|
Documentation & API: [parsica-php.github.io](https://parsica-php.github.io/)
|
|
|
|
|
|
```php
|
|
<?php
|
|
$parser = between(char('{'), char('}'), atLeastOne(alphaChar()));
|
|
$result = $parser->tryString("{Hello}");
|
|
echo $result->output(); // Hello
|
|
```
|
|
|
|
## Quality
|
|
|
|
The code is entirely built with Test-Driven Development, and type-checked with [Psalm](https://github.com/vimeo/psalm). It is likely bug-free or very close to it. It is suitable for complex parsing requirements, and could even be used to build a programming language.
|
|
However, it might not be performant enough if you use it at a high scale.
|
|
|
|
|
|
## Project Maintenance & Support
|
|
|
|
Regrettably, the maintainer of this library (@turanct) has passed away in December 2021 due to cancer. The original author @mathiasverraes is now the maintainer again, and is doing occasional minor updates. If you'd like to contribute to this library, or if you wish to use this library for a project and need consulting, contact Mathias via mathias at verraes net. PR and issues submissions may not be monitored.
|
|
|
|
## Development
|
|
|
|
After running `composer install`, run these to validate if everything is in working order:
|
|
|
|
```
|
|
composer run phpunit
|
|
composer run psalm
|
|
composer run uptodocs
|
|
|
|
# or all of them:
|
|
|
|
composer run test
|
|
```
|
|
|
|
As this library uses pure functional programming, it may be hard to wrap your head around if you're used to object-oriented or imperative styles. Our recommendation is to familiarize yourself with the basics of functional programming, for example by reading an intro to Haskell.
|