purelog 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 38ae3491fa5651ea16cfd0bd53a0bd8eff07029bf8b71c0359893ec836436295
4
+ data.tar.gz: 678c4035de1fc059a8f7a87f90263ef57642479ac980f9eb68a8a25448c9c54c
5
+ SHA512:
6
+ metadata.gz: 64e8bb37c8a2eeaa275263526d4a8be8e8e8f4898bc9ad0c82e7b77d3d1d2dbac6caf080fb24d933de0c1a6389ecd6bcdf7c00553713f8343b671e4fcec0b69c
7
+ data.tar.gz: 8a527b2dce04044046da50220752287968461b924e46489952b1d9264d16474605d9001863af9ec75865102d261be4ffcda3427bebe14f10a22c7bfba49e4863
data/LICENSE ADDED
@@ -0,0 +1 @@
1
+ <copied>
data/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # Purelog Jekyll Theme (Gem)
2
+
3
+ A reusable Jekyll theme extracted from the Purelog site, featuring a responsive layout built with Pure.css, accessibility-minded search, and portable links.
4
+
5
+ ## Usage (local path)
6
+
7
+ In a Jekyll site, add to your `Gemfile`:
8
+
9
+ ```ruby
10
+ gem "purelog", path: "../theme"
11
+ ```
12
+
13
+ And in `_config.yml`:
14
+
15
+ ```yml
16
+ theme: purelog
17
+ ```
18
+
19
+ Ensure your site has the required plugins listed in your main Gemfile and `_config.yml` (jekyll-seo-tag, jekyll-feed, jekyll-paginate-v2, jekyll-sitemap).
20
+
21
+ ## Assets
22
+
23
+ The theme provides `/assets/main.css`, `/assets/code.css`, and `/assets/simple-jekyll-search.js`.
24
+
25
+ ## Notes & Journals (optional)
26
+
27
+ If you use the optional `notes` and `journals` collections, define them in your site's `_config.yml`:
28
+
29
+ ```yml
30
+ collections:
31
+ notes:
32
+ output: true
33
+ permalink: /notes/:title
34
+ journals:
35
+ output: true
36
+ permalink: /journals/:title
37
+ ```
38
+
39
+ ## Google Analytics
40
+
41
+ Set `google_analytics: G-XXXXXXXXXX` and build with `JEKYLL_ENV=production`.
42
+
43
+ ## License
44
+
45
+ MIT
@@ -0,0 +1,18 @@
1
+ {%- comment -%}
2
+ Google Analytics (GA4) snippet.
3
+ Usage:
4
+ 1) Set `google_analytics: G-XXXXXXXXXX` in `_config.yml` (or via environment-specific config)
5
+ 2) Ensure builds set JEKYLL_ENV=production to activate the include in `head.html`
6
+ {%- endcomment -%}
7
+ {%- if site.google_analytics and site.google_analytics != '' -%}
8
+ <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
9
+ <script>
10
+ window.dataLayer = window.dataLayer || [];
11
+ function gtag(){dataLayer.push(arguments);}
12
+ gtag('js', new Date());
13
+ gtag('config', '{{ site.google_analytics }}', {
14
+ 'anonymize_ip': true,
15
+ 'page_path': window.location.pathname
16
+ });
17
+ </script>
18
+ {%- endif -%}
@@ -0,0 +1,6 @@
1
+ <div id="author">
2
+ <h3>About
3
+ {{site.author}}</h3>
4
+ <img src="{{ site.author_pic | relative_url }}" alt="Photo of {{site.author}}"/>
5
+ <p>{{ site.author_bio }}</p>
6
+ </div>
@@ -0,0 +1,38 @@
1
+ <hr/>
2
+
3
+ <footer class="footer">
4
+ <div class="pure-menu pure-menu-horizontal">
5
+ <ul>
6
+ <li class="pure-menu-item">
7
+ <a class="pure-menu-link" href="{{ "/" | relative_url }}">
8
+ <i class="fas fa-home"></i>
9
+ <span class="md-display">Home</span>
10
+ </a>
11
+ </li>
12
+ <li class="pure-menu-item">
13
+ <a class="pure-menu-link" href="https://twitter.com/{{site.twitter}}">
14
+ <i class="fab fa-twitter"></i>
15
+ <span class="md-display">Twitter</span>
16
+ </a>
17
+ </li>
18
+ <li class="pure-menu-item">
19
+ <a class="pure-menu-link" href="https://github.com/{{site.github}}">
20
+ <i class="fab fa-github"></i>
21
+ <span class="md-display">GitHub</span>
22
+ </a>
23
+ </li>
24
+ <li class="pure-menu-item">
25
+ <a class="pure-menu-link" href="mailto:{{site.email}}">
26
+ <i class="fas fa-paper-plane"></i>
27
+ <span class="md-display">E-mail</span>
28
+ </a>
29
+ </li>
30
+ <li class="pure-menu-item">
31
+ <a class="pure-menu-link" href="https://github.com/{{site.repository}}">
32
+ <i class="fas fa-code"></i>
33
+ <span class="md-display">Source Code</span>
34
+ </a>
35
+ </li>
36
+ </ul>
37
+ </div>
38
+ </footer>
@@ -0,0 +1,30 @@
1
+ <head>
2
+ <meta charset="utf-8">
3
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
4
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
+ <meta name="generator" content="Jekyll">
6
+ <link rel="license" href="LICENSE">
7
+
8
+ <meta name="application-name" content="{{ site.title }}">
9
+ <meta name="theme-color" content="{{ site.theme_color }}">
10
+ <link rel="archives" href="{{ "/archive" | relative_url }}">
11
+
12
+ <meta name="robots" content="index,follow"> <!-- All Search Engines -->
13
+ <meta name="googlebot" content="index,follow"><!-- Google Specific -->
14
+
15
+ <!-- Performance hints for external fonts -->
16
+ <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
17
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
18
+
19
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pure/2.0.3/pure-min.css" integrity="sha512-FEioxlObRXIskNAQ1/L0byx0SEkfAY+5fO024p9kGEfUQnACGRfCG5Af4bp/7sPNSzKbMtvmcJOWZC7fPX1/FA==" crossorigin="anonymous">
20
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pure/2.0.3/grids-responsive-min.css" integrity="sha512-kAun73Sep6+UULykSwzQpmYKvyuU12oHjnHvm6khVmK8uFSiWp1gR9KHQbte5GNyTfJ88069HImsSP0gtgMfIg==" crossorigin="anonymous">
21
+ <link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
22
+ <link rel="stylesheet" href="{{ "/assets/code.css" | relative_url }}">
23
+ <script src="https://kit.fontawesome.com/e9dddf84a6.js" crossorigin="anonymous"></script>
24
+ {% if jekyll.environment == "production" and site.google_analytics %}
25
+ {%- include analytics.html -%}
26
+ {% endif %}
27
+ {%- seo -%}
28
+ {%- feed_meta -%}
29
+ <link rel="alternate" type="application/rss+xml" href="{{ "/feed.xml" | relative_url }}">
30
+ </head>
@@ -0,0 +1,13 @@
1
+ <p>
2
+ {%- if page.author -%}
3
+ {% for author in page.author %}
4
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person">
5
+ <span itemprop="name">By: {{ author }}</span></span>
6
+ {%- if forloop.last == false %}, {% endif -%}
7
+ {% endfor %}
8
+ {%- endif -%}
9
+ <br />
10
+ {%- for tag in page.tags -%}
11
+ <a href="{{ "/tags/#" | append: tag | relative_url }}">#{{ tag }}</a> &#8239;
12
+ {%- endfor -%}
13
+ </p>
@@ -0,0 +1,38 @@
1
+ <div class="menu" aria-label="Secondary">
2
+ <div class="about">
3
+ <a href="{{ "/about" | relative_url }}">
4
+ <i class="fas fa-signature"></i>
5
+ About
6
+ </a>
7
+ </div>
8
+ <div class="hashtags">
9
+ <a href="{{ "/tags" | relative_url }}">
10
+ <i class="fas fa-hashtag"></i>
11
+ Tags
12
+ </a>
13
+ </div>
14
+ <div class="categories">
15
+ <a href="{{ "/categories" | relative_url }}">
16
+ <i class="far fa-folder-open"></i>
17
+ Categories
18
+ </a>
19
+ </div>
20
+ <div class="archive">
21
+ <a href="{{ "/archive" | relative_url }}">
22
+ <i class="fas fa-archive"></i>
23
+ Archive
24
+ </a>
25
+ </div>
26
+ <div class="rss">
27
+ <a href="{{ "/feed.xml" | relative_url }}">
28
+ <i class="fas fa-rss"></i>
29
+ RSS
30
+ </a>
31
+ </div>
32
+ <div class="donate">
33
+ <a href="{{ site.donate_link }}">
34
+ <i class="fas fa-dollar-sign"></i>
35
+ Donate
36
+ </a>
37
+ </div>
38
+ </div>
@@ -0,0 +1,25 @@
1
+ <p>
2
+ {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
3
+ <time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
4
+ {{ page.date | date: date_format }}
5
+ </time>
6
+ {%- if page.modified_date -%}
7
+ ~
8
+ {%- assign mdate = page.modified_date | date_to_xmlschema -%}
9
+ <time datetime="{{ mdate }}" itemprop="dateModified">
10
+ {{ mdate | date: date_format }}
11
+ </time>
12
+ {%- endif -%}
13
+ &#8239;
14
+ {%- if page.author -%}
15
+ {% for author in page.author %}
16
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person">
17
+ <span itemprop="name">By: {{ author }}</span></span>
18
+ {%- if forloop.last == false %}, {% endif -%}
19
+ {% endfor %}
20
+ {%- endif -%}
21
+ &#8239;|&#8239;
22
+ {%- for tag in page.tags -%}
23
+ <a href="{{ "/tags/#" | append: tag | relative_url }}">#{{ tag }}</a> &#8239;
24
+ {%- endfor -%}
25
+ </p>
@@ -0,0 +1,44 @@
1
+ <div id="search" role="search">
2
+ <label>
3
+ <span class="search-icon">🔎</span>
4
+ <input autocomplete="off" id="search-input" oninput="changeResultContainerDisp(this.value)" placeholder="Search all articles..." type="text"/>
5
+ </label>
6
+
7
+ <ul id="results-container" style="display: none"></ul>
8
+ </div>
9
+ <script src="{{ "/assets/simple-jekyll-search.js" | relative_url }}"></script>
10
+ <script>
11
+ function changeResultContainerDisp(val) {
12
+ if (val) {
13
+ document
14
+ .getElementById("results-container")
15
+ .style
16
+ .display = "block";
17
+ document.getElementById("search-input").addEventListener("blur", function () {
18
+ document.addEventListener("click", function (event) {
19
+ var isClickInside = document.getElementById("results-container").contains(event.target);
20
+ if (! isClickInside) {
21
+ document
22
+ .getElementById("results-container")
23
+ .style
24
+ .display = "none";
25
+ }
26
+ })
27
+ })
28
+ } else {
29
+ document
30
+ .getElementById("results-container")
31
+ .style
32
+ .display = "none";
33
+ }
34
+ }
35
+ var sjs = SimpleJekyllSearch({
36
+ searchInput: document.getElementById("search-input"),
37
+ resultsContainer: document.getElementById("results-container"),
38
+ json: "{{ '/search.json' | relative_url }}",
39
+ searchResultTemplate: "<li class='search_res' style='list-style: none;'><a href='{url}' style='color:#555555;'><p><strong>></strong> {title}</p></a></li>",
40
+ noResultsText: "No results found. Try another search.",
41
+ fuzzy: false,
42
+ limit: 5
43
+ })
44
+ </script>
@@ -0,0 +1,27 @@
1
+ <aside class="sidebar pure-u-1 pure-u-md-1-4">
2
+ <div class="sidebar-info">
3
+ <a href="{{ "/" | relative_url }}">
4
+ <span hidden>{{site.title}}
5
+ Header Image</span>
6
+ <img class="brand-photo" src="{{ site.header_image | relative_url }}" alt="Photo of {{site.author}}"/>
7
+ </a>
8
+ <h1 class="brand-title">
9
+ <a href="{{ "/" | relative_url }}">{{site.title}}</a>
10
+ </h1>
11
+ <h2 class="brand-tagline">{{site.description}}</h2>
12
+
13
+ <nav class="nav" aria-label="Primary">
14
+ <ul class="nav-list">
15
+ <li class="nav-item">
16
+ <a class="pure-button" href="{{ "/" | relative_url }}">Home</a>
17
+ </li>
18
+ <li class="nav-item">
19
+ <a class="pure-button" href="{{ "/notes" | relative_url }}">Notes</a>
20
+ </li>
21
+ <li class="nav-item">
22
+ <a class="pure-button" href="{{ "/journals" | relative_url }}">Journal</a>
23
+ </li>
24
+ </ul>
25
+ </nav>
26
+ </div>
27
+ </aside>
@@ -0,0 +1,30 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ {%- include head.html -%}
5
+
6
+ <body>
7
+
8
+ <div id="layout" class="pure-g">
9
+
10
+ {%- include sidebar.html -%}
11
+
12
+ <div class="content pure-u-1 pure-u-md-3-4">
13
+ <div class="md-display">
14
+ <h1>
15
+ <a class="jekyll-header" href="{{ "/" | relative_url }}">Welcome to {{site.title}}</a>
16
+ </h1>
17
+ {%- include links.html -%}
18
+ {%- include search.html -%}
19
+ </div>
20
+ <main id="main-content" role="main">
21
+ {{ content }}
22
+ {%- include footer.html -%}
23
+
24
+ </main>
25
+ </div>
26
+ </div>
27
+
28
+ </body>
29
+
30
+ </html>
@@ -0,0 +1,92 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ {{ content }}
5
+
6
+ {% if paginator %}
7
+ {% assign posts = paginator.posts %}
8
+ {% else %}
9
+ {% assign posts = site.posts %}
10
+ {% endif %}
11
+
12
+ <div class="posts">
13
+ <h2 class="content-subhead">Recent Posts</h2>
14
+
15
+ {%- if posts.size > 0 -%}
16
+ {%- assign date_format = site.minima.date_format | default: "%B %-d, %Y" -%}
17
+
18
+ {%- for post in posts -%}
19
+ <section class="post">
20
+ <header class="feed-header">
21
+ <img width="48" height="48" alt="{{post.author}}'s Avatar'" class="post-avatar" src="{{ post.avatar | relative_url }}"/>
22
+ <h2 class="post-title">
23
+ <a href="{{ post.url | relative_url }}">
24
+ {{ post.title | escape }}
25
+ </a>
26
+ </h2>
27
+ <p class="post-meta">
28
+ Posted:
29
+ {{ post.date | date: date_format }}
30
+ |
31
+ <br class="sm-display"/>
32
+ By
33
+ <a class="post-author" href="#">{{ post.author }}</a>
34
+ under
35
+ <span>
36
+ {% for tag in post.tags %}
37
+ <a href="{{ "/tags/#" | append: tag | relative_url }}">#{{ tag }}</a>
38
+ {% endfor %}
39
+ </span>
40
+ </p>
41
+ </header>
42
+
43
+ <div class="post-description">
44
+ <p class="md-display">
45
+ <em>{{ post.content | strip_html | escape | truncate: 400}}</em>
46
+ </p>
47
+ <p class="sm-display">
48
+ <em>{{ post.content | strip_html | escape | truncate: 300}}</em>
49
+ </p>
50
+ </div>
51
+ </section>
52
+ {%- endfor -%}
53
+ </div>
54
+
55
+
56
+ <br/>
57
+
58
+ {% if paginator %}
59
+ <div class="pure-menu pure-menu-horizontal paginate">
60
+ <ul>
61
+
62
+ {%- if paginator.previous_page %}
63
+ <li class="pure-menu-item">
64
+ <a href="{{ paginator.previous_page_path | relative_url }}">
65
+ 🡐
66
+ Previous</a>
67
+ </li>
68
+ {%- else %}
69
+ <li class="pure-menu-item">#</li>
70
+ {%- endif %}
71
+
72
+ <li class="pure-menu-item" id="current-page">
73
+ Page
74
+ {{ paginator.page }}
75
+ of
76
+ {{ paginator.total_pages }}
77
+ </li>
78
+
79
+ {%- if paginator.next_page %}
80
+ <li class="pure-menu-item">
81
+ <a href="{{ paginator.next_page_path | relative_url }}" class="next-page">Next
82
+ 🡒
83
+ </a>
84
+ </li>
85
+ {%- else %}
86
+ <li class="pure-menu-item">#</li>
87
+ {%- endif %}
88
+
89
+ </ul>
90
+ </div>
91
+ {%- endif %}
92
+ {%- endif -%}
@@ -0,0 +1,23 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <article class="post-entry" itemscope itemtype="http://schema.org/BlogPosting">
6
+
7
+ <header class="post-header">
8
+ <h2 class="post-title" itemprop="name headline">{{ page.title | escape }}</h2>
9
+ {%- include journal-data.html -%}
10
+ </header>
11
+
12
+ <div articlebody" class="post-body itemprop=">
13
+ {{ content }}
14
+ </div>
15
+
16
+ {%- include author.html -%}
17
+
18
+ {%- if site.disqus.shortname -%}
19
+ {%- include disqus_comments.html -%}
20
+ {%- endif -%}
21
+
22
+ <a class="u-url" href="{{ page.url | relative_url }}" hidden></a>
23
+ </article>
@@ -0,0 +1,38 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ {{ content }}
5
+
6
+ {% assign journals = site.journals %}
7
+
8
+ <div class="journals">
9
+ <h2 class="content-subhead">Recent Journals</h2>
10
+
11
+ {%- if journals.size > 0 -%}
12
+ {%- assign date_format = site.minima.date_format | default: "%B %-d, %Y" -%}
13
+
14
+ {%- for journal in journals -%}
15
+ <section class="journal">
16
+ <header class="journal-header">
17
+ <small>
18
+ <h2 class="post-title">
19
+ <a href="{{ journal.url | relative_url }}">
20
+ {{ journal.title | escape }}
21
+ </a>
22
+ </h2>
23
+ </small>
24
+ </header>
25
+
26
+ <div class="journal-description">
27
+ <p>
28
+ <em>{{ journal.content | escape | truncate: 300}}</em>
29
+ </p>
30
+ </div>
31
+ </section>
32
+ {%- endfor -%}
33
+ </div>
34
+
35
+
36
+ <br/>
37
+
38
+ {%- endif -%}
@@ -0,0 +1,45 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ {{ content }}
5
+
6
+ {% assign notes = site.notes %}
7
+
8
+ <div class="notes">
9
+ <h2 class="content-subhead">Recent Notes</h2>
10
+
11
+ {%- if notes.size > 0 -%}
12
+ {%- assign date_format = site.minima.date_format | default: "%B %-d, %Y" -%}
13
+
14
+ {%- for note in notes -%}
15
+ <section class="post">
16
+ <header class="note-header">
17
+ <h2 class="post-title">
18
+ <a href="{{ note.url | relative_url }}">
19
+ {{ note.title | escape }}
20
+ </a>
21
+ </h2>
22
+
23
+ <p class="post-meta">
24
+ Tagged:
25
+ <span>
26
+ {% for tag in note.tags %}
27
+ <a href="{{ "/tags/#" | append: tag | relative_url }}">#{{ tag }}</a>
28
+ {% endfor %}
29
+ </span>
30
+ </p>
31
+ </header>
32
+
33
+ <div class="post-description">
34
+ <p>
35
+ <em>{{ note.content | strip_html | escape | truncate: 300}}</em>
36
+ </p>
37
+ </div>
38
+ </section>
39
+ {%- endfor -%}
40
+ </div>
41
+
42
+
43
+ <br/>
44
+
45
+ {%- endif -%}
@@ -0,0 +1,15 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <article class="page post-entry">
6
+
7
+ <header>
8
+ <h1>{{ page.title | escape }}</h1>
9
+ </header>
10
+
11
+ <div class="page-content">
12
+ {{ content }}
13
+ </div>
14
+
15
+ </article>
@@ -0,0 +1,23 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <article class="post-entry" itemscope itemtype="http://schema.org/BlogPosting">
6
+
7
+ <header class="post-header">
8
+ <h2 class="post-title" itemprop="name headline">{{ page.title | escape }}</h2>
9
+ {%- include post-data.html -%}
10
+ </header>
11
+
12
+ <div articlebody" class="post-body itemprop=">
13
+ {{ content }}
14
+ </div>
15
+
16
+ {%- include author.html -%}
17
+
18
+ {%- if site.disqus.shortname -%}
19
+ {%- include disqus_comments.html -%}
20
+ {%- endif -%}
21
+
22
+ <a class="u-url" href="{{ page.url | relative_url }}" hidden></a>
23
+ </article>