jekyll-plus 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +21 -21
  3. data/README.md +209 -77
  4. data/exe/jekyll+ +56 -0
  5. data/lib/jekyll-plus.rb +28 -2
  6. data/lib/jekyll-plus/version.rb +3 -3
  7. data/lib/jekyll/commands/extract_theme.rb +152 -0
  8. data/lib/jekyll/commands/new_site.rb +260 -0
  9. data/lib/jekyll/{templates/site_template/.gitignore → site_template/.gitignore.erb} +0 -0
  10. data/lib/jekyll/{templates/classic_template → site_template}/Gemfile.erb +9 -5
  11. data/lib/jekyll/{templates/site_template → site_template}/_config.yml.erb +15 -5
  12. data/lib/jekyll/{templates/site_template → site_template}/_posts/0000-00-00-welcome-to-jekyll.md.erb +2 -0
  13. data/lib/jekyll/{templates/site_template/about.md → site_template/about.md.erb} +4 -0
  14. data/lib/jekyll/{templates/site_template/index.md → site_template/index.html.erb} +1 -0
  15. data/lib/patches/idempotent_jekyll_config.rb +41 -0
  16. data/lib/patches/jekyll_watcher.rb +59 -0
  17. data/lib/patches/listen_windows_adapter.rb +8 -0
  18. data/lib/patches/mercenary_presenter.rb +38 -0
  19. metadata +46 -38
  20. data/lib/jekyll/commands/new.rb +0 -190
  21. data/lib/jekyll/templates/classic_template/_config.yml.erb +0 -37
  22. data/lib/jekyll/templates/classic_template/theme_folders/_includes/disqus_comments.html +0 -20
  23. data/lib/jekyll/templates/classic_template/theme_folders/_includes/footer.html +0 -46
  24. data/lib/jekyll/templates/classic_template/theme_folders/_includes/google-analytics.html +0 -11
  25. data/lib/jekyll/templates/classic_template/theme_folders/_includes/head.html +0 -16
  26. data/lib/jekyll/templates/classic_template/theme_folders/_includes/header.html +0 -27
  27. data/lib/jekyll/templates/classic_template/theme_folders/_includes/icon-github.html +0 -1
  28. data/lib/jekyll/templates/classic_template/theme_folders/_includes/icon-github.svg +0 -1
  29. data/lib/jekyll/templates/classic_template/theme_folders/_includes/icon-twitter.html +0 -1
  30. data/lib/jekyll/templates/classic_template/theme_folders/_includes/icon-twitter.svg +0 -1
  31. data/lib/jekyll/templates/classic_template/theme_folders/_layouts/default.html +0 -20
  32. data/lib/jekyll/templates/classic_template/theme_folders/_layouts/home.html +0 -25
  33. data/lib/jekyll/templates/classic_template/theme_folders/_layouts/page.html +0 -14
  34. data/lib/jekyll/templates/classic_template/theme_folders/_layouts/post.html +0 -18
  35. data/lib/jekyll/templates/classic_template/theme_folders/_sass/_base.scss +0 -198
  36. data/lib/jekyll/templates/classic_template/theme_folders/_sass/_layout.scss +0 -237
  37. data/lib/jekyll/templates/classic_template/theme_folders/_sass/_syntax-highlighting.scss +0 -71
  38. data/lib/jekyll/templates/classic_template/theme_folders/assets/main.scss +0 -47
  39. data/lib/jekyll/templates/site_template/Gemfile.erb +0 -24
@@ -1,46 +0,0 @@
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>
@@ -1,11 +0,0 @@
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
-
@@ -1,16 +0,0 @@
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
- <title>{% if page.title %}{{ page.title | escape }}{% else %}{{ site.title | escape }}{% endif %}</title>
7
- <meta name="description" content="{{ page.excerpt | default: site.description | strip_html | normalize_whitespace | truncate: 160 | escape }}">
8
-
9
- <link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
10
- <link rel="canonical" href="{{ page.url | replace:'index.html','' | absolute_url }}">
11
- <link rel="alternate" type="application/rss+xml" title="{{ site.title | escape }}" href="{{ "/feed.xml" | relative_url }}">
12
-
13
- {% if jekyll.environment == 'production' and site.google_analytics %}
14
- {% include google-analytics.html %}
15
- {% endif %}
16
- </head>
@@ -1,27 +0,0 @@
1
- <header class="site-header" role="banner">
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
- <span class="menu-icon">
9
- <svg viewBox="0 0 18 15" width="18px" height="15px">
10
- <path fill="#424242" 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 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
11
- <path fill="#424242" 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 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
12
- <path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
13
- </svg>
14
- </span>
15
-
16
- <div class="trigger">
17
- {% for my_page in site.pages %}
18
- {% if my_page.title %}
19
- <a class="page-link" href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
20
- {% endif %}
21
- {% endfor %}
22
- </div>
23
- </nav>
24
-
25
- </div>
26
-
27
- </header>
@@ -1 +0,0 @@
1
- <a href="https://github.com/{{ include.username }}"><span class="icon icon--github">{% include icon-github.svg %}</span><span class="username">{{ include.username }}</span></a>
@@ -1 +0,0 @@
1
- <svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 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 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 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 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 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 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 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 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"/></svg>
@@ -1 +0,0 @@
1
- <a href="https://twitter.com/{{ include.username }}"><span class="icon icon--twitter">{% include icon-twitter.svg %}</span><span class="username">{{ include.username }}</span></a>
@@ -1 +0,0 @@
1
- <svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="#828282" 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.809c-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 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 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 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 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 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"/></svg>
@@ -1,20 +0,0 @@
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>
@@ -1,25 +0,0 @@
1
- ---
2
- layout: default
3
- ---
4
-
5
- <div class="home">
6
-
7
- <h1 class="page-heading">Posts</h1>
8
-
9
- {{ content }}
10
-
11
- <ul class="post-list">
12
- {% for post in site.posts %}
13
- <li>
14
- <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span>
15
-
16
- <h2>
17
- <a class="post-link" href="{{ post.url | relative_url }}">{{ post.title | escape }}</a>
18
- </h2>
19
- </li>
20
- {% endfor %}
21
- </ul>
22
-
23
- <p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | relative_url }}">via RSS</a></p>
24
-
25
- </div>
@@ -1,14 +0,0 @@
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>
@@ -1,18 +0,0 @@
1
- ---
2
- layout: default
3
- ---
4
- <article class="post" itemscope itemtype="http://schema.org/BlogPosting">
5
-
6
- <header class="post-header">
7
- <h1 class="post-title" itemprop="name headline">{{ page.title | escape }}</h1>
8
- <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 %}</p>
9
- </header>
10
-
11
- <div class="post-content" itemprop="articleBody">
12
- {{ content }}
13
- </div>
14
-
15
- {% if site.disqus.shortname %}
16
- {% include disqus_comments.html %}
17
- {% endif %}
18
- </article>
@@ -1,198 +0,0 @@
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
-
88
-
89
-
90
- /**
91
- * Links
92
- */
93
- a {
94
- color: $brand-color;
95
- text-decoration: none;
96
-
97
- &:visited {
98
- color: darken($brand-color, 15%);
99
- }
100
-
101
- &:hover {
102
- color: $text-color;
103
- text-decoration: underline;
104
- }
105
- }
106
-
107
-
108
-
109
- /**
110
- * Blockquotes
111
- */
112
- blockquote {
113
- color: $grey-color;
114
- border-left: 4px solid $grey-color-light;
115
- padding-left: $spacing-unit / 2;
116
- font-size: 18px;
117
- letter-spacing: -1px;
118
- font-style: italic;
119
-
120
- > :last-child {
121
- margin-bottom: 0;
122
- }
123
- }
124
-
125
-
126
-
127
- /**
128
- * Code formatting
129
- */
130
- pre,
131
- code {
132
- font-size: 15px;
133
- border: 1px solid $grey-color-light;
134
- border-radius: 3px;
135
- background-color: #eef;
136
- }
137
-
138
- code {
139
- padding: 1px 5px;
140
- }
141
-
142
- pre {
143
- padding: 8px 12px;
144
- overflow-x: auto;
145
-
146
- > code {
147
- border: 0;
148
- padding-right: 0;
149
- padding-left: 0;
150
- }
151
- }
152
-
153
-
154
-
155
- /**
156
- * Wrapper
157
- */
158
- .wrapper {
159
- max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
160
- max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
161
- margin-right: auto;
162
- margin-left: auto;
163
- padding-right: $spacing-unit;
164
- padding-left: $spacing-unit;
165
- @extend %clearfix;
166
-
167
- @include media-query($on-laptop) {
168
- max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit}));
169
- max-width: calc(#{$content-width} - (#{$spacing-unit}));
170
- padding-right: $spacing-unit / 2;
171
- padding-left: $spacing-unit / 2;
172
- }
173
- }
174
-
175
-
176
-
177
- /**
178
- * Clearfix
179
- */
180
- %clearfix:after {
181
- content: "";
182
- display: table;
183
- clear: both;
184
- }
185
-
186
-
187
-
188
- /**
189
- * Icons
190
- */
191
- .icon > svg {
192
- display: inline-block;
193
- vertical-align: middle;
194
-
195
- path {
196
- fill: $grey-color;
197
- }
198
- }
@@ -1,237 +0,0 @@
1
- /**
2
- * Site header
3
- */
4
- .site-header {
5
- border-top: 5px solid $grey-color-dark;
6
- border-bottom: 1px solid $grey-color-light;
7
- min-height: 56px;
8
-
9
- // Positioning context for the mobile navigation icon
10
- position: relative;
11
- }
12
-
13
- .site-title {
14
- font-size: 26px;
15
- font-weight: 300;
16
- line-height: 56px;
17
- letter-spacing: -1px;
18
- margin-bottom: 0;
19
- float: left;
20
-
21
- &,
22
- &:visited {
23
- color: $grey-color-dark;
24
- }
25
- }
26
-
27
- .site-nav {
28
- float: right;
29
- line-height: 56px;
30
-
31
- .menu-icon {
32
- display: none;
33
- }
34
-
35
- .page-link {
36
- color: $text-color;
37
- line-height: $base-line-height;
38
-
39
- // Gaps between nav items, but not on the last one
40
- &:not(:last-child) {
41
- margin-right: 20px;
42
- }
43
- }
44
-
45
- @include media-query($on-palm) {
46
- position: absolute;
47
- top: 9px;
48
- right: $spacing-unit / 2;
49
- background-color: $background-color;
50
- border: 1px solid $grey-color-light;
51
- border-radius: 5px;
52
- text-align: right;
53
-
54
- .menu-icon {
55
- display: block;
56
- float: right;
57
- width: 36px;
58
- height: 26px;
59
- line-height: 0;
60
- padding-top: 10px;
61
- text-align: center;
62
-
63
- > svg path {
64
- fill: $grey-color-dark;
65
- }
66
- }
67
-
68
- .trigger {
69
- clear: both;
70
- display: none;
71
- }
72
-
73
- &:hover .trigger {
74
- display: block;
75
- padding-bottom: 5px;
76
- }
77
-
78
- .page-link {
79
- display: block;
80
- padding: 5px 10px;
81
-
82
- &:not(:last-child) {
83
- margin-right: 0;
84
- }
85
- margin-left: 20px;
86
- }
87
- }
88
- }
89
-
90
-
91
-
92
- /**
93
- * Site footer
94
- */
95
- .site-footer {
96
- border-top: 1px solid $grey-color-light;
97
- padding: $spacing-unit 0;
98
- }
99
-
100
- .footer-heading {
101
- font-size: 18px;
102
- margin-bottom: $spacing-unit / 2;
103
- }
104
-
105
- .contact-list,
106
- .social-media-list {
107
- list-style: none;
108
- margin-left: 0;
109
- }
110
-
111
- .footer-col-wrapper {
112
- font-size: 15px;
113
- color: $grey-color;
114
- margin-left: -$spacing-unit / 2;
115
- @extend %clearfix;
116
- }
117
-
118
- .footer-col {
119
- float: left;
120
- margin-bottom: $spacing-unit / 2;
121
- padding-left: $spacing-unit / 2;
122
- }
123
-
124
- .footer-col-1 {
125
- width: -webkit-calc(35% - (#{$spacing-unit} / 2));
126
- width: calc(35% - (#{$spacing-unit} / 2));
127
- }
128
-
129
- .footer-col-2 {
130
- width: -webkit-calc(20% - (#{$spacing-unit} / 2));
131
- width: calc(20% - (#{$spacing-unit} / 2));
132
- }
133
-
134
- .footer-col-3 {
135
- width: -webkit-calc(45% - (#{$spacing-unit} / 2));
136
- width: calc(45% - (#{$spacing-unit} / 2));
137
- }
138
-
139
- @include media-query($on-laptop) {
140
- .footer-col-1,
141
- .footer-col-2 {
142
- width: -webkit-calc(50% - (#{$spacing-unit} / 2));
143
- width: calc(50% - (#{$spacing-unit} / 2));
144
- }
145
-
146
- .footer-col-3 {
147
- width: -webkit-calc(100% - (#{$spacing-unit} / 2));
148
- width: calc(100% - (#{$spacing-unit} / 2));
149
- }
150
- }
151
-
152
- @include media-query($on-palm) {
153
- .footer-col {
154
- float: none;
155
- width: -webkit-calc(100% - (#{$spacing-unit} / 2));
156
- width: calc(100% - (#{$spacing-unit} / 2));
157
- }
158
- }
159
-
160
-
161
-
162
- /**
163
- * Page content
164
- */
165
- .page-content {
166
- padding: $spacing-unit 0;
167
- }
168
-
169
- .page-heading {
170
- font-size: 20px;
171
- }
172
-
173
- .post-list {
174
- margin-left: 0;
175
- list-style: none;
176
-
177
- > li {
178
- margin-bottom: $spacing-unit;
179
- }
180
- }
181
-
182
- .post-meta {
183
- font-size: $small-font-size;
184
- color: $grey-color;
185
- }
186
-
187
- .post-link {
188
- display: block;
189
- font-size: 24px;
190
- }
191
-
192
-
193
-
194
- /**
195
- * Posts
196
- */
197
- .post-header {
198
- margin-bottom: $spacing-unit;
199
- }
200
-
201
- .post-title {
202
- font-size: 42px;
203
- letter-spacing: -1px;
204
- line-height: 1;
205
-
206
- @include media-query($on-laptop) {
207
- font-size: 36px;
208
- }
209
- }
210
-
211
- .post-content {
212
- margin-bottom: $spacing-unit;
213
-
214
- h2 {
215
- font-size: 32px;
216
-
217
- @include media-query($on-laptop) {
218
- font-size: 28px;
219
- }
220
- }
221
-
222
- h3 {
223
- font-size: 26px;
224
-
225
- @include media-query($on-laptop) {
226
- font-size: 22px;
227
- }
228
- }
229
-
230
- h4 {
231
- font-size: 20px;
232
-
233
- @include media-query($on-laptop) {
234
- font-size: 18px;
235
- }
236
- }
237
- }