jekyll-plus 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 +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +77 -0
- data/lib/jekyll-plus.rb +2 -0
- data/lib/jekyll-plus/version.rb +3 -0
- data/lib/jekyll/commands/new.rb +190 -0
- data/lib/jekyll/templates/classic_template/Gemfile.erb +26 -0
- data/lib/jekyll/templates/classic_template/_config.yml.erb +37 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/disqus_comments.html +20 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/footer.html +46 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/google-analytics.html +11 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/head.html +16 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/header.html +27 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/icon-github.html +1 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/icon-github.svg +1 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/icon-twitter.html +1 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_includes/icon-twitter.svg +1 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_layouts/default.html +20 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_layouts/home.html +25 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_layouts/page.html +14 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_layouts/post.html +18 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_sass/_base.scss +198 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_sass/_layout.scss +237 -0
- data/lib/jekyll/templates/classic_template/theme_folders/_sass/_syntax-highlighting.scss +71 -0
- data/lib/jekyll/templates/classic_template/theme_folders/assets/main.scss +47 -0
- data/lib/jekyll/templates/site_template/.gitignore +3 -0
- data/lib/jekyll/templates/site_template/Gemfile.erb +24 -0
- data/lib/jekyll/templates/site_template/_config.yml.erb +37 -0
- data/lib/jekyll/templates/site_template/_posts/0000-00-00-welcome-to-jekyll.md.erb +25 -0
- data/lib/jekyll/templates/site_template/about.md +15 -0
- data/lib/jekyll/templates/site_template/index.md +6 -0
- metadata +131 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d61d7047840f274b66bfbae1c9e987cb304ba6fb
|
4
|
+
data.tar.gz: c9bf197e497d800e3515a9d591e898cae0bf7b0f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ee0170d39c872f61bcd51b7bc4b3b835d595aec9fa90b2fcc54bd02f7f57421a4f851b1725cdc9021b8bf80d037289879c1cef406c80454511b158579cdc497c
|
7
|
+
data.tar.gz: 15a4d19d35f2c921c33953ce77aee115515d76d6a44c2bf805de38fadc41f541705b393594a6bd56840c880a4afbabe275fe0c763c2c5025faf92c9e38e3d6b1
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Ashwin Maroli
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
# Jekyll-Plus
|
2
|
+
|
3
|
+
[](https://rubygems.org/gems/jekyll-plus)
|
4
|
+
[][travis]
|
5
|
+
|
6
|
+
[travis]: https://travis-ci.org/ashmaroli/jekyll-plus
|
7
|
+
|
8
|
+
A ruby gem that modifies `jekyll new` command to add new switches: `--plus`, `--classic`, `--verbose`.
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Simply run:
|
13
|
+
|
14
|
+
$ gem install jekyll-plus
|
15
|
+
|
16
|
+
Currently, to use this gem as intended, Jekyll's native `~/commands/new.rb` file requires to be slightly modified as shown below:
|
17
|
+
```diff
|
18
|
+
# lib/jekyll/commands/new.rb
|
19
|
+
|
20
|
+
def init_with_program(prog)
|
21
|
+
prog.command(:new) do |c|
|
22
|
+
c.syntax "new PATH"
|
23
|
+
c.description "Creates a new Jekyll site scaffold in PATH"
|
24
|
+
|
25
|
+
c.option "force", "--force", "Force creation even if PATH already exists"
|
26
|
+
c.option "blank", "--blank", "Creates scaffolding but with empty files"
|
27
|
+
c.option "skip-bundle", "--skip-bundle", "Skip 'bundle install'"
|
28
|
+
+ c.option "plus", "--plus", "Plus features"
|
29
|
+
+ c.option "classic", "--classic", "Classic Jekyll scaffolding"
|
30
|
+
+ c.option "verbose", "--verbose", "Output messages while creating"
|
31
|
+
|
32
|
+
c.action do |args, options|
|
33
|
+
+ if options["plus"] || options["classic"] || options["verbose"]
|
34
|
+
+ External.require_with_graceful_fail "jekyll-plus"
|
35
|
+
+ end
|
36
|
+
Jekyll::Commands::New.process(args, options)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
```
|
41
|
+
## Usage
|
42
|
+
|
43
|
+
This gem provides three new switches to be used along with the `jekyll new` command.
|
44
|
+
|
45
|
+
### `--plus`
|
46
|
+
|
47
|
+
This switch creates a new Jekyll site using ERB templates for `_config.yml` and `Gemfile` and additionally initializes the directory as a git repository.
|
48
|
+
The config file in such sites will be **pre-populated** with information from the argument(s) passed to `jekyll new` and from the user's `.gitconfig` file. If the git-user-details have not been configured, placeholder text will be used instead.
|
49
|
+
|
50
|
+
**Note:** `site.title` will be set with `capitalized` version of the project's directory-name.
|
51
|
+
This switch has no effect when used alongside the `--blank` switch.
|
52
|
+
|
53
|
+
### `--classic`
|
54
|
+
|
55
|
+
This switch creates a classic-style (pre-Jekyll-3.2) Jekyll site by including the `_layouts`, `_includes`, `_sass` at the root. The directory structure has been altered to be in sync with Jekyll v3.3 and hence you'll have a `Gemfile`, `css/main.scss` is now `assets/main.scss`, etc.
|
56
|
+
|
57
|
+
A *Classic Site* will:
|
58
|
+
- have `Gemfile` and `_config.yml` with the line containing `minima` commented out.
|
59
|
+
- have `_layouts`, `_includes`, `_sass` and `assets` at root.
|
60
|
+
- the contents of these directories, in sync (to be manually updated with patch releases) with the latest `master` branch from Minima Repo.
|
61
|
+
- ***not*** have `site.email` and `site.author` pre-filled with info from user's `.gitconfig` or `site.title` pre-configured from the argument(s) passed.
|
62
|
+
- ***not*** run `bundle install` automatically.
|
63
|
+
|
64
|
+
**Note:** `--classic` dominates `--plus` and will create a *Classic Site* when the two switches are used together.
|
65
|
+
|
66
|
+
### `--verbose`
|
67
|
+
|
68
|
+
This switch prints out messages as the new Jekyll site is being created. Can be used with `--blank`, `--plus` and `--classic`.
|
69
|
+
|
70
|
+
## Contributing
|
71
|
+
|
72
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ashmaroli/jekyll-plus. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
73
|
+
|
74
|
+
|
75
|
+
## License
|
76
|
+
|
77
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/lib/jekyll-plus.rb
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
require "erb"
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
class Commands::New < Command
|
5
|
+
class << self
|
6
|
+
def init_with_program(prog)
|
7
|
+
end
|
8
|
+
|
9
|
+
def process(args, options = {})
|
10
|
+
@verbose = options["verbose"]
|
11
|
+
|
12
|
+
raise ArgumentError, "You must specify a path." if args.empty?
|
13
|
+
|
14
|
+
# extract capitalized blog title from the argument(s) when a 'path'
|
15
|
+
# to the new site has been provided.
|
16
|
+
# e.g. jekyll new work/blogs/exploring ruby would install a blog
|
17
|
+
# titled 'Exploring Ruby' at path ~/work/blogs/exploring ruby
|
18
|
+
blog_title = extract_title args
|
19
|
+
blog_path = File.expand_path(args.join(" "), Dir.pwd)
|
20
|
+
FileUtils.mkdir_p blog_path
|
21
|
+
|
22
|
+
if preserve_source_location?(blog_path, options)
|
23
|
+
Jekyll.logger.abort_with "Conflict:",
|
24
|
+
"#{blog_path} exists and is not empty."
|
25
|
+
end
|
26
|
+
|
27
|
+
create_site blog_title, blog_path, options
|
28
|
+
end
|
29
|
+
|
30
|
+
#
|
31
|
+
# private methods
|
32
|
+
#
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
# join the arguments given, with a whitespace; replace backslashes, if any
|
37
|
+
# with a forward slash; split the string into an array again and select the
|
38
|
+
# last entry.
|
39
|
+
# Further split the entry along a single whitespace, and map to a new array
|
40
|
+
# after capitalizing the split-entries. Join them again with a whitespace
|
41
|
+
# to form the final title string.
|
42
|
+
def extract_title(args)
|
43
|
+
a = args.join(" ").tr("\\", "/").split("/").last
|
44
|
+
a.split.map(&:capitalize).join(" ")
|
45
|
+
end
|
46
|
+
|
47
|
+
def initialized_post_name
|
48
|
+
"_posts/#{Time.now.strftime("%Y-%m-%d")}-welcome-to-jekyll.md"
|
49
|
+
end
|
50
|
+
|
51
|
+
def initialize_git(path)
|
52
|
+
Jekyll.logger.info "Initialising:", File.join(path, ".git") if @verbose
|
53
|
+
Dir.chdir(path) { `git init` }
|
54
|
+
end
|
55
|
+
|
56
|
+
def user_name
|
57
|
+
name ||= `git config user.name`.chomp
|
58
|
+
name.empty? ? "Github User" : name
|
59
|
+
end
|
60
|
+
|
61
|
+
def user_email
|
62
|
+
email ||= `git config user.email`.chomp
|
63
|
+
email.empty? ? "your-email@domain.com" : email
|
64
|
+
end
|
65
|
+
|
66
|
+
def preserve_source_location?(path, options)
|
67
|
+
!options["force"] && !Dir["#{path}/**/*"].empty?
|
68
|
+
end
|
69
|
+
|
70
|
+
def create_site(title, path, options)
|
71
|
+
if options["blank"] && options["verbose"]
|
72
|
+
create_blank_site path
|
73
|
+
else
|
74
|
+
create_sample_files path
|
75
|
+
add_supporting_files title, path, options
|
76
|
+
end
|
77
|
+
after_install title, path, options
|
78
|
+
end
|
79
|
+
|
80
|
+
def create_blank_site(path)
|
81
|
+
Dir.chdir(path) do
|
82
|
+
FileUtils.mkdir(%w(_layouts _posts _drafts))
|
83
|
+
FileUtils.touch("index.html")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def create_sample_files(path)
|
88
|
+
Jekyll.logger.info "" if @verbose
|
89
|
+
initialize_git path
|
90
|
+
FileUtils.mkdir_p(File.expand_path("_posts", path))
|
91
|
+
source = site_template
|
92
|
+
|
93
|
+
static_files = %w(index.md about.md .gitignore)
|
94
|
+
static_files.each do |file|
|
95
|
+
write_file(file, template(file, source), path)
|
96
|
+
end
|
97
|
+
write_file(initialized_post_name, template(scaffold_path, source), path)
|
98
|
+
end
|
99
|
+
|
100
|
+
# adds Gemfile and _config.yml
|
101
|
+
# additionally creates (updated) SCAFFOLD DIRECTORIES of a Jekyll Theme at
|
102
|
+
# blog_path when the `--classic` switch is used.
|
103
|
+
def add_supporting_files(title, path, options)
|
104
|
+
if options["classic"]
|
105
|
+
source = classic_template
|
106
|
+
Jekyll.logger.info "Creating:", "Classic directories and files" if @verbose
|
107
|
+
FileUtils.cp_r "#{classic_directories}/.", path
|
108
|
+
else
|
109
|
+
source = site_template
|
110
|
+
end
|
111
|
+
create_config_file title, path, source
|
112
|
+
write_file("Gemfile", template("Gemfile.erb", source), path)
|
113
|
+
Jekyll.logger.info "" if @verbose
|
114
|
+
end
|
115
|
+
|
116
|
+
# create _config.yml pre-populated with blog-title, and author's name & email
|
117
|
+
# using information from the user's .gitconfig
|
118
|
+
def create_config_file(title, path, source)
|
119
|
+
@blog_title = title
|
120
|
+
@user_name = user_name
|
121
|
+
@user_email = user_email
|
122
|
+
config_template = File.expand_path("_config.yml.erb", source)
|
123
|
+
config_copy = ERB.new(File.read(config_template)).result(binding)
|
124
|
+
|
125
|
+
Jekyll.logger.info "Creating:", File.join(path, "_config.yml") if @verbose
|
126
|
+
File.open(File.expand_path("_config.yml", path), "w") do |f|
|
127
|
+
f.write(config_copy)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def write_file(filename, contents, path)
|
132
|
+
full_path = File.expand_path(filename, path)
|
133
|
+
Jekyll.logger.info "Creating:", full_path if @verbose
|
134
|
+
File.write(full_path, contents)
|
135
|
+
end
|
136
|
+
|
137
|
+
def template(filename, source)
|
138
|
+
erb ||= ThemeBuilder::ERBRenderer.new(self)
|
139
|
+
erb.render(File.read(File.expand_path(filename, source)))
|
140
|
+
end
|
141
|
+
|
142
|
+
def site_template
|
143
|
+
File.expand_path("../templates/site_template", File.dirname(__FILE__))
|
144
|
+
end
|
145
|
+
|
146
|
+
def classic_template
|
147
|
+
File.expand_path("../templates/classic_template", File.dirname(__FILE__))
|
148
|
+
end
|
149
|
+
|
150
|
+
def classic_directories
|
151
|
+
File.join(classic_template, "theme_folders")
|
152
|
+
end
|
153
|
+
|
154
|
+
def scaffold_path
|
155
|
+
"_posts/0000-00-00-welcome-to-jekyll.md.erb"
|
156
|
+
end
|
157
|
+
|
158
|
+
# After a new blog has been installed, print a success notification and then
|
159
|
+
# automatically execute bundle install from within the new blog dir unless
|
160
|
+
# the user opts to generate a classic Jekyll blog or a blank blog or skip
|
161
|
+
# 'bundle install' using the `--skip-bundle` switch
|
162
|
+
def after_install(title, path, options)
|
163
|
+
if options["classic"]
|
164
|
+
Jekyll.logger.info "New classic jekyll site installed in #{path.cyan}."
|
165
|
+
elsif options["blank"]
|
166
|
+
Jekyll.logger.info "New blank jekyll site installed in #{path.cyan}."
|
167
|
+
else
|
168
|
+
Jekyll.logger.info "New jekyll site #{title.cyan} installed in #{path.cyan}."
|
169
|
+
end
|
170
|
+
|
171
|
+
Jekyll.logger.info "Bundle install skipped." if options["skip-bundle"]
|
172
|
+
unless options["classic"] || options["blank"] || options["skip-bundle"]
|
173
|
+
bundle_install path
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
def bundle_install(path)
|
178
|
+
Jekyll::External.require_with_graceful_fail "bundler"
|
179
|
+
Jekyll.logger.info "Running bundle install in #{path.cyan}..."
|
180
|
+
Dir.chdir(path) do
|
181
|
+
if ENV["CI"]
|
182
|
+
system("bundle", "install", "--quiet")
|
183
|
+
else
|
184
|
+
system("bundle", "install")
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
ruby "<%= RUBY_VERSION %>"
|
3
|
+
|
4
|
+
# Hello! This is where you manage which Jekyll version is used to run.
|
5
|
+
# When you want to use a different version, change it below, save the
|
6
|
+
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
|
7
|
+
#
|
8
|
+
# bundle exec jekyll serve
|
9
|
+
#
|
10
|
+
# This will help ensure the proper Jekyll version is running.
|
11
|
+
# Happy Jekylling!
|
12
|
+
gem "jekyll", "~> <%= Jekyll::VERSION %>"
|
13
|
+
|
14
|
+
# This is the default theme for new Jekyll sites. You may uncomment the line
|
15
|
+
# below and change to any other theme-gem. Don't forget to run `bundle install`
|
16
|
+
# again after you change the setting.
|
17
|
+
# gem "minima"
|
18
|
+
|
19
|
+
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
|
20
|
+
# uncomment the line below. To upgrade, run `bundle update github-pages`.
|
21
|
+
# gem "github-pages", group: :jekyll_plugins
|
22
|
+
|
23
|
+
# If you have any plugins, put them here!
|
24
|
+
group :jekyll_plugins do
|
25
|
+
gem "jekyll-feed", "~> 0.6"
|
26
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Welcome to Jekyll!
|
2
|
+
#
|
3
|
+
# This config file is meant for settings that affect your whole blog, values
|
4
|
+
# which you are expected to set up once and rarely edit after that. If you find
|
5
|
+
# yourself editing this file very often, consider using Jekyll's data files
|
6
|
+
# feature for the data you need to update frequently.
|
7
|
+
#
|
8
|
+
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
9
|
+
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
|
10
|
+
|
11
|
+
# Site settings
|
12
|
+
# These are used to personalize your new site. If you look in the HTML files,
|
13
|
+
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
14
|
+
# You can create any custom variable you would like, and they will be accessible
|
15
|
+
# in the templates via {{ site.myvariable }}.
|
16
|
+
|
17
|
+
title: your awesome title
|
18
|
+
email: your-email@domain.com
|
19
|
+
# the ">" below means to ignore newlines until "baseurl:"
|
20
|
+
description: >
|
21
|
+
Write an awesome description for your new site here. You can edit this
|
22
|
+
line in _config.yml. It will appear in your document head meta (for
|
23
|
+
Google search results) and in your feed.xml site description.
|
24
|
+
baseurl: "" # the subpath of your site, e.g. /blog
|
25
|
+
url: "" # the base hostname & protocol for your site, e.g. http://example.com
|
26
|
+
twitter_username: jekyllrb
|
27
|
+
github_username: jekyll
|
28
|
+
|
29
|
+
# Build settings
|
30
|
+
markdown: kramdown
|
31
|
+
# uncomment (and edit) the line below when using a theme
|
32
|
+
# theme: minima
|
33
|
+
gems:
|
34
|
+
- jekyll-feed
|
35
|
+
exclude:
|
36
|
+
- Gemfile
|
37
|
+
- Gemfile.lock
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{% if page.comments != false and jekyll.environment == "production" %}
|
2
|
+
|
3
|
+
<div id="disqus_thread"></div>
|
4
|
+
<script>
|
5
|
+
var disqus_config = function () {
|
6
|
+
this.page.url = '{{ page.url | absolute_url }}';
|
7
|
+
this.page.identifier = '{{ page.url | absolute_url }}';
|
8
|
+
};
|
9
|
+
|
10
|
+
(function() {
|
11
|
+
var d = document, s = d.createElement('script');
|
12
|
+
|
13
|
+
s.src = 'https://{{ site.disqus.shortname }}.disqus.com/embed.js';
|
14
|
+
|
15
|
+
s.setAttribute('data-timestamp', +new Date());
|
16
|
+
(d.head || d.body).appendChild(s);
|
17
|
+
})();
|
18
|
+
</script>
|
19
|
+
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
|
20
|
+
{% endif %}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<footer class="site-footer">
|
2
|
+
|
3
|
+
<div class="wrapper">
|
4
|
+
|
5
|
+
<h2 class="footer-heading">{{ site.title | escape }}</h2>
|
6
|
+
|
7
|
+
<div class="footer-col-wrapper">
|
8
|
+
<div class="footer-col footer-col-1">
|
9
|
+
<ul class="contact-list">
|
10
|
+
<li>
|
11
|
+
{% if site.author %}
|
12
|
+
{{ site.author | escape }}
|
13
|
+
{% else %}
|
14
|
+
{{ site.title | escape }}
|
15
|
+
{% endif %}
|
16
|
+
</li>
|
17
|
+
{% if site.email %}
|
18
|
+
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
|
19
|
+
{% endif %}
|
20
|
+
</ul>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div class="footer-col footer-col-2">
|
24
|
+
<ul class="social-media-list">
|
25
|
+
{% if site.github_username %}
|
26
|
+
<li>
|
27
|
+
{% include icon-github.html username=site.github_username %}
|
28
|
+
</li>
|
29
|
+
{% endif %}
|
30
|
+
|
31
|
+
{% if site.twitter_username %}
|
32
|
+
<li>
|
33
|
+
{% include icon-twitter.html username=site.twitter_username %}
|
34
|
+
</li>
|
35
|
+
{% endif %}
|
36
|
+
</ul>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="footer-col footer-col-3">
|
40
|
+
<p>{{ site.description | escape }}</p>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
</footer>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<script>
|
2
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
3
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
4
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
5
|
+
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
6
|
+
|
7
|
+
ga('create', '{{ site.google_analytics }}', 'auto');
|
8
|
+
ga('send', 'pageview');
|
9
|
+
|
10
|
+
</script>
|
11
|
+
|