Markdown to HTML coverter and server with yhttp.
Project description
markdownserver
Markdown server using yhttp.
Features
- Serve a directory of markdown files and subdirectories as HTML using markdown2.
- Personalizable favicon, touch-icon logo and etc.
- Syntaxt highlighting for code blocks + themes using pygment.
- Copy-to-clipboard buttons for code-blocks and HTML bookmarks.
- Resizable sidebar and page layout powered by CSS Flexbox.
- Breadcrumbs (path) navigator.
- Change configuration using file and command line interface.
- mermaid support.
Install
pip install yhttp-markdown
Quickstart
Navigate to a directory consist of markdown files, then:
yhttp-markdown serve
Command line interface
yhttp-markdown --help
usage: yhttp-markdown [-h] [-c FILE] [-C DIRECTORY] [-O OPTION] [--version]
{serve,s,completion} ...
options:
-h, --help show this help message and exit
-c FILE, --configuration-file FILE
Configuration file
-C DIRECTORY, --directory DIRECTORY
Change to this path before starting, default is: `.`
-O OPTION, --option OPTION
Set a configutation entry: -O foo.bar.baz='qux'. this
argument can passed multiple times.
--version
Sub commands:
{serve,s,completion}
serve (s)
completion Bash auto completion using argcomplete python package.
Bash auto completion
To enable bash auto comletion, first run this command:
yhttp-markdown completion install
Then close and re-open your shell or deactivate/activate the current virtual environment (if using) to apply the change:
deactivate && . activate.sh
Test it:
yhttp-markdown TAB TAB
Configuration
yhttp-markdown
can be configured using a YAML configuration file
(the -c/--configuration-file
and -O/--option
flags at the same time:
yhttp-markdown -c settings.yaml -O highlight.theme=vim -O toc.depth=2 serve
Configuration file
This is the example of default configuration file:
# settings.yaml
# app specific
default: index.md
root: .
# site title
title: HTTP Markdown Server
# table of contents
toc:
depth: 3
# a list of regex patterns to exclude from TOC and HTTP serve
exclude:
# metadata path
metadata:
physical: .ymdmetadata
baseurl: /.ymdmetadata
# syntaxt highlighting theme
highlight:
theme: monokai
Root directory
By default, yhttp-markdown
serves files from the current directory (pwd
).
you may navigate to desired path before running the yhttp-markdown
command
or set the root
configuration entry:
# settings.yaml
root: path/to/www/root
yhttp-markdown -O root=/path/to/www/root serve
You may also use the -C/--directory
command line option to cd
to a
directory before running the server.
yhttp-markdown -C /path/to/www/root serve
Default document
yhttp-markdown
looks for the index.md
on requests referring to a
directory (http://example.com/foo/). but, this can be changed using the
default
configuration entry:
# settings.yaml
default: default.md
Or, using the command line interface:
yhttp-markdown -O default=default.md serve
Table of contents
yhttp-markdown
crawls the *.md
files and finds the markdown headdings:
# Header 1
## Header 2
### Header 3
#### Header 4
##### Header 5
###### Header 6
To genrate a tree of HTTP bookmarks and table of contents section of the current requested path.
You can change the toc.depth
configuration value to change the behaviour:
yhttp-markdown -Otoc.depth=3 serve
Exclusion
To exclude file and directories from serving use the exclude
configuration
entry. it's a collection of regular expression patterns relative to the sites
root (/
):
# settings.yaml
exclude:
- foo\\.md
- bar/?.*
Or, using the command line interface:
yhttp-markdown -O"exclude=[lorem\.md, bar/?.*]" serve
Site metadata
The default website metadata such as favicon
and logo
could be overriden
using the .ymdmetadata
directory. this directory must be placed dirctly
inside the root
. so, these resources will be available at
http://localhost:8080/.ymdmetadata/
when the server is running.
This is an examples of the metadata directory.
.ymdmetadata/
android-chrome-192x192.png
android-chrome-512x512.png
apple-touch-icon.png
favicon-16x16.png
favicon-32x32.png
favicon.ico
logo.svg
The name and base path are also changable using the metadata.physical
and
metadata.baseurl
configuration entries:
# settings.yaml
metadata:
physical: .ymdmetadata
baseurl: /.ymdmetadata
Code blocks syntax highlighting
yhttp-markdown
uses the
fenced-code-blocks
and pygment to make the code blocks prettier.
The pygment theme can be changed using the highlight.theme
configuration
entry:
# settings.yaml
highlight:
theme: monokai
Or, using the command line interface:
yhttp-markdown -O highlight.theme=vim serve
Available themes:
- autumn
- borland
- bw
- colorful
- default
- emacs
- friendly
- fruity
- manni
- monokai
- murphy
- native
- pastie
- perldoc
- tango
- trac
- vim
- vs
See pygments styles page to figure out how they looks like.
Contribuition
Setup development environment
Install python-makelib, then:
cd path/to/yhttp-markdown
make fresh env activate.sh
Test and coverage
make test
make cover
Lint
make lint
Serve
make serve
Or
source activate.sh
yhttp-markdown -C examples serve
NOTE: Do a
make qa
ormake cover lint
before commit.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file yhttp_markdown-1.0.0.tar.gz
.
File metadata
- Download URL: yhttp_markdown-1.0.0.tar.gz
- Upload date:
- Size: 347.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 375cc01cd4bbc7a443cced31dbeae4a437fd5073213d54575d4effb218e416d9 |
|
MD5 | 830b976bf5f436de088f89c16d9244aa |
|
BLAKE2b-256 | 190155d9b91636f42da80f6e3f69b1aec110af1996dcdf1c79fac817b88a905b |
File details
Details for the file yhttp_markdown-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: yhttp_markdown-1.0.0-py3-none-any.whl
- Upload date:
- Size: 360.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 810c563161ba7d141bfe768a98b3ecca77d61452485fdb73e86636efedc3a04f |
|
MD5 | 3e7d7d04f5d1406282fe80491b9aac02 |
|
BLAKE2b-256 | 964e7ee8f10d0444266dbccfad8500d92774bb6e05765b5e416b5fb42086b8b4 |