Skip to main content

Static site generator

Project description

Stone

Yet another static website generator, with plugin support.

Used by (www|blog).half.systems to convert Markdown and Jinja2 into HTML.

Installation

$ pip install stone-site

Usage

To get started with stone:

# Create template layout
stone example_site init --site-name 'example.com'
# Generate site
stone example_site generate
# Add a new page
stone example_site newpage --name "About Us"

By default Stone is configured to turn Markdown + YAML metadata + Jinja2 templates into HTML but as it has support for custom plugins it can generate anything it has code for.

Site Configuration

Configuration File

Stone generates sites based on the contents of site.json. Each site can specify which backends, generators and renderers to use, custom versions will be loaded from the $HOME/.stone directory.

Folder Structure

Stone was originally designed to generate the subdomains of half.systems. The following is the layout of the sites:

.
├── blog
   └── ...
├── main
   └── ...
├── site.json
└── templates
    └── ...

site.json is flexiable about the location of templates and files. As such your not constrained to any particular layout for your site. You could have separate template folders inside each site or one shared in the project root. Each site can specify its template directory

Pages

By default pages are Markdown file, that can have optional YAML metadata that describe the attributes of the page including the title and which template to uses. For example:

template: base.html
title: Hello, World

# This is a header

Here is some lovely content.

Stone makes all metadata available to page templates. Any data templates may use can be embedded into a page. For exampled: an author’s name, email, the date the page was written. The behaviour is dependent on the generator and renderers used. See the [renderers](docs/renderers.md) and [generators](docs/generators.md) for more details.

Templates

By default templates are HTML pages with jinja2 markup.

base.html:

<html>
  <head>
    {% block head %}
    <title>{{ title }}</title>
    {% endblock %}
  <head>
  <body>
  {% block body %}
    <h1>{{ title }}</title>
    <div id="post">
      <!-- Most likely we are going to pass more html here --->
      {{ content|safe }}
    </div>
  {% endblock %}
  </body>
</html>

Generating

To generate a particular site invoke stone with the location of the project’s root folder.

stone root_folder generate

Example

An example project that generates an example landing page and blog is included in Stone’s project source. you can build it by running:

stone example generate

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

stone-site-0.1.7.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stone_site-0.1.7-py2.py3-none-any.whl (15.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file stone-site-0.1.7.tar.gz.

File metadata

  • Download URL: stone-site-0.1.7.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for stone-site-0.1.7.tar.gz
Algorithm Hash digest
SHA256 97c73b0cc0f48ed80548eabc9b8241463afb9850bea5bb5050447cae47a1ca7d
MD5 c84e37451319a0121d59deb1714b84cc
BLAKE2b-256 f99762d34900b99e7f9b3226c866e3a5abd29865a59600024c651a05ec7ad117

See more details on using hashes here.

File details

Details for the file stone_site-0.1.7-py2.py3-none-any.whl.

File metadata

  • Download URL: stone_site-0.1.7-py2.py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for stone_site-0.1.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 432de7f43d0144377d733ba7cfb6f35bb516f82877dfb2fc11a405e2d9b5887f
MD5 8538a0aef571251722d3b6058c53ca7b
BLAKE2b-256 d0b28e3b4bd3c791b4aa82d96ea8056508c4ff9b79b9d4b1e4c507385eeaff46

See more details on using hashes here.

Supported by

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