jekyll-lenciel-theme 1.0.13 → 1.0.28
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 +4 -4
- data/README.md +4 -1
- data/assets/javascripts/Valine.min.js +11 -6
- data/assets/javascripts/app.js +0 -1
- data/assets/javascripts/umami.js +1 -0
- data/assets/stylesheets/screen.css +1 -1
- data/index.html +5 -5
- data/plugins/blockquote.rb +82 -0
- data/plugins/category_feed.xml +26 -0
- data/plugins/category_generator.rb +177 -0
- data/plugins/category_index.html +17 -0
- data/plugins/img-tag-transform.rb +5 -0
- data/plugins/margin_note.rb +17 -0
- data/plugins/raw.rb +15 -0
- data/plugins/sidenote.rb +17 -0
- data/plugins/titlecase.rb +36 -0
- data/plugins/video_tag.rb +56 -0
- metadata +47 -44
- data/_includes/after_footer.html +0 -3
- data/_includes/archive_post.html +0 -8
- data/_includes/article.html +0 -38
- data/_includes/asides/recent_posts.html +0 -10
- data/_includes/custom/after_footer.html +0 -21
- data/_includes/custom/asides/about.html +0 -4
- data/_includes/custom/baidu_analytics.html +0 -0
- data/_includes/custom/footer.html +0 -11
- data/_includes/custom/head.html +0 -23
- data/_includes/custom/header.html +0 -6
- data/_includes/custom/navigation.html +0 -5
- data/_includes/custom/post/sharing.html +0 -35
- data/_includes/disqus.html +0 -21
- data/_includes/facebook_like.html +0 -10
- data/_includes/footer.html +0 -1
- data/_includes/google_analytics.html +0 -12
- data/_includes/google_plus_one.html +0 -9
- data/_includes/head.html +0 -30
- data/_includes/header.html +0 -1
- data/_includes/navigation.html +0 -15
- data/_includes/post/author.html +0 -8
- data/_includes/post/categories.html +0 -10
- data/_includes/post/date.html +0 -5
- data/_includes/post/disqus_thread.html +0 -1
- data/_includes/post/sharing.html +0 -23
- data/_layouts/default.html +0 -14
- data/_layouts/home.html +0 -22
- data/_layouts/page.html +0 -39
- data/_layouts/post.html +0 -34
- data/assets/javascripts/libs/lazyload.min.js +0 -1
@@ -0,0 +1,82 @@
|
|
1
|
+
#
|
2
|
+
# Author: Brandon Mathis
|
3
|
+
# A full rewrite based on the work of: Josediaz Gonzalez - https://github.com/josegonzalez/josediazgonzalez.com/blob/master/_plugins/blockquote.rb
|
4
|
+
#
|
5
|
+
# Outputs a string with a given attribution as a quote
|
6
|
+
#
|
7
|
+
# {% blockquote Bobby Willis http://google.com/search?q=pants the search for bobby's pants %}
|
8
|
+
# Wheeee!
|
9
|
+
# {% endblockquote %}
|
10
|
+
# ...
|
11
|
+
# <blockquote>
|
12
|
+
# <p>Wheeee!</p>
|
13
|
+
# <footer>
|
14
|
+
# <strong>Bobby Willis</strong><cite><a href="http://google.com/search?q=pants">The Search For Bobby's Pants</a>
|
15
|
+
# </blockquote>
|
16
|
+
#
|
17
|
+
require './plugins/titlecase.rb'
|
18
|
+
|
19
|
+
module Jekyll
|
20
|
+
|
21
|
+
class Blockquote < Liquid::Block
|
22
|
+
FullCiteWithTitle = /(\S.*)\s+(https?:\/\/)(\S+)\s+(.+)/i
|
23
|
+
FullCite = /(\S.*)\s+(https?:\/\/)(\S+)/i
|
24
|
+
AuthorTitle = /([^,]+),([^,]+)/
|
25
|
+
Author = /(.+)/
|
26
|
+
|
27
|
+
def initialize(tag_name, markup, tokens)
|
28
|
+
@by = nil
|
29
|
+
@source = nil
|
30
|
+
@title = nil
|
31
|
+
if markup =~ FullCiteWithTitle
|
32
|
+
@by = $1
|
33
|
+
@source = $2 + $3
|
34
|
+
@title = $4.titlecase.strip
|
35
|
+
elsif markup =~ FullCite
|
36
|
+
@by = $1
|
37
|
+
@source = $2 + $3
|
38
|
+
elsif markup =~ AuthorTitle
|
39
|
+
@by = $1
|
40
|
+
@title = $2.titlecase.strip
|
41
|
+
elsif markup =~ Author
|
42
|
+
@by = $1
|
43
|
+
end
|
44
|
+
super
|
45
|
+
end
|
46
|
+
|
47
|
+
def render(context)
|
48
|
+
quote = paragraphize(super)
|
49
|
+
author = "<strong>#{@by.strip}</strong>" if @by
|
50
|
+
if @source
|
51
|
+
url = @source.match(/https?:\/\/(.+)/)[1].split('/')
|
52
|
+
parts = []
|
53
|
+
url.each do |part|
|
54
|
+
if (parts + [part]).join('/').length < 32
|
55
|
+
parts << part
|
56
|
+
end
|
57
|
+
end
|
58
|
+
source = parts.join('/')
|
59
|
+
source << '/…' unless source == @source
|
60
|
+
end
|
61
|
+
if !@source.nil?
|
62
|
+
cite = " <cite><a href='#{@source}'>#{(@title || source)}</a></cite>"
|
63
|
+
elsif !@title.nil?
|
64
|
+
cite = " <cite>#{@title}</cite>"
|
65
|
+
end
|
66
|
+
blockquote = if @by.nil?
|
67
|
+
quote
|
68
|
+
elsif cite
|
69
|
+
"#{quote}<footer>#{author + cite}</footer>"
|
70
|
+
else
|
71
|
+
"#{quote}<footer>#{author}</footer>"
|
72
|
+
end
|
73
|
+
"<blockquote>#{blockquote}</blockquote>"
|
74
|
+
end
|
75
|
+
|
76
|
+
def paragraphize(input)
|
77
|
+
"<p>#{input.lstrip.rstrip.gsub(/\n\n/, '</p><p>').gsub(/\n/, '<br/>')}</p>"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
Liquid::Template.register_tag('blockquote', Jekyll::Blockquote)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
---
|
2
|
+
layout: null
|
3
|
+
---
|
4
|
+
<?xml version="1.0" encoding="utf-8"?>
|
5
|
+
<feed xmlns="http://www.w3.org/2005/Atom">
|
6
|
+
|
7
|
+
<title><![CDATA[{% if site.titlecase %}{{ page.title | titlecase | cdata_escape }}{% else %}{{ page.title | cdata_escape }}{% endif %} | {{ site.title | cdata_escape }}]]></title>
|
8
|
+
<link href="{{ site.url }}/{{ page.feed_url }}" rel="self"/>
|
9
|
+
<link href="{{ site.url }}/"/>
|
10
|
+
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
11
|
+
<id>{{ site.url }}/</id>
|
12
|
+
<author>
|
13
|
+
<name><![CDATA[{{ site.author | strip_html }}]]></name>
|
14
|
+
{% if site.email %}<email><![CDATA[{{ site.email }}]]></email>{% endif %}
|
15
|
+
</author>
|
16
|
+
|
17
|
+
{% for post in site.categories[page.category] limit: 5 %}
|
18
|
+
<entry>
|
19
|
+
<title type="html"><![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]></title>
|
20
|
+
<link href="{{ site.url }}{{ post.url }}"/>
|
21
|
+
<updated>{{ post.date | date_to_xmlschema }}</updated>
|
22
|
+
<id>{{ site.url }}{{ post.id }}</id>
|
23
|
+
<content type="html"><![CDATA[{{ post.content | expand_urls: site.url | markdownify | cdata_escape }}]]></content>
|
24
|
+
</entry>
|
25
|
+
{% endfor %}
|
26
|
+
</feed>
|
@@ -0,0 +1,177 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# Jekyll category page generator.
|
4
|
+
# http://recursive-design.com/projects/jekyll-plugins/
|
5
|
+
#
|
6
|
+
# Version: 0.1.4 (201101061053)
|
7
|
+
#
|
8
|
+
# Copyright (c) 2010 Dave Perrett, http://recursive-design.com/
|
9
|
+
# Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
|
10
|
+
#
|
11
|
+
# A generator that creates category pages for jekyll sites.
|
12
|
+
#
|
13
|
+
# Included filters :
|
14
|
+
# - category_links: Outputs the list of categories as comma-separated <a> links.
|
15
|
+
# - date_to_html_string: Outputs the post.date as formatted html, with hooks for CSS styling.
|
16
|
+
#
|
17
|
+
# Available _config.yml settings :
|
18
|
+
# - category_dir: The subfolder to build category pages in (default is 'categories').
|
19
|
+
# - category_title_prefix: The string used before the category name in the page title (default is
|
20
|
+
# 'Category: ').
|
21
|
+
|
22
|
+
require 'stringex'
|
23
|
+
I18n.config.available_locales = :en
|
24
|
+
module Jekyll
|
25
|
+
|
26
|
+
# The CategoryIndex class creates a single category page for the specified category.
|
27
|
+
class CategoryIndex < Page
|
28
|
+
|
29
|
+
# Initializes a new CategoryIndex.
|
30
|
+
#
|
31
|
+
# +base+ is the String path to the <source>.
|
32
|
+
# +category_dir+ is the String path between <source> and the category folder.
|
33
|
+
# +category+ is the category currently being processed.
|
34
|
+
def initialize(site, base, category_dir, category)
|
35
|
+
@site = site
|
36
|
+
@base = base
|
37
|
+
@dir = category_dir
|
38
|
+
@name = 'index.html'
|
39
|
+
self.process(@name)
|
40
|
+
# Read the YAML data from the layout page.
|
41
|
+
self.read_yaml(File.join(base, 'plugins'), 'category_index.html')
|
42
|
+
self.data['category'] = category
|
43
|
+
# Set the title for this page.
|
44
|
+
title_prefix = site.config['category_title_prefix'] || 'Category: '
|
45
|
+
self.data['title'] = "#{title_prefix}#{category}"
|
46
|
+
# Set the meta-description for this page.
|
47
|
+
meta_description_prefix = site.config['category_meta_description_prefix'] || 'Category: '
|
48
|
+
self.data['description'] = "#{meta_description_prefix}#{category}"
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
# The CategoryFeed class creates an Atom feed for the specified category.
|
54
|
+
class CategoryFeed < Page
|
55
|
+
|
56
|
+
# Initializes a new CategoryFeed.
|
57
|
+
#
|
58
|
+
# +base+ is the String path to the <source>.
|
59
|
+
# +category_dir+ is the String path between <source> and the category folder.
|
60
|
+
# +category+ is the category currently being processed.
|
61
|
+
def initialize(site, base, category_dir, category)
|
62
|
+
@site = site
|
63
|
+
@base = base
|
64
|
+
@dir = category_dir
|
65
|
+
@name = 'atom.xml'
|
66
|
+
self.process(@name)
|
67
|
+
# Read the YAML data from the layout page.
|
68
|
+
self.read_yaml(File.join(base, 'plugins'), 'category_feed.xml')
|
69
|
+
self.data['category'] = category
|
70
|
+
# Set the title for this page.
|
71
|
+
title_prefix = site.config['category_title_prefix'] || 'Category: '
|
72
|
+
self.data['title'] = "#{title_prefix}#{category}"
|
73
|
+
# Set the meta-description for this page.
|
74
|
+
meta_description_prefix = site.config['category_meta_description_prefix'] || 'Category: '
|
75
|
+
self.data['description'] = "#{meta_description_prefix}#{category}"
|
76
|
+
|
77
|
+
# Set the correct feed URL.
|
78
|
+
self.data['feed_url'] = "#{category_dir}/#{name}"
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
# The Site class is a built-in Jekyll class with access to global site config information.
|
84
|
+
class Site
|
85
|
+
|
86
|
+
# Creates an instance of CategoryIndex for each category page, renders it, and
|
87
|
+
# writes the output to a file.
|
88
|
+
#
|
89
|
+
# +category_dir+ is the String path to the category folder.
|
90
|
+
# +category+ is the category currently being processed.
|
91
|
+
def write_category_index(category_dir, category)
|
92
|
+
index = CategoryIndex.new(self, self.source, category_dir, category)
|
93
|
+
index.render(self.layouts, site_payload)
|
94
|
+
index.write(self.dest)
|
95
|
+
# Record the fact that this page has been added, otherwise Site::cleanup will remove it.
|
96
|
+
self.pages << index
|
97
|
+
|
98
|
+
# Create an Atom-feed for each index.
|
99
|
+
feed = CategoryFeed.new(self, self.source, category_dir, category)
|
100
|
+
feed.render(self.layouts, site_payload)
|
101
|
+
feed.write(self.dest)
|
102
|
+
# Record the fact that this page has been added, otherwise Site::cleanup will remove it.
|
103
|
+
self.pages << feed
|
104
|
+
end
|
105
|
+
|
106
|
+
# Loops through the list of category pages and processes each one.
|
107
|
+
def write_category_indexes
|
108
|
+
dir = self.config['category_dir'] || 'categories'
|
109
|
+
self.categories.keys.each do |category|
|
110
|
+
self.write_category_index(File.join(dir, category.to_url), category)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
# Jekyll hook - the generate method is called by jekyll, and generates all of the category pages.
|
116
|
+
class GenerateCategories < Generator
|
117
|
+
safe true
|
118
|
+
priority :low
|
119
|
+
|
120
|
+
def generate(site)
|
121
|
+
site.write_category_indexes
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
|
127
|
+
# Adds some extra filters used during the category creation process.
|
128
|
+
module CategoryFilter
|
129
|
+
|
130
|
+
# Outputs a list of categories as comma-separated <a> links. This is used
|
131
|
+
# to output the category list for each post on a category page.
|
132
|
+
#
|
133
|
+
# +categories+ is the list of categories to format.
|
134
|
+
#
|
135
|
+
# Returns string
|
136
|
+
#
|
137
|
+
def category_links(categories)
|
138
|
+
categories = categories.sort!.map { |c| category_link c }
|
139
|
+
|
140
|
+
case categories.length
|
141
|
+
when 0
|
142
|
+
""
|
143
|
+
when 1
|
144
|
+
categories[0].to_s
|
145
|
+
else
|
146
|
+
"#{categories[0...-1].join(', ')}, #{categories[-1]}"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# Outputs a single category as an <a> link.
|
151
|
+
#
|
152
|
+
# +category+ is a category string to format as an <a> link
|
153
|
+
#
|
154
|
+
# Returns string
|
155
|
+
#
|
156
|
+
def category_link(category)
|
157
|
+
dir = @context.registers[:site].config['category_dir']
|
158
|
+
"<a class='category' href='/#{dir}/#{category.to_url}/'>#{category}</a>"
|
159
|
+
end
|
160
|
+
|
161
|
+
# Outputs the post.date as formatted html, with hooks for CSS styling.
|
162
|
+
#
|
163
|
+
# +date+ is the date object to format as HTML.
|
164
|
+
#
|
165
|
+
# Returns string
|
166
|
+
def date_to_html_string(date)
|
167
|
+
result = '<span class="month">' + date.strftime('%b').upcase + '</span> '
|
168
|
+
result += date.strftime('<span class="day">%d</span> ')
|
169
|
+
result += date.strftime('<span class="year">%Y</span> ')
|
170
|
+
result
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
174
|
+
|
175
|
+
end
|
176
|
+
|
177
|
+
Liquid::Template.register_filter(Jekyll::CategoryFilter)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
layout: page
|
3
|
+
footer: false
|
4
|
+
---
|
5
|
+
|
6
|
+
<div id="blog-archives" class="category">
|
7
|
+
{% for post in site.categories[page.category] %}
|
8
|
+
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
|
9
|
+
{% unless year == this_year %}
|
10
|
+
{% assign year = this_year %}
|
11
|
+
<h2>{{ year }}</h2>
|
12
|
+
{% endunless %}
|
13
|
+
<article>
|
14
|
+
{% include archive_post.html %}
|
15
|
+
</article>
|
16
|
+
{% endfor %}
|
17
|
+
</div>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Jekyll
|
2
|
+
class RenderMarginNoteTag < Liquid::Tag
|
3
|
+
|
4
|
+
require "shellwords"
|
5
|
+
|
6
|
+
def initialize(tag_name, text, tokens)
|
7
|
+
super
|
8
|
+
@text = text.shellsplit
|
9
|
+
end
|
10
|
+
|
11
|
+
def render(context)
|
12
|
+
"<label for='#{@text[0]}' class='margin-toggle'> ⊕</label><input type='checkbox' id='#{@text[0]}' class='margin-toggle'/><span class='marginnote'>#{@text[1]} </span>"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Liquid::Template.register_tag('marginnote', Jekyll::RenderMarginNoteTag)
|
data/plugins/raw.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Author: Brandon Mathis
|
2
|
+
# Description: Provides plugins with a method for wrapping and unwrapping input to prevent Markdown and Textile from parsing it.
|
3
|
+
# Purpose: This is useful for preventing Markdown and Textile from being too aggressive and incorrectly parsing in-line HTML.
|
4
|
+
module TemplateWrapper
|
5
|
+
# Wrap input with a <div>
|
6
|
+
def self.safe_wrap(input)
|
7
|
+
"<div class='bogus-wrapper'><notextile>#{input}</notextile></div>"
|
8
|
+
end
|
9
|
+
# This must be applied after the
|
10
|
+
def self.unwrap(input)
|
11
|
+
input.gsub /<div class='bogus-wrapper'><notextile>(.+?)<\/notextile><\/div>/m do
|
12
|
+
$1
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/plugins/sidenote.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Jekyll
|
2
|
+
class RenderSideNoteTag < Liquid::Tag
|
3
|
+
|
4
|
+
require "shellwords"
|
5
|
+
|
6
|
+
def initialize(tag_name, text, tokens)
|
7
|
+
super
|
8
|
+
@text = text.shellsplit
|
9
|
+
end
|
10
|
+
|
11
|
+
def render(context)
|
12
|
+
"<label for='#{@text[0]}' class='margin-toggle sidenote-number'></label><input type='checkbox' id='#{@text[0]}' class='margin-toggle'/><span class='sidenote'>#{@text[1]} </span>"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Liquid::Template.register_tag('sidenote', Jekyll::RenderSideNoteTag)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class String
|
2
|
+
def titlecase
|
3
|
+
small_words = %w(a an and as at but by en for if in of on or the to v v. via vs vs.)
|
4
|
+
|
5
|
+
x = split(" ").map do |word|
|
6
|
+
# note: word could contain non-word characters!
|
7
|
+
# downcase all small_words, capitalize the rest
|
8
|
+
small_words.include?(word.gsub(/\W/, "").downcase) ? word.downcase! : word.smart_capitalize!
|
9
|
+
word
|
10
|
+
end
|
11
|
+
# capitalize first and last words
|
12
|
+
x.first.to_s.smart_capitalize!
|
13
|
+
x.last.to_s.smart_capitalize!
|
14
|
+
# small words are capitalized after colon, period, exclamation mark, question mark
|
15
|
+
x.join(" ").gsub(/(:|\.|!|\?)\s?(\W*#{small_words.join("|")}\W*)\s/) { "#{$1} #{$2.smart_capitalize} " }
|
16
|
+
end
|
17
|
+
|
18
|
+
def titlecase!
|
19
|
+
replace(titlecase)
|
20
|
+
end
|
21
|
+
|
22
|
+
def smart_capitalize
|
23
|
+
# ignore any leading crazy characters and capitalize the first real character
|
24
|
+
if self =~ /^['"\(\[']*([a-z])/
|
25
|
+
i = index($1)
|
26
|
+
x = self[i,self.length]
|
27
|
+
# word with capitals and periods mid-word are left alone
|
28
|
+
self[i,1] = self[i,1].upcase unless x =~ /[A-Z]/ or x =~ /\.\w+/
|
29
|
+
end
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
def smart_capitalize!
|
34
|
+
replace(smart_capitalize)
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Title: Simple Video tag for Jekyll
|
2
|
+
# Author: Brandon Mathis http://brandonmathis.com
|
3
|
+
# Description: Easily output MPEG4 HTML5 video with a flash backup.
|
4
|
+
#
|
5
|
+
# Syntax {% video url/to/video [width height] [url/to/poster] %}
|
6
|
+
#
|
7
|
+
# Example:
|
8
|
+
# {% video http://site.com/video.mp4 720 480 http://site.com/poster-frame.jpg %}
|
9
|
+
#
|
10
|
+
# Output:
|
11
|
+
# <video width='720' height='480' preload='none' controls poster='http://site.com/poster-frame.jpg'>
|
12
|
+
# <source src='http://site.com/video.mp4' type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'/>
|
13
|
+
# </video>
|
14
|
+
#
|
15
|
+
|
16
|
+
module Jekyll
|
17
|
+
|
18
|
+
class VideoTag < Liquid::Tag
|
19
|
+
@video = nil
|
20
|
+
@poster = ''
|
21
|
+
@height = ''
|
22
|
+
@width = ''
|
23
|
+
|
24
|
+
def initialize(tag_name, markup, tokens)
|
25
|
+
if markup =~ /(\S+\.\S+)(\s+(\S+\.\S+))?(\s+(\S+\.\S+))?(\s+(\d+)\s(\d+))?(\s+(\S+\.\S+))?/i
|
26
|
+
@video = [$1, $3, $5].compact
|
27
|
+
@width = $7
|
28
|
+
@height = $8
|
29
|
+
@poster = $10
|
30
|
+
end
|
31
|
+
super
|
32
|
+
end
|
33
|
+
|
34
|
+
def render(context)
|
35
|
+
output = super
|
36
|
+
type = {
|
37
|
+
'mp4' => "type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'",
|
38
|
+
'ogv' => "type='video/ogg; codecs=theora, vorbis'",
|
39
|
+
'webm' => "type='video/webm; codecs=vp8, vorbis'"
|
40
|
+
}
|
41
|
+
if @video && @video.size > 0
|
42
|
+
video = "<video width='#{@width}' height='#{@height}' preload='none' controls poster='#{@poster}'>"
|
43
|
+
@video.each do |v|
|
44
|
+
t = v.match(/([^\.]+)$/)[1]
|
45
|
+
video += "<source src='#{v}' #{type[t]}>"
|
46
|
+
end
|
47
|
+
video += "</video>"
|
48
|
+
else
|
49
|
+
"Error processing input, expected syntax: {% video url/to/video [url/to/video] [url/to/video] [width height] [url/to/poster] %}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
Liquid::Template.register_tag('video', Jekyll::VideoTag)
|
56
|
+
|
metadata
CHANGED
@@ -1,37 +1,59 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-lenciel-theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lenciel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.2.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
18
25
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
|
26
|
+
version: 4.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: jekyll-paginate
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
21
32
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
33
|
+
version: '0'
|
23
34
|
type: :runtime
|
24
35
|
prerelease: false
|
25
36
|
version_requirements: !ruby/object:Gem::Requirement
|
26
37
|
requirements:
|
27
38
|
- - ">="
|
28
39
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
30
|
-
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: jekyll-gist
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
31
53
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
54
|
+
version: '0'
|
33
55
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
56
|
+
name: jekyll_picture_tag
|
35
57
|
requirement: !ruby/object:Gem::Requirement
|
36
58
|
requirements:
|
37
59
|
- - ">="
|
@@ -45,7 +67,7 @@ dependencies:
|
|
45
67
|
- !ruby/object:Gem::Version
|
46
68
|
version: '0'
|
47
69
|
- !ruby/object:Gem::Dependency
|
48
|
-
name: jekyll-
|
70
|
+
name: jekyll-sitemap
|
49
71
|
requirement: !ruby/object:Gem::Requirement
|
50
72
|
requirements:
|
51
73
|
- - ">="
|
@@ -87,7 +109,7 @@ dependencies:
|
|
87
109
|
- !ruby/object:Gem::Version
|
88
110
|
version: '0'
|
89
111
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
112
|
+
name: jekyll-archives
|
91
113
|
requirement: !ruby/object:Gem::Requirement
|
92
114
|
requirements:
|
93
115
|
- - ">="
|
@@ -171,7 +193,7 @@ dependencies:
|
|
171
193
|
- !ruby/object:Gem::Version
|
172
194
|
version: '0'
|
173
195
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
196
|
+
name: htmlcompressor
|
175
197
|
requirement: !ruby/object:Gem::Requirement
|
176
198
|
requirements:
|
177
199
|
- - ">="
|
@@ -221,35 +243,6 @@ extra_rdoc_files: []
|
|
221
243
|
files:
|
222
244
|
- LICENSE.txt
|
223
245
|
- README.md
|
224
|
-
- _includes/after_footer.html
|
225
|
-
- _includes/archive_post.html
|
226
|
-
- _includes/article.html
|
227
|
-
- _includes/asides/recent_posts.html
|
228
|
-
- _includes/custom/after_footer.html
|
229
|
-
- _includes/custom/asides/about.html
|
230
|
-
- _includes/custom/baidu_analytics.html
|
231
|
-
- _includes/custom/footer.html
|
232
|
-
- _includes/custom/head.html
|
233
|
-
- _includes/custom/header.html
|
234
|
-
- _includes/custom/navigation.html
|
235
|
-
- _includes/custom/post/sharing.html
|
236
|
-
- _includes/disqus.html
|
237
|
-
- _includes/facebook_like.html
|
238
|
-
- _includes/footer.html
|
239
|
-
- _includes/google_analytics.html
|
240
|
-
- _includes/google_plus_one.html
|
241
|
-
- _includes/head.html
|
242
|
-
- _includes/header.html
|
243
|
-
- _includes/navigation.html
|
244
|
-
- _includes/post/author.html
|
245
|
-
- _includes/post/categories.html
|
246
|
-
- _includes/post/date.html
|
247
|
-
- _includes/post/disqus_thread.html
|
248
|
-
- _includes/post/sharing.html
|
249
|
-
- _layouts/default.html
|
250
|
-
- _layouts/home.html
|
251
|
-
- _layouts/page.html
|
252
|
-
- _layouts/post.html
|
253
246
|
- assets/fonts/IcoMoon.eot
|
254
247
|
- assets/fonts/IcoMoon.svg
|
255
248
|
- assets/fonts/IcoMoon.ttf
|
@@ -310,11 +303,21 @@ files:
|
|
310
303
|
- assets/javascripts/libs/jwplayer/glow/sharing/shareIcon.png
|
311
304
|
- assets/javascripts/libs/jwplayer/glow/sharing/shareScreen.png
|
312
305
|
- assets/javascripts/libs/jwplayer/player.swf
|
313
|
-
- assets/javascripts/libs/lazyload.min.js
|
314
306
|
- assets/javascripts/libs/modernizr.custom.55630.js
|
307
|
+
- assets/javascripts/umami.js
|
315
308
|
- assets/stylesheets/screen.css
|
316
309
|
- assets/stylesheets/screen.min.css
|
317
310
|
- index.html
|
311
|
+
- plugins/blockquote.rb
|
312
|
+
- plugins/category_feed.xml
|
313
|
+
- plugins/category_generator.rb
|
314
|
+
- plugins/category_index.html
|
315
|
+
- plugins/img-tag-transform.rb
|
316
|
+
- plugins/margin_note.rb
|
317
|
+
- plugins/raw.rb
|
318
|
+
- plugins/sidenote.rb
|
319
|
+
- plugins/titlecase.rb
|
320
|
+
- plugins/video_tag.rb
|
318
321
|
homepage: https://github.com/lenciel/jekyll-lenciel-theme
|
319
322
|
licenses:
|
320
323
|
- MIT
|
@@ -334,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
334
337
|
- !ruby/object:Gem::Version
|
335
338
|
version: '0'
|
336
339
|
requirements: []
|
337
|
-
rubygems_version: 3.1.
|
340
|
+
rubygems_version: 3.1.6
|
338
341
|
signing_key:
|
339
342
|
specification_version: 4
|
340
343
|
summary: Jekyll theme made by lenciel with <3
|
data/_includes/after_footer.html
DELETED
data/_includes/archive_post.html
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
{% capture category %}{{ post.categories | size }}{% endcapture %}
|
2
|
-
<h1><a href="{{ root_url }}{{ post.url }}">{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}</a></h1>
|
3
|
-
<time datetime="{{ post.date | datetime | date_to_xmlschema }}" pubdate>{{ post.date | date: "<span class='month'>%b</span> <span class='day'>%d</span> <span class='year'>%Y</span>"}}</time>
|
4
|
-
{% if category != '0' %}
|
5
|
-
<footer>
|
6
|
-
<span class="categories">posted in {{ post.categories | category_links }}</span>
|
7
|
-
</footer>
|
8
|
-
{% endif %}
|
data/_includes/article.html
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
{% unless page.no_header %}
|
2
|
-
<header>
|
3
|
-
{% if index %}
|
4
|
-
<h1 class="entry-title"><a href="{{ root_url }}{{ post.url }}">{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}</a></h1>
|
5
|
-
{% else %}
|
6
|
-
<h1 class="entry-title">{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}</h1>
|
7
|
-
{% endif %}
|
8
|
-
{% unless page.meta == false %}
|
9
|
-
<p class="meta">
|
10
|
-
<time class='entry-date' datetime='{{ post.date | date_xmlschema }}'>
|
11
|
-
{% if index %}
|
12
|
-
<span class='date'>{{ post.date | date: "%Y-%m-%d" }}</span>
|
13
|
-
<span class='time'>{{ post.date | date: '%H:%M:%S' }}</span>
|
14
|
-
{% else %}
|
15
|
-
<span class='date'>{{ page.date | date: "%Y-%m-%d" }}</span>
|
16
|
-
<span class='time'>{{ page.date | date: '%H:%M:%S' }}</span>
|
17
|
-
{% endif %}
|
18
|
-
</time>
|
19
|
-
{% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %}
|
20
|
-
| <a href="{% if index %}{{ root_url }}{{ post.url }}{% endif %}#disqus_thread"
|
21
|
-
data-disqus-identifier="{% if post.meta.disqus_id %}{{ post.meta.disqus_id }}{% else %}{{ site.url }}{{ post.url }}{% endif %}">Comments</a>
|
22
|
-
{% endif %}
|
23
|
-
</p>
|
24
|
-
{% endunless %}
|
25
|
-
</header>
|
26
|
-
{% endunless %}
|
27
|
-
{% if index %}
|
28
|
-
<div class="entry-content">{{ content | excerpt }}</div>
|
29
|
-
{% capture excerpted %}{{ content | has_excerpt }}{% endcapture %}
|
30
|
-
{% if excerpted == 'true' %}
|
31
|
-
<footer>
|
32
|
-
<a rel="full-article" href="{{ root_url }}{{ post.url }}">{{ site.excerpt_link }}</a>
|
33
|
-
</footer>
|
34
|
-
{% endif %}
|
35
|
-
{% else %}
|
36
|
-
<div class="entry-content">{{ content }}</div>
|
37
|
-
{% endif %}
|
38
|
-
|