Skip to main content

Static site generator with the smoothness of silk

Project description

Silkie

Code style: black pre-commit

Static site generator with the smoothness of silk

Silkie is a simple and smooth static site generator. It can parse text files (".txt") and Markdown files (".md") and generate HTML files from them.

Check out the demo generated from this text file (with help from new.css).

$ python -m silkie -h
Usage: python -m silkie [OPTIONS]

  Static site generator with the smoothness of silk

Options:
  -v, --version          Show the version and exit.
  -h, --help             Show this message and exit.
  -i, --input PATH       Path to the input file/folder  [required]
  -s, --stylesheet TEXT  URL path to a stylesheet
  -l, --lang TEXT        Language of the HTML document [en-CA by default]
  -c, --config FILE      Read option defaults from the specified INI file

Features

  • Generate HTML file(s) from a specified text file/directory
  • Detect the title of a file if it's the first line followed by two blank lines
  • Add custom styling to static site
  • Change HTML document language (<html lang="{your-language}">, en-CA by default)
  • Generate HTML file from a Markdown file (Need Testing)
  • Allow user to supply a JSON formatted configuration file
  • Parse front matter and apply the corresponding metadata fields (Prototype Feature)
    • Check out #21 to see which fields are supported

Getting Started

Prerequisites

  • Python >= 3.9.0
  • Pip >= 21.2.4

Installation

Note: if you have both versions of Python (2 & 3) installed, then you should replace every python command with python3 and pip command with pip3.

  1. Clone the repository
  2. Create a virtual environment
cd silkie && python -m venv .venv
  1. Activate your virtual environment
  • Windows: .venv\Scripts\activate.bat
  • Unix or MacOS: source .venv/bin/activate
  1. Install the dependency packages
pip install -r requirements.txt

Usage

  1. Activate your virtual environment (only if you have not done that)
  2. Run the program

Input file

python -m silkie -i tests/data/text/The Adventure of the Six Napoleans.txt

Input directory

python -m silkie -i tests/data/text

Custom stylesheet

python -m silkie -i tests/data/text/Silver Blaze.txt -s https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css

Custom document language

python -m silkie -i tests/data/text/Silver Blaze.txt -l fr

JSON configuration file

python -m silkie -c tests/data/config/all_text_files.json

Available attributes of a configuration file include: input, lang, and stylesheet

Frontmatter

Supported keywords:

Name Type Default Usage
slug string File path Customize the document URL route, e.g. /docs/example.html
title string Markdown title or file name The text title of the document. Automatically added at the top of your doc if it does not contain any Markdown title.
description string The description of your document, which will added to document metadata for search engine optimization.

Contributing

Please read the Contribution Guide before developing any changes.

License

MIT

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

silkie-1.0.0.tar.gz (3.7 kB view hashes)

Uploaded Source

Built Distribution

silkie-1.0.0-py3-none-any.whl (3.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page