jekyll-whiteglass 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c9e9f63cb0a3cf6a4036958961e811ae0db623b8
4
+ data.tar.gz: 110faf6083e945f056e506b642c8010b2fe62f5a
5
+ SHA512:
6
+ metadata.gz: c206fe2cd40cf34da5da87c800ce295ab05dbac49e0dd575bf4d716f5de60f3d59a12e01d253c645de57695604128c75796323c9a60e62a820d035136175cd69
7
+ data.tar.gz: a4e573ea0a9fbb2c9e4bfe2713df2f8138c946f839ee03fdfb3136d9b00763ca42162d9cd559ca1d37bb55919b274bc3db0306da55b54c3beea01d3f0e7bfbeb
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Chayoung You
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.
@@ -0,0 +1,186 @@
1
+ # whiteglass
2
+
3
+ [![Build Status](https://travis-ci.org/yous/whiteglass.svg?branch=master)](https://travis-ci.org/yous/whiteglass)
4
+ [![Dependency Status](https://gemnasium.com/badges/github.com/yous/whiteglass.svg)](https://gemnasium.com/github.com/yous/whiteglass)
5
+
6
+ Minimal, responsible Jekyll theme for hackers.
7
+
8
+ ## Installation
9
+
10
+ Add this line to your Jekyll site's Gemfile:
11
+
12
+ ``` ruby
13
+ gem "jekyll-whiteglass"
14
+ ```
15
+
16
+ And add this line to your Jekyll site's `_config.yml`:
17
+
18
+ ``` yaml
19
+ theme: jekyll-whiteglass
20
+ ```
21
+
22
+ And then execute:
23
+
24
+ ``` sh
25
+ bundle
26
+ ```
27
+
28
+ Or install it yourself as:
29
+
30
+ ``` sh
31
+ gem install jekyll-whiteglass
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ ### Customization
37
+
38
+ To override the default structure and style of whiteglass, simply create the
39
+ concerned directory at the root of your site, copy the file you wish to
40
+ customize to that directory, and then edit the file. e.g., to override the
41
+ [`_includes/head_custom.html`](_includes/head_custom.html) file to specify a
42
+ custom style path, create an `_includes` directory, copy
43
+ `_includes/head_custom.html` from jekyll-whiteglass gem folder to
44
+ `<your-site>/_includes` and start editing that file.
45
+
46
+ The site's default CSS is in the gem itself,
47
+ [`assets/main.scss`](assets/main.scss). To override the default CSS, the file
48
+ has to exist at your site source. Do either of the following:
49
+
50
+ - Create a new instance of `main.scss` at site source
51
+ - Create a new file `main.scss` at `<your-site>/assets/`
52
+ - Add the frontmatter dashes, and
53
+ - Add `@import "whiteglass";`, to `<your-site>/assets/main.scss`
54
+ - Add your custom CSS
55
+ - Download the file from this repo
56
+ - Create a new file `main.scss` at `<your-site>/assets/`
57
+ - Copy the contents at [`assets/main.scss`](assets/main.scss) onto the `main.scss` you just created, and edit away
58
+ - Copy directly from jekyll-whiteglass gem
59
+ - Go to your local jekyll-whiteglass gem installation directory (run `bundle show jekyll-whiteglass` to get the path to it)
60
+ - Copy the `assets/` folder from there into the root of `<your-site>`
61
+ - Change whatever values you want, inside `<your-site>/assets/main.scss`
62
+
63
+ ### Locale
64
+
65
+ `site.lang` is used to declare the primary language for each web page within the
66
+ site.
67
+
68
+ `lang: en-US` sets the `lang` attribute for the site to the United States flavor
69
+ of English, while `en-GB` would be for the United Kingdom style of English.
70
+ Country codes are optional and the shorter variation `lang: en` is also
71
+ acceptable. You may want to write a post in different language, then add `lang`
72
+ attribute to the frontmatter of that post:
73
+
74
+ ``` yaml
75
+ layout: post
76
+ title: "안녕하세요"
77
+ lang: ko
78
+ ```
79
+
80
+ ### Description
81
+
82
+ `site.description` describes the site. This is mainly used in meta descriptions
83
+ for improving SEO. Also, you can set `description` attribute for each post:
84
+
85
+ ``` yaml
86
+ layout: post
87
+ title: Awesome Post
88
+ description: This is an awesome post.
89
+ ```
90
+
91
+ ### Category
92
+
93
+ Each post can have `categories` attribute. It can be a string or an array. This
94
+ will be displayed on index, archive and each post, and provide a link to the
95
+ archive of category.
96
+
97
+ ``` yaml
98
+ layout: post
99
+ title: Awesome Post
100
+ categories: Misc
101
+ ```
102
+
103
+ ``` yaml
104
+ layout: post
105
+ title: Another Awesome Post
106
+ categories:
107
+ - Misc
108
+ - Idea
109
+ ```
110
+
111
+ ### Metadata for SEO
112
+
113
+ #### Keywords
114
+
115
+ Each post can have `keywords` attribute. This is a comma-separated list which is
116
+ used in meta descriptions for improving SEO.
117
+
118
+ ``` yaml
119
+ layout: post
120
+ title: How to configure jekyll-whiteglass
121
+ keywords: jekyll, whiteglass, github pages
122
+ ```
123
+
124
+ #### Twitter
125
+
126
+ - `site.twitter_username` sets `twitter:site` and `twitter:creator` meta tag
127
+ - `site.twitter_image` sets `twitter:image:src` meta tag
128
+ - `page.twitter_card.type` sets `twitter:card` meta tag (default: `summary`)
129
+ - If `page.twitter_card.type` is `gallery`, it sets `twitter:image0`, `twitter:image1`, `twitter:image2` and `twitter:image3` meta tags with `page.twitter_card.image`, `page.twitter_card.image1`, `page.twitter_card.image2` and `page.twitter_card.image3`, respectively
130
+ - If `page.twitter_card.type` is `photo`, `page.twitter_card.width` sets `twitter:image:width` meta tag and `page.twitter_card.height` sets `twitter:image:height` meta tag
131
+ - `page.twitter_card.creator` sets `twitter:creator` meta tag. It overrides `site.twitter_username`
132
+ - `page.twitter_card.image` sets `twitter:image:src` meta tag if `page.twitter_card.type` is not `gallery`. It overrides `site.twitter_image`
133
+
134
+ #### Facebook
135
+
136
+ - `site.facebook_app_id` sets `fb:admins` meta tag
137
+ - `site.facebook_page` sets `article:author` meta tag
138
+ - `site.facebook_image` sets `og:image` meta tag
139
+ - `page.facebook.image` sets `og:image` meta tag. It overrides `site.facebook_image`
140
+
141
+ ### Navigation
142
+
143
+ To define header links, add titles and URLs under the `main` key in
144
+ `_data/navigation.yml`:
145
+
146
+ ``` yaml
147
+ main:
148
+ - title: "About"
149
+ url: /about/
150
+ - title: "Archives"
151
+ url: /archives/
152
+ - title: "GitHub"
153
+ url: https://github.com/yous/whiteglass
154
+ ```
155
+
156
+ ### Enabling Google Analytics
157
+
158
+ To enable Google Analytics, add the following lines to your Jekyll site:
159
+
160
+ ``` yaml
161
+ google_analytics: UA-NNNNNNNN-N
162
+ ```
163
+
164
+ ## Contributing
165
+
166
+ Bug reports and pull requests are welcome on GitHub at
167
+ <https://github.com/yous/whiteglass>. This project is intended to be a safe,
168
+ welcoming space for collaboration, and contributors are expected to adhere to
169
+ the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
170
+
171
+ ## Development
172
+
173
+ To set up your environment to develop this theme, run `bundle install`.
174
+
175
+ Your theme is setup just like a normal Jekyll site! To test your theme, run
176
+ `bundle exec jekyll serve` and open your browser at
177
+ `http://localhost:4000/whiteglass/`. This starts a Jekyll server using your
178
+ theme. Add pages, documents, data, etc. like normal to test your theme's
179
+ contents. As you make modifications to your theme and to your content, your site
180
+ will regenerate and you should see the changes in the browser after a refresh,
181
+ just like normal.
182
+
183
+ ## License
184
+
185
+ The theme is available as open source under the terms of the
186
+ [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,8 @@
1
+ {% for category in include.categories %}
2
+ {% assign no_comma = forloop.last %}
3
+ {% for archive in site.archives %}
4
+ {% if archive.type == "category" and archive.title == category %}
5
+ <a href="{{ archive.url | relative_url }}">{{ archive.title | escape }}</a>{% unless no_comma %},{% endunless %}
6
+ {% endif %}
7
+ {% endfor %}
8
+ {% endfor %}
@@ -0,0 +1,14 @@
1
+ <script type="text/javascript">
2
+ WebFontConfig = {
3
+ google: { families: [ 'Bitter:400,700,400italic:latin' ] }
4
+ };
5
+ (function() {
6
+ var wf = document.createElement('script');
7
+ wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
8
+ '://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
9
+ wf.type = 'text/javascript';
10
+ wf.async = 'true';
11
+ var s = document.getElementsByTagName('script')[0];
12
+ s.parentNode.insertBefore(wf, s);
13
+ })();
14
+ </script>
@@ -0,0 +1,11 @@
1
+ <footer class="site-footer">
2
+
3
+ <div class="wrapper">
4
+
5
+ <p>
6
+ {% include footer_content.html %}
7
+ </p>
8
+
9
+ </div>
10
+
11
+ </footer>
@@ -0,0 +1 @@
1
+ &copy; {{ site.author }} - Subscribe via <a href="{{ "/feed.xml" | relative_url }}">RSS</a>
@@ -0,0 +1,13 @@
1
+ {% if site.google_analytics %}
2
+ <!-- Google Analytics -->
3
+ <script>
4
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
5
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
6
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
7
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
8
+
9
+ ga('create', '{{ site.google_analytics }}', 'auto');
10
+ ga('send', 'pageview');
11
+
12
+ </script>
13
+ {% endif %}
@@ -0,0 +1,60 @@
1
+ <head>
2
+ <meta charset="utf-8">
3
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
4
+ <meta name="viewport" content="width=device-width, initial-scale=1">
5
+
6
+ {% assign title = page.title | default: site.title | escape %}
7
+ {% assign canonical = page.url | replace:'index.html','' | absolute_url %}
8
+ {% assign description = page.description | default: site.description | normalize_whitespace | escape %}
9
+ <title>{{ title }}</title>
10
+ <meta name="description" content="{{ description }}">
11
+ {% if page.keywords %}<meta name="keywords" content="{{ page.keywords }}">{% endif %}
12
+
13
+ <link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
14
+ <link rel="canonical" href="{{ canonical }}">
15
+ <link rel="alternate" type="application/rss+xml" title="{{ site.title | escape }}" href="{{ "/atom.xml" | relative_url }}">
16
+
17
+ {% include head_custom.html %}
18
+
19
+ {% if site.facebook_app_id %}
20
+ <meta property="fb:admins" content="{{ site.facebook_app_id }}">
21
+ <meta property="og:title" content="{{ title }}">
22
+ <meta property="og:site_name" content="{{ site.title | escape }}">
23
+ <meta property="og:url" content="{{ canonical }}">
24
+ <meta property="og:description" content="{{ description }}">
25
+ {% if site.facebook_page %}<meta property="article:author" content="{{ site.facebook_page }}">{% endif %}
26
+ {% if page.facebook.image %}
27
+ <meta property="og:image" content="{{ page.facebook.image }}">
28
+ {% elsif site.facebook_image %}
29
+ <meta property="og:image" content="{{ site.facebook_image }}">
30
+ {% endif %}
31
+ {% endif %}
32
+ <meta name="twitter:card" content="{{ page.twitter_card.type | default: "summary" }}">
33
+ {% if site.twitter_username %}<meta name="twitter:site" content="{{ site.twitter_username }}">{% endif %}
34
+ <meta name="twitter:title" content="{{ title | truncate: 70 }}">
35
+ <meta name="twitter:description" content="{{ description | truncate: 200 }}">
36
+ {% if page.twitter_card.creator %}
37
+ <meta name="twitter:creator" content="{{ page.twitter_card.creator }}">
38
+ {% elsif site.twitter_username %}
39
+ <meta name="twitter:creator" content="{{ site.twitter_username }}">
40
+ {% endif %}
41
+ {% if page.twitter_card.image %}
42
+ {% if page.twitter_card.type == 'gallery' %}
43
+ <meta name="twitter:image0" content="{{ page.twitter_card.image }}">
44
+ <meta name="twitter:image1" content="{{ page.twitter_card.image1 }}">
45
+ <meta name="twitter:image2" content="{{ page.twitter_card.image2 }}">
46
+ <meta name="twitter:image3" content="{{ page.twitter_card.image3 }}">
47
+ {% else %}
48
+ <meta name="twitter:image:src" content="{{ page.twitter_card.image }}">
49
+ {% if page.twitter_card.type == 'photo' %}
50
+ {% if page.twitter_card.width %}<meta name="twitter:image:width" content="{{ page.twitter_card.width }}">{% endif %}
51
+ {% if page.twitter_card.height %}<meta name="twitter:image:height" content="{{ page.twitter_card.height }}">{% endif %}
52
+ {% endif %}
53
+ {% endif %}
54
+ {% elsif site.twitter_image %}
55
+ <meta name="twitter:image:src" content="{{ site.twitter_image }}">
56
+ {% endif %}
57
+
58
+ {% include fonts.html %}
59
+ {% include google_analytics.html %}
60
+ </head>
@@ -0,0 +1,10 @@
1
+ <!--
2
+ You can specify additional content for head here. Here are some examples.
3
+
4
+ <link href="{{ "/favicon.png" | relative_url }}" rel="icon">
5
+ <link href="{{ "/apple-touch-icon.png" | relative_url }}" rel="apple-touch-icon">
6
+ <link href="{{ "/apple-touch-icon-76x76.png" | relative_url }}" rel="apple-touch-icon" sizes="76x76">
7
+ <link href="{{ "/apple-touch-icon-120x120.png" | relative_url }}" rel="apple-touch-icon" sizes="120x120">
8
+ <link href="{{ "/apple-touch-icon-152x152.png" | relative_url }}" rel="apple-touch-icon" sizes="152x152">
9
+ <link href="{{ "/apple-touch-icon-180x180.png" | relative_url }}" rel="apple-touch-icon" sizes="180x180">
10
+ -->
@@ -0,0 +1,20 @@
1
+ <header class="site-header">
2
+
3
+ <div class="wrapper">
4
+
5
+ <a class="site-title" href="{{ "/" | relative_url }}">{{ site.title | escape }}</a>
6
+
7
+ <nav class="site-nav">
8
+ {% for link in site.data.navigation.main %}
9
+ {% if link.url contains "http" %}
10
+ {% assign url = link.url %}
11
+ {% else %}
12
+ {% assign url = link.url | relative_url %}
13
+ {% endif %}
14
+ <a class="page-link" href="{{ url }}">{{ link.title }}</a>
15
+ {% endfor %}
16
+ </nav>
17
+
18
+ </div>
19
+
20
+ </header>
@@ -0,0 +1,11 @@
1
+ {% if paginator.total_pages > 1 %}
2
+ <div class="pagination">
3
+ {% if paginator.next_page %}
4
+ <a class="previous" href="{{ paginator.next_page_path | relative_url }}">&laquo; Older</a>
5
+ {% endif %}
6
+
7
+ {% if paginator.previous_page %}
8
+ <a class="next" href="{{ paginator.previous_page_path | relative_url }}">Newer &raquo;</a>
9
+ {% endif %}
10
+ </div>
11
+ {% endif %}
@@ -0,0 +1,28 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <div class="home">
6
+
7
+ <h1 class="page-heading">Blog Archive</h1>
8
+
9
+ {{ content }}
10
+
11
+ {% capture site_lang %}{{ site.lang | default: "en" }}{% endcapture %}
12
+
13
+ <ul class="post-archives">
14
+ {% for post in site.posts %}
15
+ {% capture post_lang %}{{ post.lang | default: site_lang }}{% endcapture %}
16
+ {% capture lang %}{% if post_lang != site_lang %}{{ post_lang }}{% endif %}{% endcapture %}
17
+
18
+ <li>
19
+ <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}{% if post.categories != empty %} • {% include category_links.html categories=post.categories %}{% endif %}</span>
20
+
21
+ <h2>
22
+ <a class="post-link" href="{{ post.url | relative_url }}"{% if lang != empty %} lang="{{ lang }}"{% endif %}>{{ post.title | escape }}{% if post.external-url %} &rarr;{% endif %}</a>
23
+ </h2>
24
+ </li>
25
+ {% endfor %}
26
+ </ul>
27
+
28
+ </div>
@@ -0,0 +1,25 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ <div class="home">
5
+
6
+ <h1 class="page-heading">Archive of {{ page.type }} '{{ page.title | escape }}'</h1>
7
+
8
+ {% capture site_lang %}{{ site.lang | default: "en" }}{% endcapture %}
9
+
10
+ <ul class="post-archives">
11
+ {% for post in page.posts %}
12
+ {% capture post_lang %}{{ post.lang | default: site_lang }}{% endcapture %}
13
+ {% capture lang %}{% if post_lang != site_lang %}{{ post_lang }}{% endif %}{% endcapture %}
14
+
15
+ <li>
16
+ <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}{% if post.categories %} • {% include category_links.html categories=post.categories %}{% endif %}</span>
17
+
18
+ <h2>
19
+ <a class="post-link" href="{{ post.url | relative_url }}"{% if lang != empty %} lang="{{ lang }}"{% endif %}>{{ post.title | escape }}{% if post.external-url %} &rarr;{% endif %}</a>
20
+ </h2>
21
+ </li>
22
+ {% endfor %}
23
+ </ul>
24
+
25
+ </div>
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html lang="{{ page.lang | default: site.lang | default: "en" }}">
3
+
4
+ {% include head.html %}
5
+
6
+ <body>
7
+
8
+ {% include header.html %}
9
+
10
+ <main class="page-content" aria-label="Content">
11
+ <div class="wrapper">
12
+ {{ content }}
13
+ </div>
14
+ </main>
15
+
16
+ {% include footer.html %}
17
+
18
+ </body>
19
+
20
+ </html>
@@ -0,0 +1,34 @@
1
+ ---
2
+ layout: null
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="{{ "/atom.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:20 %}
15
+ <item>
16
+ {% if post.external-url %}
17
+ <title>{{ post.title | append: " &rarr;" | xml_escape }}</title>
18
+ {% else %}
19
+ <title>{{ post.title | xml_escape }}</title>
20
+ {% endif %}
21
+ <description>{{ post.content | xml_escape }}</description>
22
+ <pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
23
+ <link>{{ post.url | prepend: site.baseurl | prepend: site.url }}</link>
24
+ <guid isPermaLink="true">{{ post.url | prepend: site.baseurl | prepend: site.url }}</guid>
25
+ {% for tag in post.tags %}
26
+ <category>{{ tag | xml_escape }}</category>
27
+ {% endfor %}
28
+ {% for cat in post.categories %}
29
+ <category>{{ cat | xml_escape }}</category>
30
+ {% endfor %}
31
+ </item>
32
+ {% endfor %}
33
+ </channel>
34
+ </rss>
@@ -0,0 +1,39 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <div class="home">
6
+
7
+ {{ content }}
8
+
9
+ {% capture site_lang %}{{ site.lang | default: "en" }}{% endcapture %}
10
+
11
+ <ul class="post-list">
12
+ {% for post in paginator.posts %}
13
+ {% capture post_lang %}{{ post.lang | default: site_lang }}{% endcapture %}
14
+ {% capture lang %}{% if post_lang != site_lang %}{{ post_lang }}{% endif %}{% endcapture %}
15
+
16
+ <li{% if lang != empty %} lang="{{ lang }}"{% endif %}>
17
+ <header class="post-header">
18
+ <h1 class="post-title">
19
+ <a class="post-link" href="{{ post.url | relative_url }}">{{ post.title | escape }}{% if post.external-url %} &rarr;{% endif %}</a>
20
+ </h1>
21
+
22
+ <p class="post-meta">{{ post.date | date: "%b %-d, %Y" }}{% if post.categories != empty %} • {% include category_links.html categories=post.categories %}{% endif %}</p>
23
+ </header>
24
+
25
+ <div class="post-content">
26
+ {{ post.excerpt }}
27
+ </div>
28
+ {% if post.content contains site.excerpt_separator %}
29
+ <p class="post-continue">
30
+ <a href="{{ post.url | relative_url }}">Read on &rarr;</a>
31
+ </p>
32
+ {% endif %}
33
+ </li>
34
+ {% endfor %}
35
+ </ul>
36
+
37
+ {% include pagination.html %}
38
+
39
+ </div>
@@ -0,0 +1,14 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ <article class="post">
5
+
6
+ <header class="post-header">
7
+ <h1 class="post-title">{{ page.title | escape }}</h1>
8
+ </header>
9
+
10
+ <div class="post-content">
11
+ {{ content }}
12
+ </div>
13
+
14
+ </article>
@@ -0,0 +1,19 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+ <article class="post" itemscope itemtype="http://schema.org/BlogPosting">
5
+
6
+ <header class="post-header">
7
+ {% if page.external-url %}
8
+ <h1 class="post-title" itemprop="name headline"><a href="{{ page.external-url }}">{{ page.title | escape }} &rarr;</a></h1>
9
+ {% else %}
10
+ <h1 class="post-title" itemprop="name headline">{{ page.title | escape }}</h1>
11
+ {% endif %}
12
+ <p class="post-meta"><time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">{{ page.date | date: "%b %-d, %Y" }}</time>{% if page.author %} • <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>{% endif %}{% if page.categories != empty %} • {% include category_links.html categories=page.categories %}{% endif %}</p>
13
+ </header>
14
+
15
+ <div class="post-content" itemprop="articleBody">
16
+ {{ content }}
17
+ </div>
18
+
19
+ </article>
@@ -0,0 +1,47 @@
1
+ // Define defaults for each variable.
2
+ $base-font-family: Bitter, "Apple SD Gothic Neo", AppleGothic, NanumBarunGothic, "Malgun Gothic", Dotum, sans-serif;
3
+ $monospace-font-family: Monaco, Menlo, Consolas, "Courier New", DotumChe, monospace;
4
+ $base-font-size: 16px;
5
+ $base-font-weight: 400;
6
+ $small-font-size: $base-font-size * 0.875;
7
+ $base-line-height: 1.5;
8
+
9
+ $spacing-unit: 30px;
10
+
11
+ $text-color: #111;
12
+ $background-color: #fdfdfd;
13
+ $brand-color: #2568ba;
14
+
15
+ $grey-color: #828282;
16
+ $grey-color-light: lighten($grey-color, 40%);
17
+ $grey-color-dark: darken($grey-color, 25%);
18
+
19
+ // Width of the content area
20
+ $content-width: 800px;
21
+
22
+ $on-palm: 600px;
23
+ $on-laptop: 800px;
24
+
25
+
26
+
27
+ // Use media queries like this:
28
+ // @include media-query($on-palm) {
29
+ // .wrapper {
30
+ // padding-right: $spacing-unit / 2;
31
+ // padding-left: $spacing-unit / 2;
32
+ // }
33
+ // }
34
+ @mixin media-query($device) {
35
+ @media screen and (max-width: $device) {
36
+ @content;
37
+ }
38
+ }
39
+
40
+
41
+
42
+ // Import partials.
43
+ @import
44
+ "whiteglass/base",
45
+ "whiteglass/layout",
46
+ "whiteglass/syntax-highlighting"
47
+ ;
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Reset some basic elements
3
+ */
4
+ body, h1, h2, h3, h4, h5, h6,
5
+ p, blockquote, pre, hr,
6
+ dl, dd, ol, ul, figure {
7
+ margin: 0;
8
+ padding: 0;
9
+ }
10
+
11
+
12
+
13
+ /**
14
+ * Basic styling
15
+ */
16
+ body {
17
+ font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;
18
+ color: $text-color;
19
+ background-color: $background-color;
20
+ -webkit-text-size-adjust: 100%;
21
+ -webkit-font-feature-settings: "kern" 1;
22
+ -moz-font-feature-settings: "kern" 1;
23
+ -o-font-feature-settings: "kern" 1;
24
+ font-feature-settings: "kern" 1;
25
+ font-kerning: normal;
26
+ }
27
+
28
+
29
+
30
+ /**
31
+ * Set `margin-bottom` to maintain vertical rhythm
32
+ */
33
+ h1, h2, h3, h4, h5, h6,
34
+ p, blockquote, pre,
35
+ ul, ol, dl, figure,
36
+ %vertical-rhythm {
37
+ margin-bottom: $spacing-unit / 2;
38
+ }
39
+
40
+
41
+
42
+ /**
43
+ * Images
44
+ */
45
+ img {
46
+ max-width: 100%;
47
+ vertical-align: middle;
48
+ }
49
+
50
+
51
+
52
+ /**
53
+ * Figures
54
+ */
55
+ figure > img {
56
+ display: block;
57
+ }
58
+
59
+ figcaption {
60
+ font-size: $small-font-size;
61
+ }
62
+
63
+
64
+
65
+ /**
66
+ * Lists
67
+ */
68
+ ul, ol {
69
+ margin-left: $spacing-unit;
70
+ }
71
+
72
+ li {
73
+ > ul,
74
+ > ol {
75
+ margin-bottom: 0;
76
+ }
77
+ }
78
+
79
+
80
+
81
+ /**
82
+ * Headings
83
+ */
84
+ h1, h2, h3, h4, h5, h6 {
85
+ font-weight: $base-font-weight;
86
+
87
+ code {
88
+ font-size: inherit;
89
+ }
90
+ }
91
+
92
+
93
+
94
+ /**
95
+ * Links
96
+ */
97
+ a {
98
+ color: $brand-color;
99
+ text-decoration: none;
100
+
101
+ &:visited {
102
+ color: darken($brand-color, 10%);
103
+ }
104
+
105
+ &:hover {
106
+ color: $text-color;
107
+ text-decoration: underline;
108
+ }
109
+ }
110
+
111
+
112
+
113
+ /**
114
+ * Blockquotes
115
+ */
116
+ blockquote {
117
+ color: $grey-color;
118
+ border-left: 4px solid $grey-color-light;
119
+ padding-left: $spacing-unit / 2;
120
+ font-size: 18px;
121
+ letter-spacing: -1px;
122
+ font-style: italic;
123
+
124
+ > :last-child {
125
+ margin-bottom: 0;
126
+ }
127
+ }
128
+
129
+
130
+
131
+ /**
132
+ * Rules
133
+ */
134
+ hr {
135
+ height: 4px;
136
+ margin: $spacing-unit / 2 0;
137
+ border: 0;
138
+ background-color: $grey-color-light;
139
+ }
140
+
141
+
142
+
143
+ /**
144
+ * Code formatting
145
+ */
146
+ pre,
147
+ code {
148
+ font-family: $monospace-font-family;
149
+ font-size: 13px;
150
+ border: 1px solid $grey-color-light;
151
+ border-radius: 0;
152
+ background-color: lighten($grey-color-light, 5%);
153
+ }
154
+
155
+ code {
156
+ padding: 1px 5px;
157
+ }
158
+
159
+ pre {
160
+ padding: 8px 12px;
161
+ overflow-x: auto;
162
+
163
+ > code {
164
+ border: 0;
165
+ padding-right: 0;
166
+ padding-left: 0;
167
+ }
168
+ }
169
+
170
+
171
+
172
+ /**
173
+ * Wrapper
174
+ */
175
+ .wrapper {
176
+ max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
177
+ max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
178
+ margin-right: auto;
179
+ margin-left: auto;
180
+ padding-right: $spacing-unit;
181
+ padding-left: $spacing-unit;
182
+ @extend %clearfix;
183
+
184
+ @include media-query($on-laptop) {
185
+ max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));
186
+ max-width: calc(#{$content-width} - (#{$spacing-unit}));
187
+ padding-right: $spacing-unit / 2;
188
+ padding-left: $spacing-unit / 2;
189
+ }
190
+ }
191
+
192
+
193
+
194
+ /**
195
+ * Clearfix
196
+ */
197
+ %clearfix:after {
198
+ content: "";
199
+ display: table;
200
+ clear: both;
201
+ }
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Site header
3
+ */
4
+ .site-header {
5
+ min-height: 56px;
6
+
7
+ // Positioning context for the mobile navigation icon
8
+ position: relative;
9
+ }
10
+
11
+ .site-title {
12
+ font-size: 26px;
13
+ font-weight: 300;
14
+ line-height: 56px;
15
+ letter-spacing: -1px;
16
+ margin-bottom: 0;
17
+ float: left;
18
+
19
+ &,
20
+ &:visited {
21
+ color: $grey-color-dark;
22
+ }
23
+ }
24
+
25
+ .site-nav {
26
+ float: right;
27
+ line-height: 56px;
28
+
29
+ .page-link {
30
+ color: $text-color;
31
+ line-height: $base-line-height;
32
+
33
+ // Gaps between nav items, but not on the last one
34
+ &:not(:last-child) {
35
+ margin-right: 20px;
36
+ }
37
+ }
38
+
39
+ @include media-query($on-palm) {
40
+ .page-link {
41
+ padding: 20px 0;
42
+
43
+ &:not(:last-child) {
44
+ margin-right: 0;
45
+ }
46
+ margin-left: 20px;
47
+ }
48
+ }
49
+ }
50
+
51
+
52
+
53
+ /**
54
+ * Site footer
55
+ */
56
+ .site-footer {
57
+ padding: $spacing-unit 0;
58
+ font-size: 15px;
59
+ color: $grey-color;
60
+ text-align: center;
61
+ }
62
+
63
+
64
+
65
+ /**
66
+ * Page content
67
+ */
68
+ .page-content {
69
+ padding: $spacing-unit 0;
70
+ }
71
+
72
+ .page-heading {
73
+ font-size: 20px;
74
+ }
75
+
76
+ .post-list {
77
+ margin-left: 0;
78
+ list-style: none;
79
+
80
+ .post-link:hover {
81
+ text-decoration: none;
82
+ }
83
+
84
+ > li {
85
+ margin-bottom: $spacing-unit * 2;
86
+
87
+ &:not(:first-child) {
88
+ border-top: 4px solid $grey-color-light;
89
+ padding-top: $spacing-unit * 2;
90
+ }
91
+ }
92
+ }
93
+
94
+ .post-archives {
95
+ margin-left: 0;
96
+ list-style: none;
97
+
98
+ .post-link {
99
+ font-size: 24px;
100
+ }
101
+
102
+ > li {
103
+ margin-bottom: $spacing-unit;
104
+ }
105
+ }
106
+
107
+ .post-meta {
108
+ font-size: $small-font-size;
109
+ color: $grey-color;
110
+ }
111
+
112
+ .post-link {
113
+ &,
114
+ &:visited {
115
+ color: $text-color;
116
+ }
117
+
118
+ &:hover {
119
+ color: $brand-color;
120
+ }
121
+ }
122
+
123
+ .post-continue {
124
+ a {
125
+ padding: 8px 15px;
126
+ text-decoration: none;
127
+
128
+ &,
129
+ &:visited {
130
+ color: $grey-color;
131
+ background-color: $grey-color-light;
132
+ }
133
+
134
+ &:hover {
135
+ color: white;
136
+ background-color: $brand-color;
137
+ }
138
+ }
139
+ }
140
+
141
+
142
+
143
+ /**
144
+ * Posts
145
+ */
146
+ .post-header {
147
+ margin-bottom: $spacing-unit;
148
+ }
149
+
150
+ .post-title {
151
+ font-size: 42px;
152
+ letter-spacing: -1px;
153
+ line-height: 1;
154
+
155
+ @include media-query($on-laptop) {
156
+ font-size: 36px;
157
+ }
158
+ }
159
+
160
+ .post-content {
161
+ margin-bottom: $spacing-unit;
162
+
163
+ h2 {
164
+ font-size: 32px;
165
+
166
+ @include media-query($on-laptop) {
167
+ font-size: 28px;
168
+ }
169
+ }
170
+
171
+ h3 {
172
+ font-size: 26px;
173
+
174
+ @include media-query($on-laptop) {
175
+ font-size: 22px;
176
+ }
177
+ }
178
+
179
+ h4 {
180
+ font-size: 20px;
181
+
182
+ @include media-query($on-laptop) {
183
+ font-size: 18px;
184
+ }
185
+ }
186
+ }
187
+
188
+
189
+
190
+ /**
191
+ * Pagination
192
+ */
193
+ .pagination {
194
+ padding: $spacing-unit / 2 0;
195
+ border-top: 1px solid $grey-color-light;
196
+ border-bottom: 1px solid $grey-color-light;
197
+ text-align: center;
198
+ @extend %clearfix;
199
+
200
+ a {
201
+ &,
202
+ &:visited {
203
+ color: $grey-color;
204
+ }
205
+
206
+ &:hover {
207
+ color: $brand-color;
208
+ }
209
+ }
210
+
211
+ .previous {
212
+ float: left;
213
+ }
214
+
215
+ .next {
216
+ float: right;
217
+ }
218
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Syntax highlighting styles
3
+ */
4
+ .highlight {
5
+ background-color: lighten($grey-color-light, 5%);
6
+ @extend %vertical-rhythm;
7
+
8
+ .highlighter-rouge & {
9
+ background-color: lighten($grey-color-light, 5%);
10
+ }
11
+
12
+ .c { color: #998; font-style: italic } // Comment
13
+ .err { color: #a61717; background-color: #e3d2d2 } // Error
14
+ .k { font-weight: bold } // Keyword
15
+ .o { font-weight: bold } // Operator
16
+ .cm { color: #998; font-style: italic } // Comment.Multiline
17
+ .cp { color: #999; font-weight: bold } // Comment.Preproc
18
+ .c1 { color: #998; font-style: italic } // Comment.Single
19
+ .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
20
+ .gd { color: #000; background-color: #fdd } // Generic.Deleted
21
+ .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
22
+ .ge { font-style: italic } // Generic.Emph
23
+ .gr { color: #a00 } // Generic.Error
24
+ .gh { color: #999 } // Generic.Heading
25
+ .gi { color: #000; background-color: #dfd } // Generic.Inserted
26
+ .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
27
+ .go { color: #888 } // Generic.Output
28
+ .gp { color: #555 } // Generic.Prompt
29
+ .gs { font-weight: bold } // Generic.Strong
30
+ .gu { color: #aaa } // Generic.Subheading
31
+ .gt { color: #a00 } // Generic.Traceback
32
+ .kc { font-weight: bold } // Keyword.Constant
33
+ .kd { font-weight: bold } // Keyword.Declaration
34
+ .kp { font-weight: bold } // Keyword.Pseudo
35
+ .kr { font-weight: bold } // Keyword.Reserved
36
+ .kt { color: #458; font-weight: bold } // Keyword.Type
37
+ .m { color: #099 } // Literal.Number
38
+ .s { color: #d14 } // Literal.String
39
+ .na { color: #008080 } // Name.Attribute
40
+ .nb { color: #0086B3 } // Name.Builtin
41
+ .nc { color: #458; font-weight: bold } // Name.Class
42
+ .no { color: #008080 } // Name.Constant
43
+ .ni { color: #800080 } // Name.Entity
44
+ .ne { color: #900; font-weight: bold } // Name.Exception
45
+ .nf { color: #900; font-weight: bold } // Name.Function
46
+ .nn { color: #555 } // Name.Namespace
47
+ .nt { color: #000080 } // Name.Tag
48
+ .nv { color: #008080 } // Name.Variable
49
+ .ow { font-weight: bold } // Operator.Word
50
+ .w { color: #bbb } // Text.Whitespace
51
+ .mf { color: #099 } // Literal.Number.Float
52
+ .mh { color: #099 } // Literal.Number.Hex
53
+ .mi { color: #099 } // Literal.Number.Integer
54
+ .mo { color: #099 } // Literal.Number.Oct
55
+ .sb { color: #d14 } // Literal.String.Backtick
56
+ .sc { color: #d14 } // Literal.String.Char
57
+ .sd { color: #d14 } // Literal.String.Doc
58
+ .s2 { color: #d14 } // Literal.String.Double
59
+ .se { color: #d14 } // Literal.String.Escape
60
+ .sh { color: #d14 } // Literal.String.Heredoc
61
+ .si { color: #d14 } // Literal.String.Interpol
62
+ .sx { color: #d14 } // Literal.String.Other
63
+ .sr { color: #009926 } // Literal.String.Regex
64
+ .s1 { color: #d14 } // Literal.String.Single
65
+ .ss { color: #990073 } // Literal.String.Symbol
66
+ .bp { color: #999 } // Name.Builtin.Pseudo
67
+ .vc { color: #008080 } // Name.Variable.Class
68
+ .vg { color: #008080 } // Name.Variable.Global
69
+ .vi { color: #008080 } // Name.Variable.Instance
70
+ .il { color: #099 } // Literal.Number.Integer.Long
71
+ }
@@ -0,0 +1,49 @@
1
+ ---
2
+ # Only the main Sass file needs front matter (the dashes are enough)
3
+ ---
4
+ @charset "utf-8";
5
+
6
+ // Our variables
7
+ $base-font-family: Bitter, "Apple SD Gothic Neo", AppleGothic, NanumBarunGothic, "Malgun Gothic", Dotum, sans-serif;
8
+ $monospace-font-family: Monaco, Menlo, Consolas, "Courier New", DotumChe, monospace;
9
+ $base-font-size: 16px;
10
+ $base-font-weight: 400;
11
+ $small-font-size: $base-font-size * 0.875;
12
+ $base-line-height: 1.5;
13
+
14
+ $spacing-unit: 30px;
15
+
16
+ $text-color: #111;
17
+ $background-color: #fdfdfd;
18
+ $brand-color: #2568ba;
19
+
20
+ $grey-color: #828282;
21
+ $grey-color-light: lighten($grey-color, 40%);
22
+ $grey-color-dark: darken($grey-color, 25%);
23
+
24
+ // Width of the content area
25
+ $content-width: 800px;
26
+
27
+ $on-palm: 600px;
28
+ $on-laptop: 800px;
29
+
30
+
31
+
32
+ // whiteglass also includes a mixin for defining media queries.
33
+ // Use media queries like this:
34
+ // @include media-query($on-palm) {
35
+ // .wrapper {
36
+ // padding-right: $spacing-unit / 2;
37
+ // padding-left: $spacing-unit / 2;
38
+ // }
39
+ // }
40
+ @mixin media-query($device) {
41
+ @media screen and (max-width: $device) {
42
+ @content;
43
+ }
44
+ }
45
+
46
+
47
+
48
+ // Import partials from the `whiteglass` theme.
49
+ @import "whiteglass";
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-whiteglass
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Chayoung You
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-01-06 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: '3.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: jekyll-archives
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jekyll-paginate
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jekyll-sitemap
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.12'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.12'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.12'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.12'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '10.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '10.0'
97
+ description:
98
+ email:
99
+ - yousbe@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - LICENSE.txt
105
+ - README.md
106
+ - _includes/category_links.html
107
+ - _includes/fonts.html
108
+ - _includes/footer.html
109
+ - _includes/footer_content.html
110
+ - _includes/google_analytics.html
111
+ - _includes/head.html
112
+ - _includes/head_custom.html
113
+ - _includes/header.html
114
+ - _includes/pagination.html
115
+ - _layouts/archive.html
116
+ - _layouts/category_archives.html
117
+ - _layouts/default.html
118
+ - _layouts/feed.xml
119
+ - _layouts/home.html
120
+ - _layouts/page.html
121
+ - _layouts/post.html
122
+ - _sass/whiteglass.scss
123
+ - _sass/whiteglass/_base.scss
124
+ - _sass/whiteglass/_layout.scss
125
+ - _sass/whiteglass/_syntax-highlighting.scss
126
+ - assets/main.scss
127
+ homepage: https://github.com/yous/whiteglass
128
+ licenses:
129
+ - MIT
130
+ metadata: {}
131
+ post_install_message:
132
+ rdoc_options: []
133
+ require_paths:
134
+ - lib
135
+ required_ruby_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubyforge_project:
147
+ rubygems_version: 2.6.8
148
+ signing_key:
149
+ specification_version: 4
150
+ summary: Minimal, responsible Jekyll theme for hackers.
151
+ test_files: []