jekyll-theme-endless 0.3.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a765efd0983e1ceede6edf8cb5e9585d1a7443ab9caa5bf1ed9d21d8a83d991
4
- data.tar.gz: 7a0845b138a722faca39492e729990081a622cb694b7434ce6bb15ff1cbe2d98
3
+ metadata.gz: 69ca0a202fdb3f05970cb2e99a6718220173c3383ab3649c3d4733d8d647ad8b
4
+ data.tar.gz: aa05cd183d0ae7ef3767b3ada0e101b48b515ccad38b50502ac5af04215c5275
5
5
  SHA512:
6
- metadata.gz: 218292073372247f62a3a5233e7833a4f1c01daef7ae856547d1b3b163b3104288e851d636e8170eeedd7c1c0bb68fa7b7cca1ea4c0646efe324fe43e1fa574b
7
- data.tar.gz: 4547082a60f0a47c89539ddad558b303efda39350942f2e604b428a54a39cdc455daa1780cd34709607444c57ab8ab8d40f55e32e0408d6926b78c0b2078d832
6
+ metadata.gz: e4a4dc344fcfe38993cc1ba0f88bc9c4eac5883bbeadfeafa5c5fea182c426ce059f24a774b6ac5b8fc9e90eed7bb0dbc71a37d74a1f5a68f93bf750b0be457a
7
+ data.tar.gz: 7137b1499ecf59cb76ad21ef4956838dbfa10ca45c2d64d278ee1976a92a62e982753fafb895f3a2905d7c3f12df34817f68f0813c661dfad48446af16df8d1d
@@ -3,6 +3,11 @@
3
3
  :page-menu_position: 300
4
4
 
5
5
 
6
+ == Quicktstart for testing
7
+
8
+ * Clone the repository
9
+ * Run `bundle exec jekyll serve --config _config.yml,_data.yml`
10
+ * Open http://127.0.0.1:4000/ to view a page using this theme
6
11
 
7
12
  == Installation
8
13
 
@@ -195,6 +200,24 @@ username_xing: XXXX
195
200
  username_linkedin: XXXX
196
201
  ----
197
202
 
203
+ `_includes/function_tag-list.html`::
204
+ Generates a formatted list of tags.
205
+ This is e.g. used to display the tags of a blog post.
206
+
207
+ `_includes/function_show-dates.html`::
208
+ Show the creation date and (if present) the date a blog post was last edited.
209
+ The date of the last edit can be configured by setting a value for the page-variable `lastedit`.
210
+
211
+ In AsciiDoc this would be e.g.:
212
+
213
+ [source, AsciiDoc]
214
+ ----
215
+ :page-lastedit: 2020-10-29
216
+ ----
217
+
218
+ `_includes/function_show-prev-next-navigation.html`::
219
+ Displays links to the previous and the next post of your blog.
220
+
198
221
 
199
222
 
200
223
  === Plugins
@@ -0,0 +1,16 @@
1
+ <div class="text-right">
2
+
3
+ <time class="created" datetime="{{ include.created | date_to_xmlschema }}">
4
+ <span class="sr-only sr-only-focusable">created:</span>
5
+ <strong title="date of creation">{{ include.created | date: "%b %-d, %Y" }}</strong>
6
+ </time>
7
+
8
+ {% if include.edited != "" and include.edited %}
9
+ /
10
+ <time class="edited" datetime="{{ include.edited | date_to_xmlschema }}">
11
+ <span class="sr-only sr-only-focusable">edited:</span>
12
+ <strong title="date of last edit">{{ include.edited | date: "%b %-d, %Y" }}</strong>
13
+ </time>
14
+ {% endif %}
15
+
16
+ </div>
@@ -0,0 +1,13 @@
1
+ <div class="row text-left">
2
+ <div class="col">
3
+ {% if page.next %}
4
+ <a href="{{ page.next.url }}">&laquo; {{page.next.title}}</a>
5
+ {% endif %}
6
+ </div>
7
+ <div class="col text-right">
8
+ {% if page.previous %}
9
+ <a href="{{ page.previous.url }}">{{page.previous.title}} &raquo;</a>
10
+ {% endif %}
11
+ </div>
12
+ </div>
13
+
@@ -1,7 +1,24 @@
1
1
  {% comment %}
2
+ Creates a tag cloud with tags beeing sized according to the number of occurences in blog posts.
3
+ {% endcomment %}
2
4
 
5
+ {% comment %}
6
+ Create an empty array.
7
+ {% endcomment %}
8
+ {% assign tags = "" | split:"" %}
9
+
10
+ {% comment %}
11
+ Fill the tags-array with tag-names.
12
+ The push-filter is a Jekyll specific filter.
13
+ {% endcomment %}
14
+ {% for tag in site.tags %}
15
+ {% assign tags = tags | push: tag.first %}
16
+ {% endfor %}
17
+
18
+ {% comment %}
19
+ Sort the tag-array case-insensitive.
3
20
  {% endcomment %}
4
- {% assign tags = site.tags | sort %}
21
+ {% assign tags_sorted = tags | sort_natural %}
5
22
 
6
23
  {% comment %}
7
24
  Requirements:
@@ -16,8 +33,8 @@ Assumption: Non of the tags occurs more than one million times.
16
33
  {% assign min = 1000000 %}
17
34
  {% assign max = 0 %}
18
35
 
19
- {% for tag in tags %}
20
- {% assign postsWithThisTag = tag | last | size %}
36
+ {% for tag in tags_sorted %}
37
+ {% assign postsWithThisTag = site.tags[tag] | size %}
21
38
  {% if postsWithThisTag > max %}
22
39
  {% assign max = postsWithThisTag %}
23
40
  {% endif %}
@@ -31,7 +48,7 @@ Assumption: Non of the tags occurs more than one million times.
31
48
 
32
49
  <ul class="tag-cloud list-unstyled">
33
50
 
34
- {% for tag in tags %}
51
+ {% for tag in tags_sorted %}
35
52
  <li>
36
53
  {% comment %}
37
54
  The size difference should be 150%.
@@ -46,12 +63,12 @@ Assumption: Non of the tags occurs more than one million times.
46
63
  To be on the safe side, create a float (times: 1.0)
47
64
  {% endcomment %}
48
65
 
49
- {% assign number = tag | last | size %}
66
+ {% assign number = site.tags[tag] | size %}
50
67
  {% assign percent = number | times: 1.0 | minus: min | times: sizeDifference | divided_by: steps | plus: 100 %}
51
- {% assign tagname = tag | first | replace:'-', ' ' %}
68
+ {% assign tagname = tag | replace:'-', ' ' %}
52
69
 
53
70
  <a
54
- href = "/{{ site.tag_dir | default: 'tags' }}/{{ tag | first }}"
71
+ href = "/{{ site.tag_dir | default: 'tags' }}/{{ tag }}"
55
72
  style = "font-size: {{ percent }}%"
56
73
  title = "Number of posts with the tag '{{ tagname }}': {{ number }}"
57
74
  >{{ tagname }}</a>
@@ -0,0 +1,15 @@
1
+ {% comment %}
2
+ Generates an unsorted list of tags.
3
+ Requires an array of tags beeing provided via the parameter `tags`.
4
+ {% endcomment %}
5
+ {% assign asize = include.tags | size %}
6
+ {% if asize > 0 %}
7
+ <ul class="list-inline">
8
+ {% for current_tag in include.tags %}
9
+ <li class="list-inline-item"><a
10
+ class="badge badge-pill badge-secondary"
11
+ href="/{{ site.tag_dir | default: 'tags' }}/{{ current_tag }}"
12
+ >{{ current_tag }}</a></li>
13
+ {% endfor %}
14
+ </ul>
15
+ {% endif %}
@@ -51,15 +51,15 @@ layout: html
51
51
 
52
52
 
53
53
  <!-- Page content -->
54
- <main class="container pt-4 pb-5" style="flex-grow: 1;" aria-label="Content">
54
+ <main class="container pt-4" style="flex-grow: 1;" aria-label="Content">
55
55
 
56
56
  <div class="row">
57
57
 
58
- <div class="col-lg-8">
58
+ <div class="col-lg-8 pb-5">
59
59
  {{ content }}
60
60
  </div>
61
61
 
62
- <div class="col-lg-4">
62
+ <div class="col-lg-4 pb-5">
63
63
  <aside>
64
64
  <h3>Blog Navigation</h3>
65
65
 
@@ -8,7 +8,7 @@
8
8
  <meta charset="utf-8">
9
9
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
10
10
  <title>
11
- {{ page.title }}
11
+ {{ page.title | default: page.menu_label | strip_html }}
12
12
  </title>
13
13
 
14
14
  <!-- Font-awesome CSS: https://www.bootstrapcdn.com/fontawesome/ -->
@@ -1,12 +1,42 @@
1
1
  ---
2
2
  layout: default
3
3
  ---
4
- {% comment %}
5
- In Markdown posts, page.title defaults to parts of the filename.
6
- Thus, do not use `# Heading` in Blog posts, otherwise two H1-heading will appear.
7
- {% endcomment %}
8
- {% if page.title %}
9
- <h1>{{ page.title }}</h1>
10
- {% endif %}
11
-
12
- {{ content }}
4
+ <article>
5
+ <header>
6
+
7
+ {% comment %}Show link to previous/next post.{% endcomment %}
8
+ {% include function_show-prev-next-navigation.html %}
9
+
10
+ {% comment %}Show dates of the post.{% endcomment %}
11
+ {% include function_show-dates.html
12
+ created = page.date
13
+ edited = page.lastedit
14
+ %}
15
+
16
+ {% comment %}
17
+ In Markdown posts, page.title defaults to parts of the filename.
18
+ Thus, do not use `# Heading` in Blog posts, otherwise two H1-heading will appear.
19
+ {% endcomment %}
20
+ {% if page.title %}
21
+ <h1>{{ page.title }}</h1>
22
+ {% endif %}
23
+
24
+ {% comment %}Show tags of the post.{% endcomment %}
25
+ {% include function_tag-list.html
26
+ tags=page.tags
27
+ %}
28
+
29
+ </header>
30
+
31
+ <div>
32
+ {{ content }}
33
+ </div>
34
+
35
+ {% comment %}Show link to previous/next post.{% endcomment %}
36
+ {% include function_show-prev-next-navigation.html %}
37
+
38
+ </article>
39
+
40
+
41
+
42
+
@@ -0,0 +1,16 @@
1
+ time {
2
+ color: #999;
3
+
4
+ &:before {
5
+ font-family: FontAwesome;
6
+ top:0;
7
+ padding-right:-1px;
8
+
9
+ &.created {
10
+ content: "\f017";
11
+ }
12
+ &.edited {
13
+ content: "\f044";
14
+ }
15
+ }
16
+ }
@@ -10,6 +10,7 @@
10
10
  @import "background";
11
11
  @import "address";
12
12
  @import "tag-cloud";
13
+ @import "posts";
13
14
 
14
15
  /*
15
16
  * import SCSS-Code contributed by the user of the theme.
@@ -0,0 +1,8 @@
1
+ module Jekyll
2
+ module Endless
3
+
4
+ end
5
+ end
6
+
7
+ require_relative 'jekyll-theme-endless/generate-tagpages'
8
+
@@ -0,0 +1,80 @@
1
+ # Generator
2
+
3
+ # Generates a page for each tag listed in `site.tags`.
4
+ # The files created are by default named `tags/<tagname>/index.html`.
5
+ # The content is generated using the layout file `_layouts/page-tag.html`
6
+
7
+ # The following values can be set in `_config.yml`
8
+ # `tag_dir`
9
+ # * the name of the directory in which the files for each tag are created;
10
+ # * default: `tags`
11
+ # `tag_title_prefix`
12
+ # * Prefix to be used for the title of the page
13
+ # * default: `Tag: `
14
+
15
+ # Necessary files:
16
+ # `_layouts/page-tag.html` - used to generate content of tag files.
17
+
18
+ # The following values are made available in the layout:
19
+ # * `page.tag` - contains the tag
20
+ # * `page.title` - contains the generated title, e.g. "Tag: <tagname>"
21
+
22
+ # NOTE: after changes to the plugin, `jekyll serve` must be started again.
23
+
24
+ # See also: https://jekyllrb.com/docs/plugins/
25
+ # See also: https://jekyllrb.com/docs/plugins/generators/
26
+
27
+ module Jekyll
28
+
29
+ module Endless
30
+
31
+ # TagPageGenerator is a subclass of Generator
32
+ class TagPageGenerator < Generator
33
+ safe true
34
+ # A Generator needs to implement the generate method
35
+ def generate(site)
36
+ # If a layout with the name `page-tag` exists
37
+ if site.layouts.key? 'page-tag'
38
+ # The directory in which the files are to be created is configured in `site.tag_dir`.
39
+ # If not, the directory `tags/` is used.
40
+ dir = site.config['tag_dir'] || 'tags'
41
+
42
+ # For each tag in the tag-list:
43
+ site.tags.each_key do |tag|
44
+ # Create a page-object using TagPage and add it to the `site.pages` array
45
+ site.pages << TagPage.new(site, site.source, File.join(dir, tag), tag)
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+
52
+ # TagPage is a subclass of Page
53
+ # It is used in the `TagPageGenerator`
54
+ class TagPage < Page
55
+ def initialize(site, base, dir, tag)
56
+ # Define instance variables ('@') to make values available in the super-class `Page`.
57
+ # The variables are available in the layout as e.g. `page.name`.
58
+ @site = site
59
+ @base = base
60
+ @dir = dir
61
+ @name = 'index.html'
62
+
63
+ self.process(@name)
64
+ self.read_yaml(File.join(base, '_layouts'), 'page-tag.html')
65
+
66
+ # The prefix for the generated title is set via `tag_title_prefix` in `_config.yml` and defaults to `Tag: `
67
+ tag_title_prefix = site.config['tag_title_prefix'] || 'Tag: '
68
+ # Generates the title for the tag page and makes it available in the layout file as `page.title`
69
+ self.data['title'] = "#{tag_title_prefix}#{tag}"
70
+ # Makes `page.tag` available in the layout file
71
+ self.data['tag'] = tag
72
+
73
+ end
74
+ end
75
+
76
+ end
77
+
78
+ end
79
+
80
+
@@ -0,0 +1,5 @@
1
+ module Jekyll
2
+ module Endless
3
+ VERSION = '0.4.0'
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-endless
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Boekhoff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-20 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -37,19 +37,25 @@ files:
37
37
  - _includes/content_footer-usernames.html
38
38
  - _includes/function_list-pages.html
39
39
  - _includes/function_list-posts.html
40
+ - _includes/function_show-dates.html
41
+ - _includes/function_show-prev-next-navigation.html
40
42
  - _includes/function_tag-cloud.html
43
+ - _includes/function_tag-list.html
41
44
  - _layouts/default.html
42
45
  - _layouts/html.html
43
46
  - _layouts/page-postlist.html
44
47
  - _layouts/page-tag.html
45
48
  - _layouts/page.html
46
49
  - _layouts/post.html
47
- - _plugins/generate-tagpages.rb
48
50
  - _sass/address.scss
49
51
  - _sass/background.scss
52
+ - _sass/posts.scss
50
53
  - _sass/tag-cloud.scss
51
54
  - _sass/user.scss
52
55
  - assets/css/main.scss
56
+ - lib/jekyll-theme-endless.rb
57
+ - lib/jekyll-theme-endless/generate-tagpages.rb
58
+ - lib/jekyll-theme-endless/version.rb
53
59
  homepage: https://gitlab.com/jekyll-theme-endless/jekyll-theme-endless.gitlab.io
54
60
  licenses:
55
61
  - MIT
@@ -1,76 +0,0 @@
1
- # Generator
2
-
3
- # Generates a page for each tag listed in `site.tags`.
4
- # The files created are by default named `tags/<tagname>/index.html`.
5
- # The content is generated using the layout file `_layouts/page-tag.html`
6
-
7
- # The following values can be set in `_config.yml`
8
- # `tag_dir`
9
- # * the name of the directory in which the files for each tag are created;
10
- # * default: `tags`
11
- # `tag_title_prefix`
12
- # * Prefix to be used for the title of the page
13
- # * default: `Tag: `
14
-
15
- # Necessary files:
16
- # `_layouts/page-tag.html` - used to generate content of tag files.
17
-
18
- # The following values are made available in the layout:
19
- # * `page.tag` - contains the tag
20
- # * `page.title` - contains the generated title, e.g. "Tag: <tagname>"
21
-
22
- # NOTE: after changes to the plugin, `jekyll serve` must be started again.
23
-
24
- # See also: https://jekyllrb.com/docs/plugins/
25
- # See also: https://jekyllrb.com/docs/plugins/generators/
26
-
27
- module Jekyll
28
-
29
- # TagPageGenerator is a subclass of Generator
30
- class TagPageGenerator < Generator
31
- safe true
32
- # A Generator needs to implement the generate method
33
- def generate(site)
34
- # If a layout with the name `page-tag` exists
35
- if site.layouts.key? 'page-tag'
36
- # The directory in which the files are to be created is configured in `site.tag_dir`.
37
- # If not, the directory `tags/` is used.
38
- dir = site.config['tag_dir'] || 'tags'
39
-
40
- # For each tag in the tag-list:
41
- site.tags.each_key do |tag|
42
- # Create a page-object using TagPage and add it to the `site.pages` array
43
- site.pages << TagPage.new(site, site.source, File.join(dir, tag), tag)
44
- end
45
-
46
- end
47
- end
48
- end
49
-
50
- # TagPage is a subclass of Page
51
- # It is used in the `TagPageGenerator`
52
- class TagPage < Page
53
- def initialize(site, base, dir, tag)
54
- # Define instance variables ('@') to make values available in the super-class `Page`.
55
- # The variables are available in the layout as e.g. `page.name`.
56
- @site = site
57
- @base = base
58
- @dir = dir
59
- @name = 'index.html'
60
-
61
- self.process(@name)
62
- self.read_yaml(File.join(base, '_layouts'), 'page-tag.html')
63
-
64
- # The prefix for the generated title is set via `tag_title_prefix` in `_config.yml` and defaults to `Tag: `
65
- tag_title_prefix = site.config['tag_title_prefix'] || 'Tag: '
66
- # Generates the title for the tag page and makes it available in the layout file as `page.title`
67
- self.data['title'] = "#{tag_title_prefix}#{tag}"
68
- # Makes `page.tag` available in the layout file
69
- self.data['tag'] = tag
70
-
71
- end
72
- end
73
-
74
- end
75
-
76
-