jbzoo / markdown
Tools to render markdown text from PHP code
Installs: 1 015 055
Dependents: 5
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/jbzoo/markdown
Requires
- php: ^8.2
- jbzoo/utils: ^7.3
Requires (Dev)
- jbzoo/toolbox-dev: ^7.2
README
Tools to render markdown text from PHP code. This library provides a simple and fluent API for generating markdown elements programmatically, including tables with advanced formatting options.
Features
- Markdown Elements: Generate links, titles, images, badges, blockquotes, spoilers, and code blocks
- Advanced Tables: Create markdown tables with auto-indexing, custom alignments, and flexible rendering
- Type Safety: Full PHP 8.2+ compatibility with strict typing
- Fluent API: Chainable methods for intuitive table building
- Zero Dependencies: Lightweight with minimal external requirements
Requirements
- PHP 8.2 or higher
- Composer
Installing
composer require jbzoo/markdown
Usage
Table Generation
<?php declare(strict_types=1); use JBZoo\Markdown\Table; echo (new Table()) ->addAutoIndex('Index', 999) ->setHeaders(['Header #1', 'Header #2']) ->setAlignments([Table::ALIGN_CENTER, Table::ALIGN_RIGHT]) ->appendRow(['123', '456']) ->appendRows([ ['789_1', '9871'], ['789_2', ''] ]) ->render();
Result
| Index | Header #1 | Header #2 |
|------:|:---------:|----------:|
| 999 | 123 | 456 |
| 1000 | 789_1 | 9871 |
| 1001 | 789_2 | |
See Live Example
Index | Header #1 | Header #2 |
---|---|---|
999 | 123 | 456 |
1000 | 789_1 | 9871 |
1001 | 789_2 |
Markdown Elements
<?php declare(strict_types=1); use JBZoo\Markdown\Markdown; // Page Navigation echo Markdown::title('Page Name', 1); // # Page Name\n echo Markdown::title('Title', 2); // ## Title\n echo Markdown::title('Sub Title', 3); // ### Sub Title\n // Links echo Markdown::url('Google', 'https://google.com'); // Output: [Google](https://google.com) // Badges echo Markdown::badge('Status', 'https://travis-ci.org/badge.svg', 'https://travis-ci.org/'); // Output: [](https://travis-ci.org/) // Images echo Markdown::image('https://example.com/logo.jpg', 'Logo'); // Output:  // Blockquotes echo Markdown::blockquote(['Quote Line 1', 'Quote Line 2', 'Quote Line 3']); // Output: // > Quote Line 1 // > Quote Line 2 // > Quote Line 3 // Spoiler (collapsible content) echo Markdown::spoiler('Click to expand', 'Hidden content here'); // Output: // <details> // <summary>Click to expand</summary> // // Hidden content here // // </details> // Code blocks echo Markdown::code("<?php\necho 'Hello World';\n", 'php'); // Output: // ```php // <?php // echo 'Hello World'; // // ```
Table Features
The Table class supports various advanced features:
<?php declare(strict_types=1); use JBZoo\Markdown\Table; // Basic table $table = new Table(); $table->setHeaders(['Name', 'Age', 'City']) ->appendRow(['John', '25', 'New York']) ->appendRow(['Jane', '30', 'London']); echo $table->render(); // Table with alignments $table = new Table(); $table->setHeaders(['Left', 'Center', 'Right']) ->setAlignments([Table::ALIGN_LEFT, Table::ALIGN_CENTER, Table::ALIGN_RIGHT]) ->appendRow(['Text', 'Text', 'Text']); echo $table->render(); // Table with auto-indexing $table = new Table(); $table->addAutoIndex('#', 1) ->setHeaders(['Item', 'Price']) ->appendRows([ ['Apple', '$1.00'], ['Banana', '$0.50'], ['Orange', '$0.75'] ]); echo $table->render();
Development
Setup
make update # Install/update dependencies
Testing
make test # Run PHPUnit tests make test-all # Run all tests and code quality checks make codestyle # Run linters and code style checks
Available Make Targets
Run make help
to see all available commands including:
- Code quality tools (PHPStan, Psalm, PHPCS, etc.)
- Performance testing
- Report generation
- Build tools
License
MIT