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

7.0.2 2025-09-27 21:48 UTC

This package is auto-updated.

Last update: 2025-09-27 21:51:26 UTC


README

CI Coverage Status Psalm Coverage Psalm Level CodeFactor Stable Version Total Downloads Dependents GitHub License

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: [![Status](https://travis-ci.org/badge.svg)](https://travis-ci.org/)

// Images
echo Markdown::image('https://example.com/logo.jpg', 'Logo');
// Output: ![Logo](https://example.com/logo.jpg)

// 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