Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zk33/negi
static html build tool
https://github.com/zk33/negi
Last synced: 29 days ago
JSON representation
static html build tool
- Host: GitHub
- URL: https://github.com/zk33/negi
- Owner: zk33
- License: mit
- Created: 2013-03-26T07:26:45.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2014-05-04T13:31:23.000Z (over 10 years ago)
- Last Synced: 2024-04-14T23:15:06.636Z (8 months ago)
- Language: Python
- Size: 160 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Negi
====Negi(禰宜) is a command line tool for building static html file.
Negi combines Jinja2 template and JSON data, and builds html(or other format) files.Requirements
------------
python2.7+Dependencies
------------
* [Jinja2](http://jinja.pocoo.org/docs/)
* [aaaargh](https://github.com/wbolster/aaargh)Install
-------```
python setup.py install
```Usage
-----
Setup directories like:```
project_dir/
data/ : JSON data directory
dist/ : Output directory
templates/ :Jinja2 Template directory
```Then, on your project_dir, hit command:
```
negi build
```You can change directories via command line options. See `negi build -h`.
Data(JSON) file structure
---------```
data/
__init__.json : Loaded first. You can define global params of this directory and pages of this directory.
_paramname.json : Used as global parameter named as "paramname"
pagename.json : Renderd as /pagename.html or definition for html files of /pagename/ directory (if has "_content" parameter in file)
pagename_paramname.json : Used as parameter of /pagename.html
_paramtext.txt : You can use other format files. (simply used as text parameter)
sub_dir/
__init__.json : Define global params for files under "sub_dir" directory and pages of this directory.
index.json : Renderd as /sub_dir/index.html with parameter of this file
```JSON data structure
---------------```
{
"IMG_PATH":"/img", // global "IMG_PATH" parameter
"title":"site title", // global "title" parameter
"_contents":{ // "_contents" is special param to define pages of this directory.
"index":{ // meaning create "index.html" to this directory.
"title":"index" // override global "title" parameter
},
"contact":{
"title":"contact",
"_ext":"cgi" // set "_ext" param to change extension ("contact.html" -> "contact.cgi")
}
}
}
```
All parameter (except "_contents") automatically inherited from parent directory.Rule of finding template
------------Templates automatically assigned based on output file path.
### Basic Rule
1. search same directory/same name template file: `/foo/bar.html -> /foo/bar.html`
1. search underscore-joined template: `/foo/bar.html -> foo\_bar.html`
1. search `__base__.html` in same directory: `/foo/bar.html -> foo/__base__.html`
1. up to parent directory and do same.#### Example: Output path = /index.html
Search template directory:
```
/index.html
/__base__.html
```
and use template found first.### Example: Output path = /spam/egg/ham.php
Search template directory:
```
/spam/egg/ham.php
/spam/egg/ham.html
/spam_egg_ham.php
/spam_egg_ham.html
/spam/egg/__base__.php
/spam/egg/__base__.html
/spam/egg.php
/spam/egg.html
/spam_egg.php
/spam_egg.html
/spam/__base__.php
/spam/__base__.html
/spam.php
/spam.html
/__base__.php
/__base__.html
```
and use template found first