Skip to content
Snippets Groups Projects
Commit ec562adf authored by Emmanuel Godard's avatar Emmanuel Godard
Browse files

initial fork commit

parents
Branches
No related tags found
No related merge requests found
Showing with 1417 additions and 0 deletions
# Byte-compiled / optimized / DLL files
/src/*
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
The MIT License (MIT)
Copyright (c) 2017 b. avianto
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
README.md 0 → 100644
# Peli-Kiera
Gabian is a theme for the Pelican static site generator.
It is a fork of [Peli-Kiera](https://github.com/aleylara/Peli-Kiera).
Thanks to the [Hugo-Kiera](https://github.com/avianto/hugo-kiera) project for the inspiration.
### Demo
Live-Demo at FIXME
### Installation
[Pelican-Docs](https://docs.getpelican.com/en/stable/) will guide you through the initial installation.
Once inside the project directory, Gabian theme can be installed by cloning the repo into your
themes path and pointing to it in your `pelicanconf.py`.
```bash
# Create a themes directory if it doesn't exists
cd project-dir
pelican-quickstart
mkdir themes
cd themes
git clone FIXME
# Add path to your theme directory in pelicanconf.py
THEME = 'themes/gabian'
```
In order to get read times and links between articles, the theme requires [pelican-readtime](https://github.com/getpelican/pelican-plugins/tree/master/readtime) and [neighbors](https://github.com/getpelican/pelican-plugins/tree/master/neighbors) plugins.
```bash
cd project-dir/
# Please note the plugins repo is quite large and you only need the two.
git clone https://github.com/getpelican/pelican-plugins
# Add path to your plugins directory in pelicanconf.py
PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['readtime', 'neighbors']
```
A sample article header.
```text
Title: Simple is better than complex
Date: 2018-11-14
Tags: python, jupyter, library
Description: The Zen of Python
Category: Python
### Introduction
This is a standard paragraph. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
```
Go ahead and create few articles in respective directories.
```bash
# Generate articles and populate output
pelican content -o output -s pelicanconf.py
# start the local server on http://localhost:8000/
pelican --autoreload --listen
```
Final project directory structure should look similiar to this.
```bash
(Pelican) ➜ project-dir tree
├── Makefile
├── content/
│ ├── Python/
│ │ ├── article-one.md
│ │ ├── article-two.md
│ │ └── article-three.md
│ ├── Research/
│ │ ├── article-one.md
│ │ ├── article-two.md
│ │ └── article-three.md
│ ├── images/
│ │ ├── camera-2008479_640.png
│ │ ├── camera-wide.png
│ │ └── wide-wide.png
│ └── pages/
│ └── about.md
├── output/
├── pelicanconf.py
├── pelican-plugins/
│ ├── neighbors
│ │ ├── Readme.rst
│ │ ├── __init__.py
│ │ └── neighbors.py
│ └── readtime
│ ├── README.md
│ ├── __init__.py
│ └── readtime.py
├── publishconf.py
├── tasks.py
└── themes
└── gabian/
```
### Settings
Example `pelicanconf.py`
```python
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = 'Author'
COPYRIGHT = '2023'
SITENAME = 'Site-Name'
SITEURL = 'https://www.example.com'
SITESUBTITLE = 'Site Subtitle'
PATH = 'content'
TIMEZONE = 'America/New_York'
DEFAULT_LANG = 'en'
THEME = 'themes/gabian'
PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['readtime', 'neighbors']
STATIC_PATHS = ['images']
# Article summary length on main index page
SUMMARY_MAX_LENGTH = 100
DEFAULT_PAGINATION = 10
GITHUB_URL = 'https://github.com/'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
RSS_FEED_SUMMARY_ONLY = True
# Social widget
SOCIAL = (
('twitter', 'https://twitter.com/'),
('linkedin', 'https://www.linkedin.com'),
('github', 'https://github.com/'),
('gitlab', 'https://gitlab.com/'),
('facebook', 'https://facebook.com'),
('instagram', 'https://instagram.com'),
)
# DISQUS_SITENAME = ''
# GOOGLE_ANALYTICS = ''
# Uncomment following line if you want document-relative URLs when developing
# RELATIVE_URLS = True
```
### Features
* Atom/RSS feeds
* Mobile friendly
* Google analytics
* Comments via Disqus
* Font awesome icons
* Modified pagination
* Image placements
### Pagination and image placement
The pagination is presented with the current page and 3 neighboring pages on either side.
<< < 7 8 9 **10** 11 12 13 > >>
Images can be moved on page by adding the tag `#float-right`, `#float-left`, `#mid` and `#full` in your markdown.
```markdown
![Title]({static}/images/my_image-600x400.png#float-right "camera icon")
```
Similarly, the placement can also be applied to html directly by wrapping images in a `<figure class="placement">` tag.
```html
<figure class="float-left">
<img src="path-to/images/my_image-600x400.png" alt="camera icon">
</figure>
```
Minimum image width of 600px is recommended. Images scale accordingly on smaller screens.
### Preview from Peli-Kiera
![Screenshot1](screenshot-1.png "Screenshot Desktop")
![Screenshot2](screenshot-2.png "Screenshot Mobile")
![Screenshot3](screenshot-3.png "Screenshot Mobile")
### License
[MIT License](https://github.com/avianto/hugo-kiera/blob/master/LICENSE.md)
# Peli-Kiera
Peli-Kiera is a theme for the Pelican static site generator.
Thanks to the [Hugo-Kiera](https://github.com/avianto/hugo-kiera) project for the inspiration.
### Demo
Live-Demo at [https://aleylara.github.io/Peli-Kiera](https://aleylara.github.io/Peli-Kiera)
### Installation
[Pelican-Docs](https://docs.getpelican.com/en/stable/) will guide you through the initial installation.
Once inside the project directory, Peli-Kiera theme can be installed by cloning the repo into your
themes path and pointing to it in your `pelicanconf.py`.
```bash
# Create a themes directory if it doesn't exists
cd project-dir
pelican-quickstart
mkdir themes
cd themes
git clone https://github.com/aleylara/Peli-Kiera
# Add path to your theme directory in pelicanconf.py
THEME = 'themes/Peli-Kiera'
```
In order to get read times and links between articles, the theme requires [pelican-readtime](https://github.com/getpelican/pelican-plugins/tree/master/readtime) and [neighbors](https://github.com/getpelican/pelican-plugins/tree/master/neighbors) plugins.
```bash
cd project-dir/
# Please note the plugins repo is quite large and you only need the two.
git clone https://github.com/getpelican/pelican-plugins
# Add path to your plugins directory in pelicanconf.py
PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['readtime', 'neighbors']
```
A sample article header.
```text
Title: Simple is better than complex
Date: 2018-11-14
Tags: python, jupyter, library
Description: The Zen of Python
Category: Python
### Introduction
This is a standard paragraph. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
```
Go ahead and create few articles in respective directories.
```bash
# Generate articles and populate output
pelican content -o output -s pelicanconf.py
# start the local server on http://localhost:8000/
pelican --autoreload --listen
```
Final project directory structure should look similiar to this.
```bash
(Pelican) ➜ project-dir tree
├── Makefile
├── content/
│ ├── Python/
│ │ ├── article-one.md
│ │ ├── article-two.md
│ │ └── article-three.md
│ ├── Research/
│ │ ├── article-one.md
│ │ ├── article-two.md
│ │ └── article-three.md
│ ├── images/
│ │ ├── camera-2008479_640.png
│ │ ├── camera-wide.png
│ │ └── wide-wide.png
│ └── pages/
│ └── about.md
├── output/
├── pelicanconf.py
├── pelican-plugins/
│ ├── neighbors
│ │ ├── Readme.rst
│ │ ├── __init__.py
│ │ └── neighbors.py
│ └── readtime
│ ├── README.md
│ ├── __init__.py
│ └── readtime.py
├── publishconf.py
├── tasks.py
└── themes
└── Peli-Kiera/
```
### Settings
Example `pelicanconf.py`
```python
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = 'Author'
COPYRIGHT = '2019'
SITENAME = 'Site-Name'
SITEURL = 'https://www.example.com'
SITESUBTITLE = 'Site Subtitle'
PATH = 'content'
TIMEZONE = 'America/New_York'
DEFAULT_LANG = 'en'
THEME = 'themes/Peli-Kiera'
PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['readtime', 'neighbors']
STATIC_PATHS = ['images']
# Article summary length on main index page
SUMMARY_MAX_LENGTH = 100
DEFAULT_PAGINATION = 10
GITHUB_URL = 'https://github.com/'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
RSS_FEED_SUMMARY_ONLY = True
# Social widget
SOCIAL = (
('twitter', 'https://twitter.com/'),
('linkedin', 'https://www.linkedin.com'),
('github', 'https://github.com/'),
('gitlab', 'https://gitlab.com/'),
('facebook', 'https://facebook.com'),
('instagram', 'https://instagram.com'),
)
# DISQUS_SITENAME = ''
# GOOGLE_ANALYTICS = ''
# Uncomment following line if you want document-relative URLs when developing
# RELATIVE_URLS = True
```
### Features
* Atom/RSS feeds
* Mobile friendly
* Google analytics
* Comments via Disqus
* Font awesome icons
* Modified pagination
* Image placements
### Pagination and image placement
The pagination is presented with the current page and 3 neighboring pages on either side.
<< < 7 8 9 **10** 11 12 13 > >>
Images can be moved on page by adding the tag `#float-right`, `#float-left`, `#mid` and `#full` in your markdown.
```markdown
![Title]({static}/images/my_image-600x400.png#float-right "camera icon")
```
Similarly, the placement can also be applied to html directly by wrapping images in a `<figure class="placement">` tag.
```html
<figure class="float-left">
<img src="path-to/images/my_image-600x400.png" alt="camera icon">
</figure>
```
Minimum image width of 600px is recommended. Images scale accordingly on smaller screens.
### Preview
![Screenshot1](screenshot-1.png "Screenshot Desktop")
![Screenshot2](screenshot-2.png "Screenshot Mobile")
![Screenshot3](screenshot-3.png "Screenshot Mobile")
### License
[MIT License](https://github.com/avianto/hugo-kiera/blob/master/LICENSE.md)
screenshot-1.png

402 KiB

screenshot-2.png

154 KiB

screenshot-3.png

115 KiB

@import url("pygment.css");
body {
margin: 0;
padding: 0;
overflow-x: hidden;
font-family: "Roboto Slab", serif;
color: #333333;
}
h1,
h2,
h3,
h4,
h5,
h6,
time {
font-family: "Ruda", sans-serif;
}
#container {
margin: 0;
padding: 0;
max-width: 100vw;
min-height: 100vh;
display: flex;
flex-direction: column;
}
#container > * {
width: 700px;
margin: 0 auto;
}
@media only screen and (max-width: 800px) {
#container > * {
width: auto;
margin: 0 1.2em;
}
}
#container header {
margin-bottom: 1em;
}
#container header h1 {
font-size: 2.8rem;
}
#container header h1 a {
color: #000000;
font-size: 2.8rem;
}
#container header ul {
display: flex;
margin: 0;
padding: 0;
list-style: none;
float: right;
}
#container header ul li {
margin-left: 1em;
}
@media only screen and (max-width: 800px) {
#container header ul {
float: none;
}
#container header ul li {
margin: 0 1em 0 0;
}
}
#container nav {
border-bottom: solid 3px #cecece;
padding-bottom: 0.5em;
font-family: "Ruda", sans-serif;
}
#container nav ul {
margin: 0;
padding: 0;
list-style: none;
display: flex;
justify-content: flex-end;
}
#container nav ul li {
display: flex;
flex-direction: column-reverse;
margin-left: 1em;
align-items: end;
}
#container nav ul li a.active {
border-bottom: 0.4em solid #666666;
}
#container main {
flex: 1 0 0;
line-height: 1.5;
font-size: 1rem;
}
#container main section#home ul {
margin: 0;
padding: 0;
list-style: none;
}
#container main section#home ul li {
margin: 0.5em 0;
padding-bottom: 0.5em;
}
#container main section#home ul li h2 {
margin: 0.2em 0;
}
#container main section#home span {
color: #666666;
}
#container p a {
font-style: italic;
text-decoration: underline;
text-decoration-style: dotted;
}
#container main section#list ul {
margin: 0;
padding: 0;
list-style: none;
}
#container main section#list ul li {
display: flex;
justify-content: space-between;
padding: 0.5em 0;
border-bottom: 1px solid #cecece;
}
#container main section#list ul li time,
#container main section#list ul li span.count {
float: right;
white-space: nowrap;
}
#container main section#list ul li:last-child {
border-bottom: none;
}
@media only screen and (max-width: 800px) {
#container main section#list ul li {
font-size: small;
}
}
#container main section.post-nav {
margin: 0.5em 0;
padding: 0.5em 0;
display: flex;
justify-content: space-between;
border-top: 1px solid #f7f7f7;
font-size: 0.9em;
}
#left-page {
text-align: left;
font-weight: bold;
}
#right-page {
text-align: right;
font-weight: bold;
}
#left-arrow {
float: left;
padding-right: 5px;
}
#right-arrow {
float: right;
padding-left: 5px;
}
#container main article pre,
#container main section pre {
background-color: #f5f5f5;
overflow-x: auto;
padding: 0.8em 0.1em 0.8em 0.8em;
font-size: 0.8em;
box-shadow: 0 -1px 0 #bbbbbb inset;
}
#container main article pre code,
#container main section pre code {
font-size: 1em;
}
#container main article p code,
#container main section p code {
padding: 0.2em;
background-color: #f5f5f5;
font-size: 0.8em;
}
#container main article p kbd,
#container main section p kbd {
display: inline-block;
padding: 0.2em 0.3em;
font-size: 0.8em;
line-height: 1em;
color: #555555;
vertical-align: middle;
background-color: #f5f5f5;
border-width: 1px;
border-style: solid;
border-color: #cccccc #cccccc #bbbbbb;
border-image: none;
border-radius: 3px;
box-shadow: 0 -1px 0 #bbbbbb inset;
}
#container main h1 {
margin-bottom: 1rem;
}
#container footer {
border-top: solid 1px #cecece;
}
#container footer h6 {
font-size: 0.8em;
}
.meta-aside,
#container main section#home ul li aside,
#container main article aside {
margin: 0.5em 0;
font-family: "Ruda", sans-serif;
color: #909090;
font-size: 0.8em;
}
.meta-aside ul,
#container main section#home ul li aside ul,
#container main article aside ul {
margin: 0;
padding: 0;
list-style: none;
}
.meta-aside ul li,
#container main section#home ul li aside ul li,
#container main article aside ul li {
margin: 0;
padding: 0;
}
a {
color: #666666;
text-decoration: none;
}
.image,
figure img,
img {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
.full-image,
figure.full img,
img[src*="full"] {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
@supports (width: 100vw) {
.full-image,
figure.full img,
img[src*="full"] {
width: 100vw;
position: relative;
left: 50%;
right: 50%;
margin-left: -50vw;
margin-right: -50vw;
}
}
.mid-image,
figure.mid img,
img[src*="mid"] {
width: 100%;
box-shadow: 0 3px 3px #bbbbbb;
}
@supports (width: 100vw) {
.mid-image,
figure.mid img,
img[src*="mid"] {
width: 800px;
position: relative;
left: 50%;
right: 50%;
margin-left: -400px;
margin-right: -400px;
}
@media only screen and (max-width: 800px) {
.mid-image,
figure.mid img,
img[src*="mid"] {
width: 100%;
left: 0;
right: 0;
margin: 0;
}
}
}
.float-image-left,
figure.float-left img,
img[src*="float-left"] {
width: 300px;
float: left;
margin: 0 1em 1em -3em;
box-shadow: 0 3px 3px #bbbbbb;
}
@media only screen and (max-width: 800px) {
.float-image-left,
figure.float-left img,
img[src*="float-left"] {
float: none;
margin: 0;
width: 100%;
}
}
.float-image-right,
figure.float-right img,
img[src*="float-right"] {
width: 300px;
float: right;
margin: 0 -3em 1em 1em;
box-shadow: 0 3px 3px #bbbbbb;
}
@media only screen and (max-width: 800px) {
.float-image-right,
figure.float-right img,
img[src*="float-right"] {
float: none;
margin: 0;
width: 100%;
}
}
figure {
margin: 0;
}
figure figcaption p {
margin-top: 0.3em;
font-size: 0.8em;
font-style: italic;
}
figure.full {
margin: 0;
}
figure.mid {
margin: 0;
}
figure.float-left {
margin: 0;
float: left;
}
figure.float-right {
margin: 0;
float: right;
}
figure.float-right figcaption {
margin-left: 1em;
}
table {
width: 100%;
}
table thead {
background-color: #cecece;
}
blockquote {
margin: 1em;
border-left: solid 0.1em #cecece;
padding: 0.5em 2em;
position: relative;
background-color: #efefef;
box-shadow: 0 -1px 0 #bbbbbb inset;
}
blockquote::before {
content: "\f10d";
font-size: 3em;
font-family: "FontAwesome";
color: rgba(192, 192, 192, 0.3);
position: absolute;
left: 6px;
top: 0;
}
@media only screen and (max-width: 800px) {
blockquote {
margin: 1em 0;
padding: 0.5em;
}
}
dl dd {
font-style: italic;
}
ul.pagination {
display: flex;
justify-content: center;
margin: 1em 0 0;
padding: 0.5em 0;
list-style: none;
}
ul.pagination li {
padding: 0 0.5em;
}
@media only screen and (max-width: 800px) {
ul.pagination li {
padding: 0 0.3em;
}
}
ul.pagination li.active {
font-weight: bold;
}
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #8f5902; font-style: italic } /* Comment */
.highlight .g { color: #000000 } /* Generic */
.highlight .k { color: #204a87; font-weight: normal } /* Keyword */
.highlight .l { color: #000000 } /* Literal */
.highlight .n { color: #000000 } /* Name */
.highlight .o { color: #ce5c00; font-weight: normal } /* Operator */
.highlight .x { color: #000000 } /* Other */
.highlight .p { color: #000000; font-weight: normal } /* Punctuation */
.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */
.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
.highlight .gd { color: #a40000 } /* Generic.Deleted */
.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
.highlight .gr { color: #ef2929 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: normal } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #000000; font-style: italic } /* Generic.Output */
.highlight .gp { color: #8f5902 } /* Generic.Prompt */
.highlight .gs { color: #000000; font-weight: normal } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: normal } /* Generic.Subheading */
.highlight .gt { color: #a40000; font-weight: normal } /* Generic.Traceback */
.highlight .kc { color: #204a87; font-weight: normal } /* Keyword.Constant */
.highlight .kd { color: #204a87; font-weight: normal } /* Keyword.Declaration */
.highlight .kn { color: #204a87; font-weight: normal } /* Keyword.Namespace */
.highlight .kp { color: #204a87; font-weight: normal } /* Keyword.Pseudo */
.highlight .kr { color: #204a87; font-weight: normal } /* Keyword.Reserved */
.highlight .kt { color: #204a87; font-weight: normal } /* Keyword.Type */
.highlight .ld { color: #000000 } /* Literal.Date */
.highlight .m { color: #0000cf; font-weight: normal } /* Literal.Number */
.highlight .s { color: #4e9a06 } /* Literal.String */
.highlight .na { color: #c4a000 } /* Name.Attribute */
.highlight .nb { color: #204a87 } /* Name.Builtin */
.highlight .nc { color: #000000 } /* Name.Class */
.highlight .no { color: #000000 } /* Name.Constant */
.highlight .nd { color: #5c35cc; font-weight: normal } /* Name.Decorator */
.highlight .ni { color: #ce5c00 } /* Name.Entity */
.highlight .ne { color: #cc0000; font-weight: normal } /* Name.Exception */
.highlight .nf { color: #000000 } /* Name.Function */
.highlight .nl { color: #f57900 } /* Name.Label */
.highlight .nn { color: #000000 } /* Name.Namespace */
.highlight .nx { color: #000000 } /* Name.Other */
.highlight .py { color: #000000 } /* Name.Property */
.highlight .nt { color: #204a87; font-weight: normal } /* Name.Tag */
.highlight .nv { color: #000000 } /* Name.Variable */
.highlight .ow { color: #204a87; font-weight: normal } /* Operator.Word */
.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
.highlight .mb { color: #0000cf; font-weight: normal } /* Literal.Number.Bin */
.highlight .mf { color: #0000cf; font-weight: normal } /* Literal.Number.Float */
.highlight .mh { color: #0000cf; font-weight: normal } /* Literal.Number.Hex */
.highlight .mi { color: #0000cf; font-weight: normal } /* Literal.Number.Integer */
.highlight .mo { color: #0000cf; font-weight: normal } /* Literal.Number.Oct */
.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #000000 } /* Name.Function.Magic */
.highlight .vc { color: #000000 } /* Name.Variable.Class */
.highlight .vg { color: #000000 } /* Name.Variable.Global */
.highlight .vi { color: #000000 } /* Name.Variable.Instance */
.highlight .vm { color: #000000 } /* Name.Variable.Magic */
.highlight .il { color: #0000cf; font-weight: normal } /* Literal.Number.Integer.Long */
{% if GOOGLE_ANALYTICS %}
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{GOOGLE_ANALYTICS}}', '{{GA_COOKIE_DOMAIN if GA_COOKIE_DOMAIN else "auto"}}');
ga('send', 'pageview');
</script>
{% endif %}
{% if GAUGES %}
<script type="text/javascript">
var _gauges = _gauges || [];
(function() {
var t = document.createElement('script');
t.type = 'text/javascript';
t.async = true;
t.id = 'gauges-tracker';
t.setAttribute('data-site-id', '{{GAUGES}}');
t.src = '//secure.gaug.es/track.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(t, s);
})();
</script>
{% endif %}
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Archives{% endblock %}
{% block content %}
<main>
<section id="list">
<h2>Archives for {{ SITENAME }}</h2>
<ul>
{% for article in dates %}
<li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a>
<time>{{ article.date|strftime('%b %Y') }}</time>
</li>
{% endfor %}
</ul>
</section>
</main>
{% endblock %}
\ No newline at end of file
{% extends "base.html" %}
{% block html_lang %}{{ article.lang }}{% endblock %}
{% block title %}{{ SITENAME }} - {{ article.title }}{% endblock %}
{% block head %}
{{ super() }}
{% if article.description %}
<meta name="description" content="{{ article.description }}" />
{% endif %}
{% for tag in article.tags %}
<meta name="tags" content="{{ tag }}" />
{% endfor %}
{% endblock %}
{% block content %}
<main>
<article>
<h1>{{ article.title }}</h1>
{% import 'translations.html' as translations with context %}
{{ translations.translations_for(article) }}
<aside>
<ul>
<li>
<time datetime="{{ article.date }}">{{ article.date|strftime('%b %d, %Y') }}</time>
</li>
{% if article.modified %}
<li>
<time datetime="{{ article.modified }}">Modified
on {{ article.modified|strftime('%b %d, %Y') }}</time>
</li>
{% endif %}
{% if article.readtime %}
<li>{{ article.readtime.minutes }} min read</li>
{% endif %}
{% if article.category %}
<li>
Categories:
<a href="{{ SITEURL }}/{{ article.category.url }}"><em>{{ article.category }}</em></a>
{% endif %}
</li>
{% if article.tags %}
<li>
Tags:
{% for tag in article.tags %}
<a href="{{ SITEURL }}/{{ tag.url }}"><em>#{{ tag }}</em></a>
{% endfor %}
{% endif %}
</li>
</ul>
</aside>
{{ article.content }}
</article>
<section class="post-nav">
<div id="left-page">
<div id="left-link">
{% if article.next_article %}
<div id="left-arrow"><i class="fa fa-chevron-circle-left"></i></div>
<a href="{{ SITEURL }}/{{ article.next_article.url }}"> {{ article.next_article.title }}</a>
{% endif %}
</div>
</div>
<div id="right-page">
<div id="right-link">
{% if article.prev_article %}
<a href="{{ SITEURL }}/{{ article.prev_article.url }}">{{ article.prev_article.title }} </a>
<div id="right-arrow"><i class="fa fa-chevron-circle-right"></i></div>
{% endif %}
</div>
</div>
</section>
<div>
{% include 'disqus_script.html' %}
</div>
</main>
{% endblock %}
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - {{ author }}{% endblock %}
{% block content %}
<main>
<section id="list">
<h2>Articles by - {{ author }}</h2>
<ul>
{% set new = namespace(p=0) %}
{% for article in articles_page.object_list %}
{% set period = article.date | strftime('%Y') %}
{% if period != new.p %}
<h3>{{ period }}</h3>
<li>
<a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a>
<time>{{ article.date|strftime('%b %Y') }}</time>
</li>
{% set new.p = article.date | strftime('%Y') %}
{% elif period == new.p %}
<li>
<a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a>
<time>{{ article.date|strftime('%b %Y') }}</time>
</li>
{% endif %}
{% endfor %}
</ul>
</section>
{% if articles_page.has_other_pages() %}
{% include 'pagination.html' %}
{% endif %}
</main>
{% endblock %}
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Authors{% endblock %}
{% block content %}
<main>
<section id="list">
<h2>Authors</h2>
<ul>
{% for author, articles in authors|sort %}
{% if author == "" %}
<li><a href="#">Anonymous</a>({{ articles|count }})</li>
{% else %}
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a>({{ articles|count }})</li>
{% endif %}
{% endfor %}
</ul>
</section>
</main>
{% endblock %}
<!DOCTYPE html>
<html lang="{% block html_lang %}{{ DEFAULT_LANG }}{% endblock html_lang %}">
<head>
{% block head %}
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{% block title %}{{ SITENAME }}{% endblock title %}</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css"/>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto+Slab|Ruda"/>
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/css/{{ CSS_FILE }}"/>
{% if FEED_ALL_ATOM %}
<link href="{{ FEED_DOMAIN }}/
{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}"
type="application/atom+xml" rel="alternate" title="{{ SITENAME }} Atom Feed"/>
{% endif %}
{% if FEED_ALL_RSS %}
<link href="{{ FEED_DOMAIN }}/
{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}"
type="application/rss+xml" rel="alternate" title="{{ SITENAME }} RSS Feed"/>
{% endif %}
{% endblock head %}
</head>
<body>
{% include 'github.html' %}
<div id="container">
<header>
<h1><a href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>
{% if SOCIAL or FEED_ALL_ATOM or FEED_ALL_RSS %}
<ul class="social-media">
{% for name, link in SOCIAL %}
<li><a href="{{ link }}"><i class="fab fa-{{ name }} fa-lg" aria-hidden="true"></i></a></li>
{% endfor %}
{% if FEED_ALL_ATOM %}
<li><a href="{{ FEED_DOMAIN }}/
{% if FEED_ALL_ATOM_URL %}{{ FEED_ALL_ATOM_URL }}{% else %}{{ FEED_ALL_ATOM }}{% endif %}"
type="application/atom+xml" rel="alternate"><i class="fa fa-rss fa-lg"
aria-hidden="true"></i></a></li>
{% endif %}
{% if FEED_ALL_RSS %}
<li><a href="{{ FEED_DOMAIN }}/
{% if FEED_ALL_RSS_URL %}{{ FEED_ALL_RSS_URL }}{% else %}{{ FEED_ALL_RSS }}{% endif %}"
type="application/rss+xml" rel="alternate"><i class="fa fa-rss fa-lg" aria-hidden="true"></i></a>
</li>
{% endif %}
</ul>
{% endif %}
<p><em>{{ SITESUBTITLE }}</em></p>
</header>
<nav>
<ul>
{% for title, link in MENUITEMS %}
<li><a href="{{ link }}">{{ title }}</a></li>
{% endfor %}
{% if DISPLAY_CATEGORIES_ON_MENU %}
{% for cat, null in categories %}
<li><a {% if cat==category %}
class="active" {% endif %}href="{{ SITEURL }}/{{ cat.url }}"> {{ cat }} </a></li>
{% endfor %}
{% endif %}
{% if DISPLAY_PAGES_ON_MENU %}
{% for p in pages %}
<li><a {% if p==page %} class="active" {% endif %}href="{{ SITEURL }}/{{ p.url }}">{{ p.title }}</a>
</li>
{% endfor %}
{% endif %}
</ul>
</nav>
{% block content %}
{% endblock %}
<footer>
<h6>
Rendered by <a href="http://getpelican.com/">Pelican</a> &nbsp;&bull;&nbsp; Theme by <a
href="https://github.com/aleylara/Peli-Kiera">Peli-Kiera</a> &nbsp;&bull;&nbsp; Copyright
&copy{% if COPYRIGHT %}{{ COPYRIGHT }} {% endif %}
{% if AUTHOR %} &nbsp;&#8209;&nbsp; {{ AUTHOR }} {% endif %}
</h6>
</footer>
</div>
{% include 'analytics.html' %}
</body>
</html>
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Categories{% endblock %}
{% block content %}
<main>
<section id="list">
<h2>Number of Articles for Category </h2>
<ul>
{% for category, articles in categories|sort %}
<li><a href="{{ SITEURL }}/{{ category.url }}">{{ category }}</a> ({{ articles|count }})</li>
{% endfor %}
</ul>
</section>
</main>
{% endblock %}
{% extends "base.html" %}
{% block title %}{{ SITENAME }} - Archives{% endblock %}
{% block content %}
<main>
<section id="list">
<h2>{{ category }}</h2>
<ul>
{% set new = namespace(p=0) %}
{% for article in articles_page.object_list %}
{% set period = article.date | strftime('%Y') %}
{% if period != new.p %}
<h3>{{ period }}</h3>
<li>
<a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a>
<time>{{ article.date|strftime('%b %Y') }}</time>
</li>
{% set new.p = article.date | strftime('%Y') %}
{% elif period == new.p %}
<li>
<a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a>
<time>{{ article.date|strftime('%b %Y') }}</time>
</li>
{% endif %}
{% endfor %}
</ul>
</section>
{% if articles_page.has_other_pages() %}
{% include 'pagination.html' %}
{% endif %}
</main>
{% endblock %}
{% if DISQUS_SITENAME %}
<div class="comments">
<h2>Comments !</h2>
<div id="disqus_thread"></div>
<script>
var disqus_config = function () {
this.page.url = "{{ SITEURL }}/{{ article.url }}";
this.page.identifier = "{{ article.slug }}";
this.page.title = "{{ article.title }}";
};
(function () {
var d = document,
s = d.createElement('script');
s.src = 'https://{{ DISQUS_SITENAME }}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments
powered by
Disqus.</a></noscript>
</div>
{% endif %}
{% if GITHUB_URL %}
<a href="{{ GITHUB_URL }}" class="github-corner" aria-label="View source on GitHub">
<svg width="80" height="80" viewBox="0 0 250 250"
style="fill:#8B8B7A; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true">
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
<path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
<path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
fill="currentColor" class="octo-body"></path>
</svg>
</a>
{% endif %}
<style>.github-corner:hover .octo-arm {
animation: octocat-wave 560ms ease-in-out
}
@keyframes octocat-wave {
0%, 100% {
transform: rotate(0)
}
20%, 60% {
transform: rotate(-25deg)
}
40%, 80% {
transform: rotate(10deg)
}
}
@media (max-width: 500px) {
.github-corner:hover .octo-arm {
animation: none
}
.github-corner .octo-arm {
animation: octocat-wave 560ms ease-in-out
}
}</style>
{% extends "base.html" %}
{% block content %}
<main>
<section id="home">
<ul>
{% for article in articles_page.object_list %}
<li>
<h1><a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark"
title="Permalink to {{ article.title|striptags }}">{{ article.title }}</a></h1>
<aside>
<ul>
<li>
<time datetime="{{ article.date }}">{{ article.date|strftime('%b %d, %Y') }}</time>
</li>
{% if article.readtime %}
<li>
{{ article.readtime.minutes }} min read
</li>
{% endif %}
</ul>
</aside>
<p>
{{ article.summary }}
<a href="{{ SITEURL }}/{{ article.url }}"><em>Read more...</em></a>
</p>
</li>
{% endfor %}
</ul>
{% if articles_page.has_other_pages() %}
{% include 'pagination.html' %}
{% endif %}
</section>
</main>
{% endblock content %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment