jekyll-database-tables
Render Markdown pipe tables as databse-styled terminal output inside <pre> blocks for Jekyll.
Installation
Install via RubyGems:
gem install jekyll-database-tables
Or add it to your Gemfile:
gem 'jekyll-database-tables'
Then enable the plugin in _config.yml:
plugins:
- jekyll-database-tables
Usage
Write a standard GFM pipe table in any page or document:
| Name | Age |
|-------|-----|
| Alice | 30 |
| Bob | 25 |
The plugin replaces it with a <pre class="[db]-table"> block during the build:
Name | Age
------+----
Alice | 30
Bob | 25
Content inside fenced code blocks is never processed, so example tables in documentation stay intact.
Configuration
All options go under the jekyll_database_tables key in _config.yml:
jekyll_database_tables:
formatter: psql
Formatters
- Default (
psql): PostgreSQL-styled terminal output with space-padded columns separated by|and a-+-divider.
Custom formatters can also be provided (see Development).
Development
Nix
git clone https://github.com/gdiasag/jekyll-database-tables
cd jekyll-database-tables
nix develop
rake test
Starting a shell with the build environment provided in flake.nix provides you with Ruby, Bundler, and all gem dependencies pinned to exact versions from the lock file, so no bundle install needed. Gem executables (e.g. rake and rubocop) are on PATH directly.
Others
Requires Ruby v3.3+ and Bundler v2.7+.
git clone https://github.com/gdiasag/jekyll-database-tables
cd jekyll-database-tables
bundle install
bundle exec rake test
Writing a custom formatter
Create a subclass of Jekyll::DatabaseTables::Formatter implementing #render, #format_row, and #separator. Then register it in Jekyll::DatabaseTables::Converter#formatter_instance:
class CustomFormatter < Jekyll::DatabaseTables::Formatter
include Formatter::Helpers
def render(table, title: nil)
# ...
end
def format_row(cells, widths)
# ...
end
def separator(widths)
# ...
end
end
Users select it via _config.yml:
jekyll_database_tables:
formatter: custom