@@ -0,0 +1,77 @@ | |||||
=== | |||||
title: Overview | |||||
subtitle: hyde in a nutshell | |||||
created: 2011-01-25 21:31:03 | |||||
=== | |||||
§§ blurb | |||||
Hyde is a static website generator written in python. While Hyde took | |||||
life as the [awesome Jekyll][Jekyll]'s evil twin, it has since been | |||||
completely consumed by [the dark side][python] to have an identity of its own. | |||||
Hyde desires to fulfill the lofty goal of removing the | |||||
[pain points][static cons] involved in creating and maintaining | |||||
[static websites][static pros]. | |||||
§§ . | |||||
## Spotlight | |||||
* Support for powerful template languages like [Jinja2][] complemented | |||||
with custom tags and filters. | |||||
* [Rich object model][hyde objects] and | |||||
[overridable hierarchical metadata][metadata] thats available for use in | |||||
templates. | |||||
* Configurable [sorting, filtering and grouping][sorter] support. | |||||
* Extensible [plugin architecture][plugins] with Text preprocessing and html | |||||
postprocessing support for complex content transformations. | |||||
* Instant preview using built-in [webserver][server] that regenerates content | |||||
if needed. | |||||
## Source | |||||
Hyde is [socially coded on github][hydepy]. | |||||
## Install | |||||
There will be a package soon on pypi, but this works for now: | |||||
~~~sh~~~ | |||||
pip install -e https://github.com/hydepy/hyde#egg=hyde | |||||
~~~~~~~~ | |||||
You can find more detailed documentation in the [installation section][install]. | |||||
## Project Roadmap | |||||
1. Support for Django and Mako | |||||
* Template implementation | |||||
* Default layouts | |||||
2. Support for other markup languages | |||||
* restructured text | |||||
* textile | |||||
* asciidoc | |||||
3. Text Compression | |||||
* Slimmer | |||||
* pre-gzipping | |||||
* uglifyjs | |||||
4. Image Manipulation | |||||
* Optipng Compression | |||||
* Thumbnail generation | |||||
* Photo Data Extraction | |||||
5. Feed / Listing generation | |||||
6. Translation | |||||
[Jekyll]: http://jekyllrb.com | |||||
[Jinja2]: http://jinja.pocoo.org/ | |||||
[hyde objects]: [[/template/variables]] | |||||
[hydepy]: https://github.com/hydepy/hyde | |||||
[install]: [[/installation]] | |||||
[metadata]: [[/plugins/metadata]] | |||||
[plugins]: [[/plugins]] | |||||
[python]: http://python.org | |||||
[server]: [[/server]] | |||||
[sorter]: [[plugins/sorter]] | |||||
[static cons]: [[/static/#cons]] | |||||
[static pros]: [[/static/#pros]] |
@@ -0,0 +1,50 @@ | |||||
- overview | |||||
- getting started | |||||
- installation | |||||
- command line | |||||
- your first hyde website | |||||
- configuration | |||||
- metadata | |||||
- sorting | |||||
- texty | |||||
- templating guide | |||||
- jinja2 | |||||
- context | |||||
- site | |||||
- node | |||||
- resource | |||||
- custom context variables | |||||
- markdown | |||||
- typogrify | |||||
- include text | |||||
- mark and refer | |||||
- accessing arbitrary nodes and resources by path | |||||
- snippets | |||||
- breadcrumbs | |||||
- table of contents | |||||
- excerpts | |||||
- latest excerpt | |||||
- demo pages (example page + documentation) | |||||
- extending hyde | |||||
- contributing | |||||
- unit tests | |||||
- git workflow | |||||
- pull requests | |||||
- New Template Languages | |||||
- The template interface | |||||
- features to support | |||||
- Plugins | |||||
- What can be done | |||||
- The plugin interface | |||||
- Texty abstract plugin | |||||
- Error handling | |||||
- Layouts | |||||
- Custom Layouts | |||||
- New Themes for existing layouts | |||||
- Apps | |||||
- Switching | |||||
- From hyde 0.5 | |||||
- From Jekyll | |||||
- From wordpress or similar | |||||
@@ -0,0 +1,29 @@ | |||||
mode: development | |||||
media_root:: media | |||||
media_url: /media | |||||
base_url: / | |||||
template: hyde.ext.jinja2 | |||||
plugins: | |||||
- hyde.ext.plugins.meta.MetaPlugin | |||||
- hyde.ext.plugins.auto_extend.AutoExtendPlugin | |||||
- hyde.ext.plugins.less.LessCSSPlugin | |||||
- hyde.ext.plugins.blockdown.BlockdownPlugin | |||||
- hyde.ext.plugins.sorter.SorterPlugin | |||||
- hyde.ext.plugins.markings.MarkingsPlugin | |||||
- hyde.ext.plugins.markings.ReferencePlugin | |||||
- hyde.ext.plugins.syntext.SyntextPlugin | |||||
context: | |||||
meta: | |||||
nodemeta: meta.yaml | |||||
title: Hyde - A Python Static Website Generator | |||||
keywords: > | |||||
hyde,python,django,jinja,static website,static site, | |||||
generator,html generator | |||||
author: Lakshmi Vyasarajan | |||||
less: | |||||
app: ~/local/bin/lessc | |||||
markdown: | |||||
extensions: | |||||
- def_list | |||||
- headerid | |||||
- tables |
@@ -0,0 +1,7 @@ | |||||
mode: development | |||||
content_root: stuff # Relative path from site root | |||||
media_root: media # Relative path from site root | |||||
media_url: /media | |||||
widgets: | |||||
plugins: | |||||
aggregators: |
@@ -0,0 +1,22 @@ | |||||
<!doctype html> | |||||
<title>not found</title> | |||||
<style> | |||||
body { text-align: center;} | |||||
h1 { font-size: 50px; } | |||||
body { font: 20px Constantia, 'Hoefler Text', "Adobe Caslon Pro", Baskerville, Georgia, Times, serif; color: #999; text-shadow: 2px 2px 2px rgba(200, 200, 200, 0.5); } | |||||
::-moz-selection{ background:#FF5E99; color:#fff; } | |||||
::selection { background:#FF5E99; color:#fff; } | |||||
details { display:block; } | |||||
a { color: rgb(36, 109, 56); text-decoration:none; } | |||||
a:hover { color: rgb(96, 73, 141) ; text-shadow: 2px 2px 2px rgba(36, 109, 56, 0.5); } | |||||
span[frown] { transform: rotate(90deg); display:inline-block; color: #bbb; } | |||||
</style> | |||||
<details> | |||||
<summary><h1>Not found</h1></summary> | |||||
<p><span frown>:(</span></p> | |||||
</details> |
@@ -0,0 +1,8 @@ | |||||
{% extends "base.html" %} | |||||
{% block main %} | |||||
Hi! | |||||
I am a test template to make sure jinja2 generation works well with hyde. | |||||
{{resource.name}} | |||||
{% endblock %} |
@@ -0,0 +1,8 @@ | |||||
{% extends "base.html" %} | |||||
{% block main %} | |||||
Hi! | |||||
I am a test template to make sure jinja2 generation works well with hyde. | |||||
{{resource.name}} | |||||
{% endblock %} |
@@ -0,0 +1,8 @@ | |||||
{% extends "base.html" %} | |||||
{% block main %} | |||||
Hi! | |||||
I am a test template to make sure jinja2 generation works well with hyde. | |||||
{{resource.name}} | |||||
{% endblock %} |
@@ -0,0 +1,8 @@ | |||||
{% extends "base.html" %} | |||||
{% block main %} | |||||
Hi! | |||||
I am a test template to make sure jinja2 generation works well with hyde. | |||||
{{resource.name}} | |||||
{% endblock %} |
@@ -0,0 +1,8 @@ | |||||
{% extends "base.html" %} | |||||
{% block main %} | |||||
Hi! | |||||
I am a test template to make sure jinja2 generation works well with hyde. | |||||
{{resource.name}} | |||||
{% endblock %} |
@@ -0,0 +1,8 @@ | |||||
{% extends "base.html" %} | |||||
{% block main %} | |||||
Hi! | |||||
I am a test template to make sure jinja2 generation works well with hyde. | |||||
{{resource.name}} | |||||
{% endblock %} |
@@ -0,0 +1,25 @@ | |||||
<?xml version="1.0"?> | |||||
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> | |||||
<cross-domain-policy> | |||||
<!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html --> | |||||
<!-- Most restrictive policy: --> | |||||
<site-control permitted-cross-domain-policies="none"/> | |||||
<!-- Least restrictive policy: --> | |||||
<!-- | |||||
<site-control permitted-cross-domain-policies="all"/> | |||||
<allow-access-from domain="*" to-ports="*" secure="false"/> | |||||
<allow-http-request-headers-from domain="*" headers="*" secure="false"/> | |||||
--> | |||||
<!-- | |||||
If you host a crossdomain.xml file with allow-access-from domain=“*” | |||||
and don’t understand all of the points described here, you probably | |||||
have a nasty security vulnerability. ~ simon willison | |||||
--> | |||||
</cross-domain-policy> |
@@ -0,0 +1,4 @@ | |||||
body{ | |||||
margin: 0 auto; | |||||
width: 960px; | |||||
} |
@@ -0,0 +1,5 @@ | |||||
# www.robotstxt.org/ | |||||
# www.google.com/support/webmasters/bin/answer.py?hl=en&answer=156449 | |||||
User-agent: * | |||||
@@ -0,0 +1,4 @@ | |||||
author: Lakshmi Vyasarajan | |||||
description: A test layout for hyde. | |||||
template: jinja2 (2.6) | |||||
version: 0.1 |
@@ -0,0 +1,57 @@ | |||||
{% extends "root.html" %} | |||||
{% block all %} | |||||
<!doctype html> | |||||
<html lang="en"> | |||||
<head> | |||||
{% block starthead %}{% endblock starthead %} | |||||
<meta charset="{{resource.meta.charset|default('utf-8')}}"> | |||||
<meta http-equiv="X-UA-Compatible" content="{{resource.meta.compatibility|default('IE=edge,chrome=1')}}"> | |||||
<title>{% block title %}{{resource.meta.title}}{% endblock %}</title> | |||||
<meta name="description" content="{{resource.meta.description}}"> | |||||
<meta name="author" content="{{resource.meta.author}}"> | |||||
<!-- Mobile viewport optimized: j.mp/bplateviewport --> | |||||
<meta name="viewport" content="{{resource.meta.viewport|default('width=device-width, initial-scale=1.0')}}"> | |||||
{% block favicons %} | |||||
<!-- Place favicon.ico & apple-touch-icon.png in the root of your domain and delete these references --> | |||||
<link rel="shortcut icon" href="{{ media_url('/favicon.ico') }}"> | |||||
<link rel="apple-touch-icon" href="{{ media_url('/apple-touch-icon.png') }}"> | |||||
{% endblock favicons %} | |||||
{% block css %} | |||||
<link rel="stylesheet" href="{{ media_url('css/site.css') }}"> | |||||
{% endblock css %} | |||||
{% block endhead %}{% endblock endhead %} | |||||
</head> | |||||
<body id="{{resource.id if resource.id else resource.name_without_extension}}"> | |||||
{% block content %} | |||||
<div id="container"> | |||||
{% block container %} | |||||
<header> | |||||
{% block header %}{% endblock header %} | |||||
</header> | |||||
<div id="main" role="main"> | |||||
{% block main %}{% endblock main %} | |||||
</div> | |||||
<footer> | |||||
{% block footer %}{% endblock %} | |||||
</footer> | |||||
{% endblock container%} | |||||
</div> <!--! end of #container --> | |||||
{% endblock content%} | |||||
{% block js %} | |||||
<!-- Javascript at the bottom for fast page loading --> | |||||
{% block jquery %} | |||||
<!-- Grab Google CDN's jQuery. fall back to local if necessary --> | |||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script> | |||||
{% endblock jquery %} | |||||
{% block scripts %}{% endblock scripts %} | |||||
{%endblock js %} | |||||
</body> | |||||
</html> | |||||
{% endblock all %} |
@@ -0,0 +1,10 @@ | |||||
{% extends "base.html" %} | |||||
{% block main %} | |||||
<article> | |||||
{% block article %}{% endblock %} | |||||
</article> | |||||
<aside> | |||||
{% block aside %}{% endblock %} | |||||
</aside> | |||||
{% endblock %} |
@@ -0,0 +1 @@ | |||||
{% block all %}{% endblock all %} |
@@ -0,0 +1,7 @@ | |||||
mode: development | |||||
media_root:: media # Relative path from site root (the directory where this file exists) | |||||
media_url: /media | |||||
template: hyde.ext.jinja2 | |||||
widgets: | |||||
plugins: | |||||
aggregators: |