jekyllpress 0.0.1
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/.gitignore +17 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/Guardfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +21 -0
- data/Rakefile +7 -0
- data/bin/jekyllpress +4 -0
- data/jekyllpress.gemspec +31 -0
- data/lib/jekyllpress.rb +157 -0
- data/lib/jekyllpress/version.rb +3 -0
- data/spec/jekyllpress_spec.rb +7 -0
- data/spec/lib/jekyllpress_spec.rb +94 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/test_site/.gitignore +1 -0
- data/spec/test_site/_config.yml +12 -0
- data/spec/test_site/_includes/footer.html +61 -0
- data/spec/test_site/_includes/head.html +12 -0
- data/spec/test_site/_includes/header.html +28 -0
- data/spec/test_site/_layouts/default.html +19 -0
- data/spec/test_site/_layouts/page.html +14 -0
- data/spec/test_site/_layouts/post.html +15 -0
- data/spec/test_site/_templates/new_page.markdown +5 -0
- data/spec/test_site/_templates/new_post.markdown +7 -0
- data/spec/test_site/about.md +11 -0
- data/spec/test_site/css/main.css +410 -0
- data/spec/test_site/feed.xml +30 -0
- data/spec/test_site/index.html +20 -0
- metadata +231 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cfb2cb90d22fa0b368ec4e7def04966f91fa9cce
|
4
|
+
data.tar.gz: 44b872c9516a654f601a496c42957498c2f85f4f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c213b8d99c204c76c21c1332a9a472d88d873d76153dee373e21fc1ea489db75e9709803dcd5a00cfcf807f57e090bde1ad8fd9f719f232132078ce1d8fd71f3
|
7
|
+
data.tar.gz: 098b81d69ea6f71156d4b75acec098b1c20448ecf6f7efbbc4f0ef212d05bd62214b302bb5ea0109b0ca642da1fed1edeb36a1fd22cab4e9b5db81e89b265a28
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Tamara Temple
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# Jekyllpress
|
2
|
+
|
3
|
+
A [Thor](http://whatisthor.com) script that provides several actions to help support and use a [Jekyll](http://jekyllrb.com) site.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
$ gem install jekyllpress
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
|
11
|
+
$ jekyllpress help
|
12
|
+
|
13
|
+
## Contributing
|
14
|
+
|
15
|
+
*"Fork it, Branch it, Commit it, Push it"*
|
16
|
+
|
17
|
+
1. Fork it ( https://github.com/tamouse/jekyllpress/fork )
|
18
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
19
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
20
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
21
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/bin/jekyllpress
ADDED
data/jekyllpress.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'jekyllpress/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "jekyllpress"
|
8
|
+
spec.version = Jekyllpress::VERSION
|
9
|
+
spec.authors = ["Tamara Temple"]
|
10
|
+
spec.email = ["tamouse@gmail.com"]
|
11
|
+
spec.summary = %q{Thor utility to do neat jekyll stuff.}
|
12
|
+
spec.homepage = "https://github.com/tamouse/jekyllpress"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_dependency "jekyll", ">= 2.1"
|
21
|
+
spec.add_dependency "stringex", ">= 2"
|
22
|
+
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "rspec"
|
26
|
+
spec.add_development_dependency "pry", "~> 0.9"
|
27
|
+
spec.add_development_dependency "pry-debugger"
|
28
|
+
spec.add_development_dependency "awesome_print"
|
29
|
+
spec.add_development_dependency "guard"
|
30
|
+
spec.add_development_dependency "guard-rspec"
|
31
|
+
end
|
data/lib/jekyllpress.rb
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'jekyll'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'stringex_lite'
|
5
|
+
require "jekyllpress/version"
|
6
|
+
|
7
|
+
module Jekyllpress
|
8
|
+
|
9
|
+
class App < Thor
|
10
|
+
include Thor::Actions
|
11
|
+
package_name 'Jekyllpress::App'
|
12
|
+
map ["-V","--version"] => :version
|
13
|
+
|
14
|
+
desc "version", "Display Jekyllpress::App version string"
|
15
|
+
def version
|
16
|
+
say "Jekyllpress Version: #{Jekyllpress::VERSION}"
|
17
|
+
Jekyllpress::VERSION
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "setup", "Set up templates"
|
21
|
+
def setup()
|
22
|
+
with_config do |config|
|
23
|
+
empty_directory(File.join(source, template_dir))
|
24
|
+
create_file(File.join(source, template_dir, new_post_template),
|
25
|
+
%q{---
|
26
|
+
layout: post
|
27
|
+
title: <%= @title %>
|
28
|
+
date: <%= Time.now.strftime("%Y-%m-%d %H:%M") %>
|
29
|
+
categories: <%= @categories %>
|
30
|
+
tags: <%= @tags %>
|
31
|
+
---
|
32
|
+
}.gsub(/^\s*/,''))
|
33
|
+
create_file(File.join(source, template_dir, new_page_template),
|
34
|
+
%q{---
|
35
|
+
layout: page
|
36
|
+
title: <%= @title %>
|
37
|
+
date: <%= Time.now.strftime("%Y-%m-%d %H:%M") %>
|
38
|
+
---
|
39
|
+
}.gsub(/^\s*/,''))
|
40
|
+
[__method__, source, template_dir, new_post_template, new_page_template]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
desc "new_post TITLE", "Create a new posts with title TITLE"
|
45
|
+
method_option :categories, :desc => "list of categories to assign this post", :type => :array, :aliases => %w[-c]
|
46
|
+
method_option :tags, :desc => "list of tags to assign this post", :type => :array, :aliases => %w[-t]
|
47
|
+
def new_post(title="")
|
48
|
+
check_templates
|
49
|
+
@title = title.to_s
|
50
|
+
@title = ask("Title for your post: ") if @title.empty?
|
51
|
+
|
52
|
+
@categories = options.fetch("categories", [])
|
53
|
+
@tags = options.fetch("tags", [])
|
54
|
+
|
55
|
+
with_config do |config|
|
56
|
+
check_templates
|
57
|
+
filename = destination(source, posts_dir, post_filename(title))
|
58
|
+
|
59
|
+
template(File.join(template_dir,new_post_template), filename)
|
60
|
+
|
61
|
+
[__method__, @title, filename, @categories, @tags]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
desc "new_page TITLE", "Create a new page with title TITLE"
|
66
|
+
method_option :location, :desc => "Location for page to appear in directory", :type => :string, :aliases => %w[-l --loc]
|
67
|
+
def new_page(title="")
|
68
|
+
check_templates
|
69
|
+
@title = title.to_s
|
70
|
+
@title = ask("Page title: ") if @title.empty?
|
71
|
+
|
72
|
+
location = options.fetch("location", nil)
|
73
|
+
|
74
|
+
with_config do |config|
|
75
|
+
filename = destination(source, location, page_dirname(title), index_name)
|
76
|
+
|
77
|
+
template(File.join(template_dir, new_page_template), filename)
|
78
|
+
|
79
|
+
[__method__, @title, filename, location]
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def with_config
|
86
|
+
raise "no block given at #{caller[1]}" unless block_given?
|
87
|
+
self.class.source_root(jekyll_config["source"])
|
88
|
+
yield jekyll_config
|
89
|
+
end
|
90
|
+
|
91
|
+
def check_templates
|
92
|
+
File.stat(File.join(source, template_dir))
|
93
|
+
File.stat(File.join(source, template_dir, new_page_template))
|
94
|
+
File.stat(File.join(source, template_dir, new_post_template))
|
95
|
+
rescue ::Errno::ENOENT => error
|
96
|
+
warn "It appears you have not set up a template directory yet.",
|
97
|
+
"Run `#{$0} setup` to set up the templates directory"
|
98
|
+
raise error
|
99
|
+
end
|
100
|
+
|
101
|
+
def jekyll_config
|
102
|
+
@jekyll_config ||= begin
|
103
|
+
conf = Jekyll.configuration({})
|
104
|
+
unless conf.has_key?("templates")
|
105
|
+
conf.merge!({
|
106
|
+
"templates" => {
|
107
|
+
"template_dir" => "_templates",
|
108
|
+
"new_post_template" => "new_post.markdown",
|
109
|
+
"new_page_template" => "new_page.markdown"
|
110
|
+
}
|
111
|
+
})
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
def new_ext
|
117
|
+
jekyll_config["markdown_ext"].split(',').first
|
118
|
+
end
|
119
|
+
|
120
|
+
def source
|
121
|
+
jekyll_config['source']
|
122
|
+
end
|
123
|
+
|
124
|
+
def post_filename(title)
|
125
|
+
"#{Time.now.strftime("%Y-%m-%d")}-#{title.to_url}.#{new_ext}"
|
126
|
+
end
|
127
|
+
|
128
|
+
def page_dirname(title)
|
129
|
+
"#{title.to_url}"
|
130
|
+
end
|
131
|
+
|
132
|
+
def index_name(default="index")
|
133
|
+
"#{default}.#{new_ext}"
|
134
|
+
end
|
135
|
+
|
136
|
+
def posts_dir
|
137
|
+
'_posts'
|
138
|
+
end
|
139
|
+
|
140
|
+
def destination(*paths)
|
141
|
+
File.join(paths.compact.map(&:to_s))
|
142
|
+
end
|
143
|
+
|
144
|
+
def template_dir
|
145
|
+
jekyll_config["templates"]["template_dir"]
|
146
|
+
end
|
147
|
+
|
148
|
+
def new_post_template
|
149
|
+
jekyll_config["templates"]["new_post_template"]
|
150
|
+
end
|
151
|
+
|
152
|
+
def new_page_template
|
153
|
+
jekyll_config["templates"]["new_page_template"]
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
jekyll_match = %r[(gems/jekyll-.+/lib/jekyll)]
|
4
|
+
# load 'jekyllpress.rb'; STDERR.puts $".grep(jekyll_match); exit;
|
5
|
+
|
6
|
+
Dir.chdir('spec/test_site') do |test_dir|
|
7
|
+
$".delete_if{|x| x.match(jekyll_match)} ; load 'jekyllpress.rb' # Have to load this *after* we're in the working directory
|
8
|
+
# load 'jekyllpress.rb'
|
9
|
+
describe Jekyllpress::App do
|
10
|
+
describe ":version returns the version string" do
|
11
|
+
it {expect(Jekyllpress::App.start(%w[version])).to include(Jekyllpress::VERSION)}
|
12
|
+
it {expect(Jekyllpress::App.start(%w[-V])).to include(Jekyllpress::VERSION)}
|
13
|
+
it {expect(Jekyllpress::App.start(%w[--version])).to include(Jekyllpress::VERSION)}
|
14
|
+
end
|
15
|
+
|
16
|
+
describe ":new_post returns the title, categories and tags" do
|
17
|
+
FileUtils.rm_rf "_posts/"
|
18
|
+
action, title, filename, categories, tags = Jekyllpress::App.start(%w[new_post A\ New\ Post -c=one two three -t=a b c])
|
19
|
+
|
20
|
+
it {expect(action).to eq :new_post}
|
21
|
+
it {expect(title).to eq "A New Post"}
|
22
|
+
it {expect(categories).to eq %w[one two three]}
|
23
|
+
it {expect(tags).to eq %w[a b c]}
|
24
|
+
it {expect(filename).to be_a String}
|
25
|
+
it {expect(filename).not_to be_empty}
|
26
|
+
it {expect(filename).to include("#{test_dir}/_posts/#{Time.now.strftime("%Y-%m-%d")}-a-new-post.markdown")}
|
27
|
+
end
|
28
|
+
|
29
|
+
describe ":new_page returns title, filename, location" do
|
30
|
+
FileUtils.rm_rf "pages/a-new-page"
|
31
|
+
action, title, filename, location = Jekyllpress::App.start(%w[new_page A\ New\ Page -l=pages])
|
32
|
+
|
33
|
+
it {expect(action).to eq :new_page}
|
34
|
+
it {expect(title).to eq "A New Page"}
|
35
|
+
it {expect(location).to eq "pages"}
|
36
|
+
it {expect(filename).to be_a String}
|
37
|
+
it {expect(filename).not_to be_empty}
|
38
|
+
it {expect(filename).to include("#{test_dir}/pages/a-new-page/index.markdown")}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
Dir.chdir('tmp') do |test_dir|
|
44
|
+
|
45
|
+
FileUtils.rm_rf 'blank'
|
46
|
+
raise "failed to erase blank" if File.directory?('blank')
|
47
|
+
x = `bundle exec jekyll new blank`
|
48
|
+
raise "jekyll new failed: #{x}" unless $?.success?
|
49
|
+
Dir.chdir('blank') do |blank|
|
50
|
+
$".delete_if{|x| x.match(jekyll_match)} ; load 'jekyllpress.rb' # Have to load this *after* we're in the working directory
|
51
|
+
describe "pristine jekyll installation" do
|
52
|
+
|
53
|
+
it "should bloody well be inside the blank directory!!!" do
|
54
|
+
expect(Jekyll::Configuration::DEFAULTS["source"]).to include("blank")
|
55
|
+
end
|
56
|
+
it "should abort when no templates are found" do
|
57
|
+
templates_dir = File.join(test_dir, blank, '_templates')
|
58
|
+
FileUtils.rm_rf templates_dir
|
59
|
+
expect{Jekyllpress::App.start(%w[new_page blah])}.to raise_error(::Errno::ENOENT)
|
60
|
+
expect(File.directory?(templates_dir)).not_to eq(true)
|
61
|
+
end
|
62
|
+
|
63
|
+
describe ":setup creates the template directory and contents" do
|
64
|
+
before(:all) do
|
65
|
+
@templates_dir = File.join(test_dir, blank, '_templates')
|
66
|
+
FileUtils.rm_rf @templates_dir
|
67
|
+
@result = Jekyllpress::App.start(%w[setup])
|
68
|
+
end
|
69
|
+
|
70
|
+
it {expect(@result[0]).to eq(:setup)}
|
71
|
+
it {expect(@result[1]).to include('blank')}
|
72
|
+
it {expect(@result[2]).to eq("_templates")}
|
73
|
+
it {expect(@result[4]).to eq("new_page.markdown")}
|
74
|
+
it {expect(@result[3]).to eq("new_post.markdown")}
|
75
|
+
it "templates directory exists" do
|
76
|
+
expect(File.directory?(@templates_dir)).to eq(true)
|
77
|
+
end
|
78
|
+
it "new_page_template exists" do
|
79
|
+
Dir.chdir(@templates_dir) do |templates_dir|
|
80
|
+
expect(File.exist?("new_page.markdown")).to eq(true)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
it "new_post_template exists" do
|
84
|
+
Dir.chdir(@templates_dir) do |templates_dir|
|
85
|
+
expect(File.exist?("new_post.markdown")).to eq(true)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
_site
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Site settings
|
2
|
+
title: Your awesome title
|
3
|
+
email: your-email@domain.com
|
4
|
+
description: "Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description."
|
5
|
+
baseurl: ""
|
6
|
+
url: "http://yourdomain.com"
|
7
|
+
twitter_username: jekyllrb
|
8
|
+
github_username: jekyll
|
9
|
+
|
10
|
+
# Build settings
|
11
|
+
markdown: kramdown
|
12
|
+
permalink: pretty
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<footer class="site-footer">
|
2
|
+
|
3
|
+
<div class="wrap">
|
4
|
+
|
5
|
+
<h2 class="footer-heading">{{ site.title }}</h2>
|
6
|
+
|
7
|
+
<div class="footer-col-1 column">
|
8
|
+
<ul>
|
9
|
+
<li>{{ site.title }}</li>
|
10
|
+
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
|
11
|
+
</ul>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="footer-col-2 column">
|
15
|
+
<ul>
|
16
|
+
{% if site.github_username %}<li>
|
17
|
+
<a href="https://github.com/{{ site.github_username }}">
|
18
|
+
<span class="icon github">
|
19
|
+
<svg version="1.1" class="github-icon-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
20
|
+
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
|
21
|
+
<path fill-rule="evenodd" clip-rule="evenodd" fill="#C2C2C2" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761
|
22
|
+
c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32
|
23
|
+
c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472
|
24
|
+
c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037
|
25
|
+
C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65
|
26
|
+
c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261
|
27
|
+
c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082
|
28
|
+
c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129
|
29
|
+
c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/>
|
30
|
+
</svg>
|
31
|
+
</span>
|
32
|
+
<span class="username">{{ site.github_username }}</span>
|
33
|
+
</a>
|
34
|
+
</li>{% endif %}
|
35
|
+
{% if site.twitter_username %}<li>
|
36
|
+
<a href="https://twitter.com/{{ site.twitter_username }}">
|
37
|
+
<span class="icon twitter">
|
38
|
+
<svg version="1.1" class="twitter-icon-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
39
|
+
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
|
40
|
+
<path fill="#C2C2C2" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809
|
41
|
+
c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27
|
42
|
+
c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767
|
43
|
+
c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206
|
44
|
+
C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271
|
45
|
+
c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469
|
46
|
+
c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/>
|
47
|
+
</svg>
|
48
|
+
</span>
|
49
|
+
<span class="username">{{ site.twitter_username }}</span>
|
50
|
+
</a>
|
51
|
+
</li>{% endif %}
|
52
|
+
</ul>
|
53
|
+
</div>
|
54
|
+
|
55
|
+
<div class="footer-col-3 column">
|
56
|
+
<p class="text">{{ site.description }}</p>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
</div>
|
60
|
+
|
61
|
+
</footer>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<head>
|
2
|
+
<meta charset="utf-8">
|
3
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
4
|
+
<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
|
5
|
+
<meta name="viewport" content="width=device-width">
|
6
|
+
<meta name="description" content="{{ site.description }}">
|
7
|
+
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
|
8
|
+
|
9
|
+
<!-- Custom CSS -->
|
10
|
+
<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
|
11
|
+
|
12
|
+
</head>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<header class="site-header">
|
2
|
+
|
3
|
+
<div class="wrap">
|
4
|
+
|
5
|
+
<a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a>
|
6
|
+
|
7
|
+
<nav class="site-nav">
|
8
|
+
<a href="#" class="menu-icon">
|
9
|
+
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
10
|
+
viewBox="0 0 18 15" enable-background="new 0 0 18 15" xml:space="preserve">
|
11
|
+
<path fill="#505050" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0
|
12
|
+
h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
|
13
|
+
<path fill="#505050" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484
|
14
|
+
h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
|
15
|
+
<path fill="#505050" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0
|
16
|
+
c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
|
17
|
+
</svg>
|
18
|
+
</a>
|
19
|
+
<div class="trigger">
|
20
|
+
{% for page in site.pages %}
|
21
|
+
{% if page.title %}<a class="page-link" href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a>{% endif %}
|
22
|
+
{% endfor %}
|
23
|
+
</div>
|
24
|
+
</nav>
|
25
|
+
|
26
|
+
</div>
|
27
|
+
|
28
|
+
</header>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
<div class="post">
|
5
|
+
|
6
|
+
<header class="post-header">
|
7
|
+
<h1>{{ page.title }}</h1>
|
8
|
+
<p class="meta">{{ page.date | date: "%b %-d, %Y" }}{% if page.author %} • {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p>
|
9
|
+
</header>
|
10
|
+
|
11
|
+
<article class="post-content">
|
12
|
+
{{ content }}
|
13
|
+
</article>
|
14
|
+
|
15
|
+
</div>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
---
|
2
|
+
layout: page
|
3
|
+
title: About
|
4
|
+
permalink: /about/
|
5
|
+
---
|
6
|
+
|
7
|
+
This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](http://jekyllrb.com/)
|
8
|
+
|
9
|
+
You can find the source code for the Jekyll new theme at: [github.com/jglovier/jekyll-new](https://github.com/jglovier/jekyll-new)
|
10
|
+
|
11
|
+
You can find the source code for Jekyll at [github.com/jekyll/jekyll](https://github.com/jekyll/jekyll)
|
@@ -0,0 +1,410 @@
|
|
1
|
+
/* Base */
|
2
|
+
/* ----------------------------------------------------------*/
|
3
|
+
|
4
|
+
* {
|
5
|
+
margin: 0;
|
6
|
+
padding: 0;
|
7
|
+
}
|
8
|
+
|
9
|
+
html, body { height: 100%; }
|
10
|
+
|
11
|
+
body {
|
12
|
+
font-family: Helvetica, Arial, sans-serif;
|
13
|
+
font-size: 16px;
|
14
|
+
line-height: 1.5;
|
15
|
+
font-weight: 300;
|
16
|
+
background-color: #fdfdfd;
|
17
|
+
}
|
18
|
+
|
19
|
+
h1, h2, h3, h4, h5, h6 { font-size: 100%; font-weight: 400; }
|
20
|
+
|
21
|
+
a { color: #2a7ae2; text-decoration: none; }
|
22
|
+
a:hover { color: #000; text-decoration: underline; }
|
23
|
+
a:visited { color: #205caa; }
|
24
|
+
|
25
|
+
/* Utility */
|
26
|
+
|
27
|
+
.wrap:before,
|
28
|
+
.wrap:after { content:""; display:table; }
|
29
|
+
.wrap:after { clear: both; }
|
30
|
+
.wrap {
|
31
|
+
max-width: 800px;
|
32
|
+
padding: 0 30px;
|
33
|
+
margin: 0 auto;
|
34
|
+
zoom: 1;
|
35
|
+
}
|
36
|
+
|
37
|
+
|
38
|
+
/* Layout Styles */
|
39
|
+
/* ----------------------------------------------------------*/
|
40
|
+
|
41
|
+
/* Site header */
|
42
|
+
|
43
|
+
.site-header {
|
44
|
+
border-top: 5px solid #333;
|
45
|
+
border-bottom: 1px solid #e8e8e8;
|
46
|
+
min-height: 56px;
|
47
|
+
background-color: white;
|
48
|
+
}
|
49
|
+
|
50
|
+
.site-title,
|
51
|
+
.site-title:hover,
|
52
|
+
.site-title:visited {
|
53
|
+
display: block;
|
54
|
+
color: #333;
|
55
|
+
font-size: 26px;
|
56
|
+
letter-spacing: -1px;
|
57
|
+
float: left;
|
58
|
+
line-height: 56px;
|
59
|
+
position: relative;
|
60
|
+
z-index: 1;
|
61
|
+
}
|
62
|
+
|
63
|
+
.site-nav {
|
64
|
+
float: right;
|
65
|
+
line-height: 56px;
|
66
|
+
}
|
67
|
+
|
68
|
+
.site-nav .menu-icon { display: none; }
|
69
|
+
|
70
|
+
.site-nav .page-link {
|
71
|
+
margin-left: 20px;
|
72
|
+
color: #727272;
|
73
|
+
letter-spacing: -.5px;
|
74
|
+
}
|
75
|
+
|
76
|
+
/* Site footer */
|
77
|
+
|
78
|
+
.site-footer {
|
79
|
+
border-top: 1px solid #e8e8e8;
|
80
|
+
padding: 30px 0;
|
81
|
+
}
|
82
|
+
|
83
|
+
.footer-heading {
|
84
|
+
font-size: 18px;
|
85
|
+
font-weight: 300;
|
86
|
+
letter-spacing: -.5px;
|
87
|
+
margin-bottom: 15px;
|
88
|
+
}
|
89
|
+
|
90
|
+
.site-footer .column { float: left; margin-bottom: 15px; }
|
91
|
+
|
92
|
+
.footer-col-1 {
|
93
|
+
width: 270px; /*fallback*/
|
94
|
+
width: -webkit-calc(35% - 10px);
|
95
|
+
width: -moz-calc(35% - 10px);
|
96
|
+
width: -o-calc(35% - 10px);
|
97
|
+
width: calc(35% - 10px);
|
98
|
+
margin-right: 10px
|
99
|
+
}
|
100
|
+
.footer-col-2 {
|
101
|
+
width: 175px; /*fallback*/
|
102
|
+
width: -webkit-calc(23.125% - 10px);
|
103
|
+
width: -moz-calc(23.125% - 10px);
|
104
|
+
width: -o-calc(23.125% - 10px);
|
105
|
+
width: calc(23.125% - 10px);
|
106
|
+
margin-right: 10px
|
107
|
+
}
|
108
|
+
.footer-col-3 {
|
109
|
+
width: 335px; /*fallback*/
|
110
|
+
width: -webkit-calc(41.875%);
|
111
|
+
width: -moz-calc(41.875%);
|
112
|
+
width: -o-calc(41.875%);
|
113
|
+
width: calc(41.875%);
|
114
|
+
}
|
115
|
+
|
116
|
+
.site-footer ul { list-style: none; }
|
117
|
+
|
118
|
+
.site-footer li,
|
119
|
+
.site-footer p {
|
120
|
+
font-size: 15px;
|
121
|
+
letter-spacing: -.3px;
|
122
|
+
color: #828282;
|
123
|
+
}
|
124
|
+
|
125
|
+
.github-icon-svg,
|
126
|
+
.twitter-icon-svg {
|
127
|
+
display: inline-block;
|
128
|
+
width: 16px;
|
129
|
+
height: 16px;
|
130
|
+
position: relative;
|
131
|
+
top: 3px;
|
132
|
+
}
|
133
|
+
|
134
|
+
|
135
|
+
/* Page Content styles */
|
136
|
+
/* ----------------------------------------------------------*/
|
137
|
+
|
138
|
+
.page-content {
|
139
|
+
padding: 30px 0;
|
140
|
+
background-color: #fff;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
/* Home styles */
|
145
|
+
/* ----------------------------------------------------------*/
|
146
|
+
|
147
|
+
.home h1 { margin-bottom: 25px; }
|
148
|
+
|
149
|
+
.posts { list-style-type: none; }
|
150
|
+
|
151
|
+
.posts li { margin-bottom: 30px; }
|
152
|
+
|
153
|
+
.posts .post-link {
|
154
|
+
font-size: 24px;
|
155
|
+
letter-spacing: -1px;
|
156
|
+
line-height: 1;
|
157
|
+
}
|
158
|
+
|
159
|
+
.posts .post-date {
|
160
|
+
display: block;
|
161
|
+
font-size: 15px;
|
162
|
+
color: #818181;
|
163
|
+
}
|
164
|
+
|
165
|
+
|
166
|
+
/* Post styles */
|
167
|
+
/* ----------------------------------------------------------*/
|
168
|
+
|
169
|
+
.post-header { margin: 10px 0 30px; }
|
170
|
+
|
171
|
+
.post-header h1 {
|
172
|
+
font-size: 42px;
|
173
|
+
letter-spacing: -1.75px;
|
174
|
+
line-height: 1;
|
175
|
+
font-weight: 300;
|
176
|
+
}
|
177
|
+
|
178
|
+
.post-header .meta {
|
179
|
+
font-size: 15px;
|
180
|
+
color: #818181;
|
181
|
+
margin-top: 5px;
|
182
|
+
}
|
183
|
+
|
184
|
+
.post-content { margin: 0 0 30px; }
|
185
|
+
|
186
|
+
.post-content > * { margin: 20px 0; }
|
187
|
+
|
188
|
+
|
189
|
+
.post-content h1,
|
190
|
+
.post-content h2,
|
191
|
+
.post-content h3,
|
192
|
+
.post-content h4,
|
193
|
+
.post-content h5,
|
194
|
+
.post-content h6 {
|
195
|
+
line-height: 1;
|
196
|
+
font-weight: 300;
|
197
|
+
margin: 40px 0 20px;
|
198
|
+
}
|
199
|
+
|
200
|
+
.post-content h2 {
|
201
|
+
font-size: 32px;
|
202
|
+
letter-spacing: -1.25px;
|
203
|
+
}
|
204
|
+
|
205
|
+
.post-content h3 {
|
206
|
+
font-size: 26px;
|
207
|
+
letter-spacing: -1px;
|
208
|
+
}
|
209
|
+
|
210
|
+
.post-content h4 {
|
211
|
+
font-size: 20px;
|
212
|
+
letter-spacing: -1px;
|
213
|
+
}
|
214
|
+
|
215
|
+
.post-content blockquote {
|
216
|
+
border-left: 4px solid #e8e8e8;
|
217
|
+
padding-left: 20px;
|
218
|
+
font-size: 18px;
|
219
|
+
opacity: .6;
|
220
|
+
letter-spacing: -1px;
|
221
|
+
font-style: italic;
|
222
|
+
margin: 30px 0;
|
223
|
+
}
|
224
|
+
|
225
|
+
.post-content ul,
|
226
|
+
.post-content ol { padding-left: 20px; }
|
227
|
+
|
228
|
+
.post pre,
|
229
|
+
.post code {
|
230
|
+
border: 1px solid #d5d5e9;
|
231
|
+
background-color: #eef;
|
232
|
+
padding: 8px 12px;
|
233
|
+
-webkit-border-radius: 3px;
|
234
|
+
-moz-border-radius: 3px;
|
235
|
+
border-radius: 3px;
|
236
|
+
font-size: 15px;
|
237
|
+
overflow:scroll;
|
238
|
+
}
|
239
|
+
|
240
|
+
.post code { padding: 1px 5px; }
|
241
|
+
|
242
|
+
.post ul,
|
243
|
+
.post ol { margin-left: 1.35em; }
|
244
|
+
|
245
|
+
.post pre code {
|
246
|
+
border: 0;
|
247
|
+
padding-right: 0;
|
248
|
+
padding-left: 0;
|
249
|
+
}
|
250
|
+
|
251
|
+
/* terminal */
|
252
|
+
.post pre.terminal {
|
253
|
+
border: 1px solid #000;
|
254
|
+
background-color: #333;
|
255
|
+
color: #FFF;
|
256
|
+
-webkit-border-radius: 3px;
|
257
|
+
-moz-border-radius: 3px;
|
258
|
+
border-radius: 3px;
|
259
|
+
}
|
260
|
+
|
261
|
+
.post pre.terminal code { background-color: #333; }
|
262
|
+
|
263
|
+
/* Syntax highlighting styles */
|
264
|
+
/* ----------------------------------------------------------*/
|
265
|
+
|
266
|
+
.highlight { background: #ffffff; }
|
267
|
+
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
268
|
+
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
269
|
+
.highlight .k { font-weight: bold } /* Keyword */
|
270
|
+
.highlight .o { font-weight: bold } /* Operator */
|
271
|
+
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
272
|
+
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
273
|
+
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
274
|
+
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
275
|
+
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
276
|
+
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
277
|
+
.highlight .ge { font-style: italic } /* Generic.Emph */
|
278
|
+
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
279
|
+
.highlight .gh { color: #999999 } /* Generic.Heading */
|
280
|
+
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
281
|
+
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
282
|
+
.highlight .go { color: #888888 } /* Generic.Output */
|
283
|
+
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
284
|
+
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
285
|
+
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
|
286
|
+
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
287
|
+
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
288
|
+
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
289
|
+
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
290
|
+
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
291
|
+
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
292
|
+
.highlight .m { color: #009999 } /* Literal.Number */
|
293
|
+
.highlight .s { color: #d14 } /* Literal.String */
|
294
|
+
.highlight .na { color: #008080 } /* Name.Attribute */
|
295
|
+
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
296
|
+
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
297
|
+
.highlight .no { color: #008080 } /* Name.Constant */
|
298
|
+
.highlight .ni { color: #800080 } /* Name.Entity */
|
299
|
+
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
300
|
+
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
301
|
+
.highlight .nn { color: #555555 } /* Name.Namespace */
|
302
|
+
.highlight .nt { color: #000080 } /* Name.Tag */
|
303
|
+
.highlight .nv { color: #008080 } /* Name.Variable */
|
304
|
+
.highlight .ow { font-weight: bold } /* Operator.Word */
|
305
|
+
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
306
|
+
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
307
|
+
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
308
|
+
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
309
|
+
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
310
|
+
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
311
|
+
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
312
|
+
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
313
|
+
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
314
|
+
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
315
|
+
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
316
|
+
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
317
|
+
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
318
|
+
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
319
|
+
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
320
|
+
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
321
|
+
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
322
|
+
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
323
|
+
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
324
|
+
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
325
|
+
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
326
|
+
|
327
|
+
|
328
|
+
/* media queries */
|
329
|
+
/* ----------------------------------------------------------*/
|
330
|
+
|
331
|
+
|
332
|
+
@media screen and (max-width: 750px) {
|
333
|
+
|
334
|
+
.footer-col-1 { width: 50%; }
|
335
|
+
|
336
|
+
.footer-col-2 {
|
337
|
+
width: 45%; /*fallback*/
|
338
|
+
width: -webkit-calc(50% - 10px);
|
339
|
+
width: -moz-calc(50% - 10px);
|
340
|
+
width: -o-calc(50% - 10px);
|
341
|
+
width: calc(50% - 10px);
|
342
|
+
margin-right: 0;
|
343
|
+
}
|
344
|
+
|
345
|
+
.site-footer .column.footer-col-3 {
|
346
|
+
width: auto;
|
347
|
+
float: none;
|
348
|
+
clear: both;
|
349
|
+
}
|
350
|
+
|
351
|
+
}
|
352
|
+
|
353
|
+
@media screen and (max-width: 600px) {
|
354
|
+
|
355
|
+
.wrap { padding: 0 12px; }
|
356
|
+
|
357
|
+
.site-nav {
|
358
|
+
position: fixed;
|
359
|
+
z-index: 10;
|
360
|
+
top: 14px; right: 8px;
|
361
|
+
background-color: white;
|
362
|
+
-webkit-border-radius: 5px;
|
363
|
+
-moz-border-radius: 5px;
|
364
|
+
border-radius: 5px;
|
365
|
+
border: 1px solid #e8e8e8;
|
366
|
+
}
|
367
|
+
|
368
|
+
.site-nav .menu-icon {
|
369
|
+
display: block;
|
370
|
+
font-size: 24px;
|
371
|
+
color: #505050;
|
372
|
+
float: right;
|
373
|
+
width: 36px;
|
374
|
+
text-align: center;
|
375
|
+
line-height: 36px;
|
376
|
+
}
|
377
|
+
|
378
|
+
.site-nav .menu-icon svg { width: 18px; height: 16px; }
|
379
|
+
|
380
|
+
.site-nav .trigger {
|
381
|
+
clear: both;
|
382
|
+
margin-bottom: 5px;
|
383
|
+
display: none;
|
384
|
+
}
|
385
|
+
|
386
|
+
.site-nav:hover .trigger { display: block; }
|
387
|
+
|
388
|
+
.site-nav .page-link {
|
389
|
+
display: block;
|
390
|
+
text-align: right;
|
391
|
+
line-height: 1.25;
|
392
|
+
padding: 5px 10px;
|
393
|
+
margin: 0;
|
394
|
+
}
|
395
|
+
|
396
|
+
.post-header h1 { font-size: 36px; }
|
397
|
+
.post-content h2 { font-size: 28px; }
|
398
|
+
.post-content h3 { font-size: 22px; }
|
399
|
+
.post-content h4 { font-size: 18px; }
|
400
|
+
.post-content blockquote { padding-left: 10px; }
|
401
|
+
.post-content ul,
|
402
|
+
.post-content ol { padding-left: 10px; }
|
403
|
+
|
404
|
+
.site-footer .column {
|
405
|
+
float: none;
|
406
|
+
clear: both;
|
407
|
+
width: auto;
|
408
|
+
margin: 0 0 15px; }
|
409
|
+
|
410
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
layout: none
|
3
|
+
---
|
4
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
5
|
+
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
6
|
+
<channel>
|
7
|
+
<title>{{ site.title | xml_escape }}</title>
|
8
|
+
<description>{{ site.description | xml_escape }}</description>
|
9
|
+
<link>{{ site.url }}{{ site.baseurl }}/</link>
|
10
|
+
<atom:link href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" rel="self" type="application/rss+xml" />
|
11
|
+
<pubDate>{{ site.time | date_to_rfc822 }}</pubDate>
|
12
|
+
<lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
|
13
|
+
<generator>Jekyll v{{ jekyll.version }}</generator>
|
14
|
+
{% for post in site.posts limit:10 %}
|
15
|
+
<item>
|
16
|
+
<title>{{ post.title | xml_escape }}</title>
|
17
|
+
<description>{{ post.content | xml_escape }}</description>
|
18
|
+
<pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
|
19
|
+
<link>{{ post.url | prepend: site.baseurl | prepend: site.url }}</link>
|
20
|
+
<guid isPermaLink="true">{{ post.url | prepend: site.baseurl | prepend: site.url }}</guid>
|
21
|
+
{% for tag in post.tags %}
|
22
|
+
<category>{{ tag | xml_escape }}</category>
|
23
|
+
{% endfor %}
|
24
|
+
{% for cat in post.categories %}
|
25
|
+
<category>{{ cat | xml_escape }}</category>
|
26
|
+
{% endfor %}
|
27
|
+
</item>
|
28
|
+
{% endfor %}
|
29
|
+
</channel>
|
30
|
+
</rss>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<div class="home">
|
6
|
+
|
7
|
+
<h1>Posts</h1>
|
8
|
+
|
9
|
+
<ul class="posts">
|
10
|
+
{% for post in site.posts %}
|
11
|
+
<li>
|
12
|
+
<span class="post-date">{{ post.date | date: "%b %-d, %Y" }}</span>
|
13
|
+
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
|
14
|
+
</li>
|
15
|
+
{% endfor %}
|
16
|
+
</ul>
|
17
|
+
|
18
|
+
<p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | prepend: site.baseurl }}">via RSS</a></p>
|
19
|
+
|
20
|
+
</div>
|
metadata
ADDED
@@ -0,0 +1,231 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyllpress
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tamara Temple
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-07-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: stringex
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.6'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.9'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.9'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry-debugger
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: awesome_print
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: guard
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: guard-rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description:
|
154
|
+
email:
|
155
|
+
- tamouse@gmail.com
|
156
|
+
executables:
|
157
|
+
- jekyllpress
|
158
|
+
extensions: []
|
159
|
+
extra_rdoc_files: []
|
160
|
+
files:
|
161
|
+
- .gitignore
|
162
|
+
- .rspec
|
163
|
+
- .travis.yml
|
164
|
+
- Gemfile
|
165
|
+
- Guardfile
|
166
|
+
- LICENSE.txt
|
167
|
+
- README.md
|
168
|
+
- Rakefile
|
169
|
+
- bin/jekyllpress
|
170
|
+
- jekyllpress.gemspec
|
171
|
+
- lib/jekyllpress.rb
|
172
|
+
- lib/jekyllpress/version.rb
|
173
|
+
- spec/jekyllpress_spec.rb
|
174
|
+
- spec/lib/jekyllpress_spec.rb
|
175
|
+
- spec/spec_helper.rb
|
176
|
+
- spec/test_site/.gitignore
|
177
|
+
- spec/test_site/_config.yml
|
178
|
+
- spec/test_site/_includes/footer.html
|
179
|
+
- spec/test_site/_includes/head.html
|
180
|
+
- spec/test_site/_includes/header.html
|
181
|
+
- spec/test_site/_layouts/default.html
|
182
|
+
- spec/test_site/_layouts/page.html
|
183
|
+
- spec/test_site/_layouts/post.html
|
184
|
+
- spec/test_site/_templates/new_page.markdown
|
185
|
+
- spec/test_site/_templates/new_post.markdown
|
186
|
+
- spec/test_site/about.md
|
187
|
+
- spec/test_site/css/main.css
|
188
|
+
- spec/test_site/feed.xml
|
189
|
+
- spec/test_site/index.html
|
190
|
+
homepage: https://github.com/tamouse/jekyllpress
|
191
|
+
licenses:
|
192
|
+
- MIT
|
193
|
+
metadata: {}
|
194
|
+
post_install_message:
|
195
|
+
rdoc_options: []
|
196
|
+
require_paths:
|
197
|
+
- lib
|
198
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - '>='
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - '>='
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0'
|
208
|
+
requirements: []
|
209
|
+
rubyforge_project:
|
210
|
+
rubygems_version: 2.2.2
|
211
|
+
signing_key:
|
212
|
+
specification_version: 4
|
213
|
+
summary: Thor utility to do neat jekyll stuff.
|
214
|
+
test_files:
|
215
|
+
- spec/jekyllpress_spec.rb
|
216
|
+
- spec/lib/jekyllpress_spec.rb
|
217
|
+
- spec/spec_helper.rb
|
218
|
+
- spec/test_site/.gitignore
|
219
|
+
- spec/test_site/_config.yml
|
220
|
+
- spec/test_site/_includes/footer.html
|
221
|
+
- spec/test_site/_includes/head.html
|
222
|
+
- spec/test_site/_includes/header.html
|
223
|
+
- spec/test_site/_layouts/default.html
|
224
|
+
- spec/test_site/_layouts/page.html
|
225
|
+
- spec/test_site/_layouts/post.html
|
226
|
+
- spec/test_site/_templates/new_page.markdown
|
227
|
+
- spec/test_site/_templates/new_post.markdown
|
228
|
+
- spec/test_site/about.md
|
229
|
+
- spec/test_site/css/main.css
|
230
|
+
- spec/test_site/feed.xml
|
231
|
+
- spec/test_site/index.html
|