==========
Complexity
==========
.. image:: https://badge.fury.io/py/complexity.png
:target: http://badge.fury.io/py/complexity
.. image:: https://travis-ci.org/audreyr/complexity.png?branch=master
:target: https://travis-ci.org/audreyr/complexity
.. image:: https://pypip.in/d/complexity/badge.png
:target: https://crate.io/packages/complexity?version=latest
A refreshingly simple static site generator, for those who like to work in HTML.
Documentation
-------------
The full documentation is at http://complexity.rtfd.org.
Quickstart
----------
Try it out::
$ pip install complexity
$ git clone git@github.com:audreyr/complexity-example.git my_proj
$ cd my_proj
$ complexity project/ www/
Once you've done that, open a web browser to http://127.0.0.1:9090 to see the newly generated Complexity static site.
Features
--------
* Works on Python 2.6, 2.7, and 3.3, and on PyPy.
* Takes simple HTML templates as input.
* Data from .json files turns into template context data.
* Template inheritance, filters, etc. (Brought to you by Jinja2.)
* Auto-expands .html file URLs into cleaner URLs (e.g. about.html gets expanded to /about/)
* Can optionally be used as a library instead of from the command line. See
`Using Complexity as a Library`_ for details.
.. _`Using Complexity as a Library`: http://complexity.readthedocs.org/en/latest/advanced_usage.html#using-complexity-as-a-library
Best Used With
--------------
Complexity is designed to be used with these packages:
* `Simplicity`_: Converts ReStructuredText into JSON, which Complexity can use
as input.
* `A Lot of Effort`_: Deploys a static website (e.g. the output of Complexity)
to Amazon S3.
* `Cookiecutter`_: Creates projects from project templates.
Sure, they could have all been built into Complexity, but decoupling them
seemed like a nice thing to do.
.. _`Simplicity`: https://github.com/pydanny/simplicity
.. _`A Lot of Effort`: https://github.com/audreyr/alotofeffort
.. _`Cookiecutter`: https://github.com/audreyr/cookiecutter
Community
---------
* Stuck? Don't know where to begin? File an issue and we'll help you.
* We love contributions. Read about `how to contribute`_.
.. _`how to contribute`: https://github.com/audreyr/complexity/blob/master/CONTRIBUTING.rst
History
-------
0.9.1 (2013-12-02)
++++++++++++++++++
* Depend on Jinja2 >= 2.4, not == 2.7.
0.9.0 (2013-08-28)
++++++++++++++++++
* CONFIG CHANGE: Configuration is now via a `complexity.yml` file inside the
project, instead of a `complexity.json` file.
* Support for an `unexpanded_templates` config option (#23).
* Support for non-HTML files in `templates/` (or whatever you set
`templates_dir` to be).
See http://complexity.readthedocs.org/en/latest/advanced_usage.html#config-using-complexity-yml
for more info.
0.8.0 (2013-08-10)
++++++++++++++++++
* USAGE CHANGE: At the command line, Complexity no longer takes an output_dir
argument. It now assumes that your output_dir is `www/` by default, but you
can customize it in `complexity.json`.
* Support for configuration via `complexity.json`: you can specify any or all
of the following key/value pairs:
- `output_dir`
- `templates_dir`
- `assets_dir`
- `context_dir`
See http://complexity.readthedocs.org/en/latest/advanced_usage.html#config-using-complexity-json
for more info.
0.7 (2013-08-05)
++++++++++++++++
A couple of small but important renames. If you rely on either of the following
defaults, you will need to rename them in your Complexity project.
* Directory parameter for .json files to be turned into context data has been
renamed from `json_dir` to `context_dir`.
* Default context directory value `json/` has been changed to `context/`.
Sometimes you want your .json files to be turned into context variables, and
sometimes you don't. This rename alleviates confusion when working with
non-context .json files.
0.6 (2013-07-26)
++++++++++++++++
* Support for multi-level template directories. (Upgrade to at least 0.6 if
you want to have folders within folders and beyond in `templates/`.)
* Skip non-HTML files in `templates/` rather than raising `NonHTMLFileException`.
0.5 (2013-07-25)
++++++++++++++++
* Improved static site generation API - better parameters are used.
* Files in the root of `assets/` (or the asset directory) now get copied over to the output.
* Much more documentation.
0.4.2 (2013-07-21)
++++++++++++++++++
* Make reading of JSON files from `json/` optional.
0.4.1 (2013-07-19)
++++++++++++++++++
* Fix reading of JSON files from `json/`.
0.4 (2013-07-19)
++++++++++++++++++
* Project layout is now::
my_repo/
├── project/ <--------- input
│ ├── assets/
│ │ ├── css/
│ │ ├── js/
│ │ └── img/
│ ├── json/
│ │ └── stuff.json
│ └── templates/
│ ├── base.html
│ ├── index.html
│ └── about.html
└── www/ <---------- output (generated)
├── index.html
├── about/
│ └── index.html
├── css/
├── js/
└── img/
* Assets are copied over to `www/` during site generation.
* If the `www/` directory was previously created, it prompts the user and then
deletes it before site regeneration.
* Templates starting with `base` are not generated as individual pages. They
are meant to be extended in other templates.
0.3 (2013-07-18)
++++++++++++++++++
* Graceful shutdown/restart of dev server.
* Required input and output dir arguments.
* Optional port argument.
* Improved server start/stop messages.
* Major internal refactor.
0.2.1 (2013-07-15)
+++++++++++++++++++
* Fixes to setup.py.
0.2.0 (2013-07-15)
+++++++++++++++++++
* Data from .json files now gets read as template context data.
* Tested (and passing!) on Python 2.6, 2.7, 3.3, PyPy.
0.1.1 (2013-07-10)
++++++++++++++++++
* First release on PyPI.