Merge pull request #174 from tdwg/templating

Use jinja2 templating
This commit is contained in:
Peter Desmet 2017-12-09 17:03:17 +01:00 committed by GitHub
commit 1f5d351a55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 860 additions and 281 deletions

View File

@ -5,13 +5,14 @@
#
import io
import os
import re
import csv
import sys
import codecs
from urllib import request
from Cheetah.Template import Template
from jinja2 import FileSystemLoader, Environment
NAMESPACES = {
'http://rs.tdwg.org/dwc/iri/' : 'dwciri',
@ -244,7 +245,7 @@ class DwcDigester(object):
Parameters
-----------
html_template : str
relative path and filename to the [Cheetah3](http://cheetahtemplate.org/) compatible
relative path and filename to the Jinja2 compatible
template
html_output : str
relative path and filename to write the resulting index.html
@ -252,7 +253,10 @@ class DwcDigester(object):
data = {}
data["class_groups"] = self.template_data
html = Template(file=html_template, searchList=[data])
env = Environment(loader = FileSystemLoader(os.path.dirname(html_template)))
template = env.get_template(os.path.basename(html_template))
html = template.render(data)
index_page = open(html_output, "w")
index_page.write(str(html))

View File

@ -4,7 +4,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Darwin Core quick reference guide</title>
<!-- CSS -->
<link rel="stylesheet" href="https://dev.tdwg.org/theme/css/main.css">
<style>
@ -13,7 +13,7 @@
}
@media screen and (min-width: 768px) {
#sidebar { position: fixed; } /* Use fixed sidebar on md screens */
#sidebar { position: fixed; } /* Use fixed sidebar on md screens */
}
.anchor:before { /* To offset sticky-top navbar */
@ -47,11 +47,11 @@
<div class="col-md-3">
<nav id="sidebar" class="mb-4">
<ul class="nav flex-md-column nav-pills">
#for $class_group in $class_groups
{% for class_group in class_groups %}
<li class="nav-item">
<a class="nav-link py-1" href="#$class_group.label">$class_group.label</a><!-- anchor to class_group -->
<a class="nav-link py-1" href="#{{ class_group.label }}">{{ class_group.label }}</a><!-- anchor to class_group -->
</li>
#end for
{% endfor %}
</ul>
</nav>
</div>
@ -59,45 +59,45 @@
<div class="col-md-9">
<h1>Darwin Core quick reference guide</h1>
<p class="lead">This page provides a list of all currently recommended terms of the Darwin Core standard. Categories such as <code>Occurrence</code>, <code>Event</code> correspond to Darwin Core classes, which group other terms. Convenient <a href="https://github.com/tdwg/dwc/tree/master/dist"> files of these terms</a> and <a href="https://github.com/tdwg/dwc/blob/master/vocabulary/term_versions.csv"> their full history</a> can be found in the <a href="https://github.com/tdwg/dwc">Darwin Core repository</a>.</p>
#for $class_group in $class_groups
<section id="$class_group.label" class="anchor mb-4"><!-- anchor to class_group -->
<h2>$class_group.label</h2>
{% for class_group in class_groups %}
<section id="{{ class_group.label }}" class="anchor mb-4"><!-- anchor to class_group -->
<h2>{{ class_group.label }}</h2>
<div class="my-4">
#for $term in $class_group.terms
<a class="btn btn-sm btn-outline-dark m-1" href="#$term.namespace:$term.label">$term.label</a><!-- link to term -->
#end for
{% for term in class_group.terms %}
<a class="btn btn-sm btn-outline-dark m-1" href="#{{ term.namespace}}:{{ term.label }}">{{ term.label }}</a><!-- link to term -->
{% endfor %}
</div>
#if $class_group.iri is not None
## The above will exclude the Record-level class_group
{% if class_group.iri is not none %}
{# The above will exclude the Record-level class_group #}
<table class="table table-sm border mb-3">
<tbody>
<tr class="table-primary"><th colspan="2">$class_group.label <span class="badge badge-primary float-right">Class</span></th></tr>
<tr><td class="label">Identifier</td><td><a href="$class_group.iri">$class_group.iri</a></td></tr>
<tr><td class="label">Definition</td><td>$class_group.definition</td></tr>
<tr><td class="label">Comments</td><td>$class_group.comments</td></tr>
<tr class="table-primary"><th colspan="2">{{ class_group.label }}<span class="badge badge-primary float-right">Class</span></th></tr>
<tr><td class="label">Identifier</td><td><a href="{{ class_group.iri }}">{{ class_group.iri }}</a></td></tr>
<tr><td class="label">Definition</td><td>{{class_group.definition}}</td></tr>
<tr><td class="label">Comments</td><td>{{class_group.comments}}</td></tr>
</tbody>
</table>
#end if
{%endif %}
#for $term in $class_group.terms
<a id="$term.namespace:$term.label" class="anchor"></a><!-- anchor to term -->
{% for term in class_group.terms %}
<a id="{{ term.namespace}}:{{ term.label }}" class="anchor"></a><!-- anchor to term -->
<table class="table table-sm border mb-3">
<tbody>
<tr class="table-secondary"><th colspan="2">$term.label <span class="badge badge-secondary float-right">Property</span></th></tr>
<tr><td class="label">Identifier</td><td><a href="$term.iri">$term.iri</a></td></tr>
<tr><td class="label">Definition</td><td>$term.definition</td></tr>
<tr><td class="label">Comments</td><td>$term.comments</td></tr>
<tr class="table-secondary"><th colspan="2">{{ term.label }}<span class="badge badge-secondary float-right">Property</span></th></tr>
<tr><td class="label">Identifier</td><td><a href="{{ term.iri }}">{{ term.iri }}</a></td></tr>
<tr><td class="label">Definition</td><td>{{ term.definition }}</td></tr>
<tr><td class="label">Comments</td><td>{{ term.comments }}</td></tr>
</tbody>
</table>
#end for
{% endfor %}
</section>
#end for
{% endfor %}
</div>
</div>
</div>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://dev.tdwg.org/theme/js/jquery.min.js"></script>
<script src="https://dev.tdwg.org/theme/js/popper.min.js"></script>

View File

@ -1,2 +1,2 @@
Cheetah3
PyYAML
jinja2
PyYAML

File diff suppressed because it is too large Load Diff