middleman-robots 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2e78c1efa5b9bec03f5fa71f4315435c37358736
4
+ data.tar.gz: 210eed6e5699d58baf442bd92d17d6170ba60221
5
+ SHA512:
6
+ metadata.gz: f7c9627ad0c9abe4d66c24a7203500b5076e772f331f6cc709c60bb2e4c214d691d6e958dfd0db473f3356d6b2eb612edc6dc3af620976ad7927d919a723b861
7
+ data.tar.gz: f4ad15bb069c2731d09560a30600e573aad3695d5d689ce8a8922e4625409608d4e0d6d1b10c2ac8aa9c2a194f80a6fc70f5c8918266949a6dfe5cc2123ee1fd
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+ script: "bundle exec cucumber"
3
+ rvm:
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.2
7
+ - jruby-19mode
8
+ env: TEST=true TRAVIS=true
9
+ gemfile:
10
+ - Gemfile
11
+ notifications:
12
+ webhooks:
13
+ - https://idobata.io/hook/travis_ci/80f5bf2c-144d-48e4-9283-3a5d4d5f53e2
14
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in middleman-robots.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 yterajima
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.
@@ -0,0 +1,66 @@
1
+ # Middleman::Robots
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/middleman-robots.svg)](http://badge.fury.io/rb/middleman-robots)
4
+ [![Build Status](https://travis-ci.org/yterajima/middleman-robots.svg?branch=master)](https://travis-ci.org/yterajima/middleman-robots)
5
+
6
+ `middleman-robots` is an extension of [Middleman](http://middlemanapp.com/). This can create `robots.txt` when build.
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem 'middleman-robots'
14
+ ```
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install middleman-robots
23
+
24
+ ## Usage
25
+
26
+ Basic usage:
27
+
28
+ ```ruby
29
+ # config.rb
30
+ configure :build do
31
+ activate :robots, :rules => [
32
+ {'user-agent' => '*', :allow => %w(/)}
33
+ ],
34
+ :sitemap => "http://example.com/sitemap.xml"
35
+ end
36
+ ```
37
+
38
+ You can use options, `rules` {[`user-agent`(string), `allow`(array), `disallow`(array)]} and `sitemap`. Like this:
39
+
40
+ ```ruby
41
+ # config.rb
42
+ configure :build do
43
+ activate :robots,
44
+ :rules => [
45
+ {
46
+ 'user-agent' => 'Googlebot',
47
+ :disallow => %w(tmp/* /something/dir/file_disallow.html),
48
+ :allow => %w(allow/* /something/dir/file_allow.html)
49
+ },
50
+ {
51
+ 'user-agent' => 'Googlebot-Image',
52
+ :disallow => %w(tmp/* /something/dir/file_disallow.html),
53
+ :allow => %w(allow/* /something/dir/file_allow.html)
54
+ }
55
+ ],
56
+ :sitemap => "http://example.com/sitemap.xml"
57
+ end
58
+ ```
59
+
60
+ ## Contributing
61
+
62
+ 1. Fork it ( https://github.com/[my-github-username]/middleman-robots/fork )
63
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
64
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
65
+ 4. Push to the branch (`git push origin my-new-feature`)
66
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,199 @@
1
+ Feature: Middleman-Robots
2
+
3
+ Scenario: Empty Usage
4
+ Given a fixture app "basic-app"
5
+ And a file named "config.rb" with:
6
+ """
7
+ configure :build do
8
+ activate :robots
9
+ end
10
+ """
11
+ And a successfully built app at "basic-app"
12
+ When I cd to "build"
13
+ Then a file named "robots.txt" should exist
14
+ And the output should contain "middleman-robots: robots.txt created"
15
+
16
+ Scenario: Rules option with user-agent
17
+ Given a fixture app "basic-app"
18
+ And a file named "config.rb" with:
19
+ """
20
+ configure :build do
21
+ activate :robots, :rules => [
22
+ {'user-agent' => '*'}
23
+ ]
24
+ end
25
+ """
26
+ And a successfully built app at "basic-app"
27
+ When I cd to "build"
28
+ Then the file "robots.txt" should contain exactly:
29
+ """
30
+ User-Agent: *
31
+
32
+ """
33
+
34
+ Scenario: Rules option with Disallow
35
+ Given a fixture app "basic-app"
36
+ And a file named "config.rb" with:
37
+ """
38
+ configure :build do
39
+ activate :robots, :rules => [
40
+ {
41
+ 'user-agent' => '*',
42
+ :disallow => %w(tmp/* /something/dir/file_disallow.html)
43
+ }
44
+ ]
45
+ end
46
+ """
47
+ And a successfully built app at "basic-app"
48
+ When I cd to "build"
49
+ Then the file "robots.txt" should contain exactly:
50
+ """
51
+ User-Agent: *
52
+ Disallow: /tmp/*
53
+ Disallow: /something/dir/file_disallow.html
54
+
55
+ """
56
+
57
+ Scenario: Rules option with Allow
58
+ Given a fixture app "basic-app"
59
+ And a file named "config.rb" with:
60
+ """
61
+ configure :build do
62
+ activate :robots, :rules => [
63
+ {
64
+ 'user-agent' => '*',
65
+ :allow => %w(allow/* /something/dir/file_allow.html)
66
+ }
67
+ ]
68
+ end
69
+ """
70
+ And a successfully built app at "basic-app"
71
+ When I cd to "build"
72
+ Then the file "robots.txt" should contain exactly:
73
+ """
74
+ User-Agent: *
75
+ Allow: /allow/*
76
+ Allow: /something/dir/file_allow.html
77
+
78
+ """
79
+
80
+ Scenario: All Rules
81
+ Given a fixture app "basic-app"
82
+ And a file named "config.rb" with:
83
+ """
84
+ configure :build do
85
+ activate :robots, :rules => [
86
+ {
87
+ 'user-agent' => '*',
88
+ :disallow => %w(tmp/* /something/dir/file_disallow.html),
89
+ :allow => %w(allow/* /something/dir/file_allow.html)
90
+ }
91
+ ]
92
+ end
93
+ """
94
+ And a successfully built app at "basic-app"
95
+ When I cd to "build"
96
+ Then the file "robots.txt" should contain exactly:
97
+ """
98
+ User-Agent: *
99
+ Disallow: /tmp/*
100
+ Disallow: /something/dir/file_disallow.html
101
+ Allow: /allow/*
102
+ Allow: /something/dir/file_allow.html
103
+
104
+ """
105
+
106
+ Scenario: Multiple Rules
107
+ Given a fixture app "basic-app"
108
+ And a file named "config.rb" with:
109
+ """
110
+ configure :build do
111
+ activate :robots, :rules => [
112
+ {
113
+ 'user-agent' => 'Googlebot',
114
+ :disallow => %w(tmp/* /something/dir/file_disallow.html),
115
+ :allow => %w(allow/* /something/dir/file_allow.html)
116
+ },
117
+ {
118
+ 'user-agent' => 'Googlebot-Image',
119
+ :disallow => %w(tmp/* /something/dir/file_disallow.html),
120
+ :allow => %w(allow/* /something/dir/file_allow.html)
121
+ }
122
+ ]
123
+ end
124
+ """
125
+ And a successfully built app at "basic-app"
126
+ When I cd to "build"
127
+ Then the file "robots.txt" should contain exactly:
128
+ """
129
+ User-Agent: Googlebot
130
+ Disallow: /tmp/*
131
+ Disallow: /something/dir/file_disallow.html
132
+ Allow: /allow/*
133
+ Allow: /something/dir/file_allow.html
134
+
135
+ User-Agent: Googlebot-Image
136
+ Disallow: /tmp/*
137
+ Disallow: /something/dir/file_disallow.html
138
+ Allow: /allow/*
139
+ Allow: /something/dir/file_allow.html
140
+
141
+ """
142
+
143
+ Scenario: Sitemap option
144
+ Given a fixture app "basic-app"
145
+ And a file named "config.rb" with:
146
+ """
147
+ configure :build do
148
+ activate :robots, :sitemap => "http://example.com/sitemap.xml"
149
+ end
150
+ """
151
+ And a successfully built app at "basic-app"
152
+ When I cd to "build"
153
+ Then the file "robots.txt" should contain exactly:
154
+ """
155
+ Sitemap: http://example.com/sitemap.xml
156
+
157
+ """
158
+
159
+ Scenario: All options
160
+ Given a fixture app "basic-app"
161
+ And a file named "config.rb" with:
162
+ """
163
+ configure :build do
164
+ activate :robots,
165
+ :rules => [
166
+ {
167
+ 'user-agent' => 'Googlebot',
168
+ :disallow => %w(tmp/* /something/dir/file_disallow.html),
169
+ :allow => %w(allow/* /something/dir/file_allow.html)
170
+ },
171
+ {
172
+ 'user-agent' => 'Googlebot-Image',
173
+ :disallow => %w(tmp/* /something/dir/file_disallow.html),
174
+ :allow => %w(allow/* /something/dir/file_allow.html)
175
+ }
176
+ ],
177
+ :sitemap => "http://example.com/sitemap.xml"
178
+ end
179
+ """
180
+ And a successfully built app at "basic-app"
181
+ When I cd to "build"
182
+ Then the file "robots.txt" should contain exactly:
183
+ """
184
+ User-Agent: Googlebot
185
+ Disallow: /tmp/*
186
+ Disallow: /something/dir/file_disallow.html
187
+ Allow: /allow/*
188
+ Allow: /something/dir/file_allow.html
189
+
190
+ User-Agent: Googlebot-Image
191
+ Disallow: /tmp/*
192
+ Disallow: /something/dir/file_disallow.html
193
+ Allow: /allow/*
194
+ Allow: /something/dir/file_allow.html
195
+
196
+ Sitemap: http://example.com/sitemap.xml
197
+
198
+ """
199
+
@@ -0,0 +1,5 @@
1
+ PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
2
+ require 'middleman-core'
3
+ require 'middleman-core/step_definitions'
4
+ require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-robots')
5
+
@@ -0,0 +1,11 @@
1
+ ---
2
+ title: Welcome to Middleman
3
+ ---
4
+
5
+ <div class="welcome">
6
+ <h1>Middleman is Watching</h1>
7
+ <p class="doc">
8
+ <%= link_to "Read Online Documentation", "http://middlemanapp.com/" %>
9
+ </p><!-- .doc -->
10
+ </div><!-- .welcome -->
11
+
@@ -0,0 +1,20 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+
6
+ <!-- Always force latest IE rendering engine or request Chrome Frame -->
7
+ <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
8
+
9
+ <!-- Use title if it's in the page YAML frontmatter -->
10
+ <title><%= current_page.data.title || "The Middleman" %></title>
11
+
12
+ <%= stylesheet_link_tag "normalize", "all" %>
13
+ <%= javascript_include_tag "all" %>
14
+ </head>
15
+
16
+ <body class="<%= page_classes %>">
17
+ <%= yield %>
18
+ </body>
19
+ </html>
20
+
@@ -0,0 +1,56 @@
1
+ @charset "utf-8";
2
+
3
+ body {
4
+ background: #d4d4d4 url("../images/background.png");
5
+ text-align: center;
6
+ font-family: sans-serif; }
7
+
8
+ h1 {
9
+ color: rgba(0, 0, 0, .3);
10
+ font-weight: bold;
11
+ font-size: 32px;
12
+ letter-spacing: -1px;
13
+ text-transform: uppercase;
14
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
15
+ background: url("../images/middleman.png") no-repeat center 100px;
16
+ padding: 350px 0 10px;
17
+ margin: 0; }
18
+
19
+ .doc {
20
+ font-size: 14px;
21
+ margin: 0; }
22
+ .doc:before,
23
+ .doc:after {
24
+ opacity: .2;
25
+ padding: 6px;
26
+ font-style: normal;
27
+ position: relative;
28
+ content: "•"; }
29
+ .doc a {
30
+ color: rgba(0, 0, 0, 0.3); }
31
+ .doc a:hover {
32
+ color: #666; }
33
+
34
+ .welcome {
35
+ -webkit-animation-name: welcome;
36
+ -webkit-animation-duration: .9s; }
37
+
38
+ @-webkit-keyframes welcome {
39
+ from {
40
+ -webkit-transform: scale(0);
41
+ opacity: 0;
42
+ }
43
+ 50% {
44
+ -webkit-transform: scale(0);
45
+ opacity: 0;
46
+ }
47
+ 82.5% {
48
+ -webkit-transform: scale(1.03);
49
+ -webkit-animation-timing-function: ease-out;
50
+ opacity: 1;
51
+ }
52
+ to {
53
+ -webkit-transform: scale(1);
54
+ }
55
+ }
56
+
@@ -0,0 +1,376 @@
1
+ /*! normalize.css v2.0.1 | MIT License | git.io/normalize */
2
+
3
+ /* ==========================================================================
4
+ HTML5 display definitions
5
+ ========================================================================== */
6
+
7
+ /*
8
+ * Corrects `block` display not defined in IE 8/9.
9
+ */
10
+
11
+ article,
12
+ aside,
13
+ details,
14
+ figcaption,
15
+ figure,
16
+ footer,
17
+ header,
18
+ hgroup,
19
+ nav,
20
+ section,
21
+ summary {
22
+ display: block;
23
+ }
24
+
25
+ /*
26
+ * Corrects `inline-block` display not defined in IE 8/9.
27
+ */
28
+
29
+ audio,
30
+ canvas,
31
+ video {
32
+ display: inline-block;
33
+ }
34
+
35
+ /*
36
+ * Prevents modern browsers from displaying `audio` without controls.
37
+ * Remove excess height in iOS 5 devices.
38
+ */
39
+
40
+ audio:not([controls]) {
41
+ display: none;
42
+ height: 0;
43
+ }
44
+
45
+ /*
46
+ * Addresses styling for `hidden` attribute not present in IE 8/9.
47
+ */
48
+
49
+ [hidden] {
50
+ display: none;
51
+ }
52
+
53
+ /* ==========================================================================
54
+ Base
55
+ ========================================================================== */
56
+
57
+ /*
58
+ * 1. Sets default font family to sans-serif.
59
+ * 2. Prevents iOS text size adjust after orientation change, without disabling
60
+ * user zoom.
61
+ */
62
+
63
+ html {
64
+ font-family: sans-serif; /* 1 */
65
+ -webkit-text-size-adjust: 100%; /* 2 */
66
+ -ms-text-size-adjust: 100%; /* 2 */
67
+ }
68
+
69
+ /*
70
+ * Removes default margin.
71
+ */
72
+
73
+ body {
74
+ margin: 0;
75
+ }
76
+
77
+ /* ==========================================================================
78
+ Links
79
+ ========================================================================== */
80
+
81
+ /*
82
+ * Addresses `outline` inconsistency between Chrome and other browsers.
83
+ */
84
+
85
+ a:focus {
86
+ outline: thin dotted;
87
+ }
88
+
89
+ /*
90
+ * Improves readability when focused and also mouse hovered in all browsers.
91
+ */
92
+
93
+ a:active,
94
+ a:hover {
95
+ outline: 0;
96
+ }
97
+
98
+ /* ==========================================================================
99
+ Typography
100
+ ========================================================================== */
101
+
102
+ /*
103
+ * Addresses `h1` font sizes within `section` and `article` in Firefox 4+,
104
+ * Safari 5, and Chrome.
105
+ */
106
+
107
+ h1 {
108
+ font-size: 2em;
109
+ }
110
+
111
+ /*
112
+ * Addresses styling not present in IE 8/9, Safari 5, and Chrome.
113
+ */
114
+
115
+ abbr[title] {
116
+ border-bottom: 1px dotted;
117
+ }
118
+
119
+ /*
120
+ * Addresses style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
121
+ */
122
+
123
+ b,
124
+ strong {
125
+ font-weight: bold;
126
+ }
127
+
128
+ /*
129
+ * Addresses styling not present in Safari 5 and Chrome.
130
+ */
131
+
132
+ dfn {
133
+ font-style: italic;
134
+ }
135
+
136
+ /*
137
+ * Addresses styling not present in IE 8/9.
138
+ */
139
+
140
+ mark {
141
+ background: #ff0;
142
+ color: #000;
143
+ }
144
+
145
+
146
+ /*
147
+ * Corrects font family set oddly in Safari 5 and Chrome.
148
+ */
149
+
150
+ code,
151
+ kbd,
152
+ pre,
153
+ samp {
154
+ font-family: monospace, serif;
155
+ font-size: 1em;
156
+ }
157
+
158
+ /*
159
+ * Improves readability of pre-formatted text in all browsers.
160
+ */
161
+
162
+ pre {
163
+ white-space: pre;
164
+ white-space: pre-wrap;
165
+ word-wrap: break-word;
166
+ }
167
+
168
+ /*
169
+ * Sets consistent quote types.
170
+ */
171
+
172
+ q {
173
+ quotes: "\201C" "\201D" "\2018" "\2019";
174
+ }
175
+
176
+ /*
177
+ * Addresses inconsistent and variable font size in all browsers.
178
+ */
179
+
180
+ small {
181
+ font-size: 80%;
182
+ }
183
+
184
+ /*
185
+ * Prevents `sub` and `sup` affecting `line-height` in all browsers.
186
+ */
187
+
188
+ sub,
189
+ sup {
190
+ font-size: 75%;
191
+ line-height: 0;
192
+ position: relative;
193
+ vertical-align: baseline;
194
+ }
195
+
196
+ sup {
197
+ top: -0.5em;
198
+ }
199
+
200
+ sub {
201
+ bottom: -0.25em;
202
+ }
203
+
204
+ /* ==========================================================================
205
+ Embedded content
206
+ ========================================================================== */
207
+
208
+ /*
209
+ * Removes border when inside `a` element in IE 8/9.
210
+ */
211
+
212
+ img {
213
+ border: 0;
214
+ }
215
+
216
+ /*
217
+ * Corrects overflow displayed oddly in IE 9.
218
+ */
219
+
220
+ svg:not(:root) {
221
+ overflow: hidden;
222
+ }
223
+
224
+ /* ==========================================================================
225
+ Figures
226
+ ========================================================================== */
227
+
228
+ /*
229
+ * Addresses margin not present in IE 8/9 and Safari 5.
230
+ */
231
+
232
+ figure {
233
+ margin: 0;
234
+ }
235
+
236
+ /* ==========================================================================
237
+ Forms
238
+ ========================================================================== */
239
+
240
+ /*
241
+ * Define consistent border, margin, and padding.
242
+ */
243
+
244
+ fieldset {
245
+ border: 1px solid #c0c0c0;
246
+ margin: 0 2px;
247
+ padding: 0.35em 0.625em 0.75em;
248
+ }
249
+
250
+ /*
251
+ * 1. Corrects color not being inherited in IE 8/9.
252
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
253
+ */
254
+
255
+ legend {
256
+ border: 0; /* 1 */
257
+ padding: 0; /* 2 */
258
+ }
259
+
260
+ /*
261
+ * 1. Corrects font family not being inherited in all browsers.
262
+ * 2. Corrects font size not being inherited in all browsers.
263
+ * 3. Addresses margins set differently in Firefox 4+, Safari 5, and Chrome
264
+ */
265
+
266
+ button,
267
+ input,
268
+ select,
269
+ textarea {
270
+ font-family: inherit; /* 1 */
271
+ font-size: 100%; /* 2 */
272
+ margin: 0; /* 3 */
273
+ }
274
+
275
+ /*
276
+ * Addresses Firefox 4+ setting `line-height` on `input` using `!important` in
277
+ * the UA stylesheet.
278
+ */
279
+
280
+ button,
281
+ input {
282
+ line-height: normal;
283
+ }
284
+
285
+ /*
286
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
287
+ * and `video` controls.
288
+ * 2. Corrects inability to style clickable `input` types in iOS.
289
+ * 3. Improves usability and consistency of cursor style between image-type
290
+ * `input` and others.
291
+ */
292
+
293
+ button,
294
+ html input[type="button"], /* 1 */
295
+ input[type="reset"],
296
+ input[type="submit"] {
297
+ -webkit-appearance: button; /* 2 */
298
+ cursor: pointer; /* 3 */
299
+ }
300
+
301
+ /*
302
+ * Re-set default cursor for disabled elements.
303
+ */
304
+
305
+ button[disabled],
306
+ input[disabled] {
307
+ cursor: default;
308
+ }
309
+
310
+ /*
311
+ * 1. Addresses box sizing set to `content-box` in IE 8/9.
312
+ * 2. Removes excess padding in IE 8/9.
313
+ */
314
+
315
+ input[type="checkbox"],
316
+ input[type="radio"] {
317
+ box-sizing: border-box; /* 1 */
318
+ padding: 0; /* 2 */
319
+ }
320
+
321
+ /*
322
+ * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
323
+ * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
324
+ * (include `-moz` to future-proof).
325
+ */
326
+
327
+ input[type="search"] {
328
+ -webkit-appearance: textfield; /* 1 */
329
+ -moz-box-sizing: content-box;
330
+ -webkit-box-sizing: content-box; /* 2 */
331
+ box-sizing: content-box;
332
+ }
333
+
334
+ /*
335
+ * Removes inner padding and search cancel button in Safari 5 and Chrome
336
+ * on OS X.
337
+ */
338
+
339
+ input[type="search"]::-webkit-search-cancel-button,
340
+ input[type="search"]::-webkit-search-decoration {
341
+ -webkit-appearance: none;
342
+ }
343
+
344
+ /*
345
+ * Removes inner padding and border in Firefox 4+.
346
+ */
347
+
348
+ button::-moz-focus-inner,
349
+ input::-moz-focus-inner {
350
+ border: 0;
351
+ padding: 0;
352
+ }
353
+
354
+ /*
355
+ * 1. Removes default vertical scrollbar in IE 8/9.
356
+ * 2. Improves readability and alignment in all browsers.
357
+ */
358
+
359
+ textarea {
360
+ overflow: auto; /* 1 */
361
+ vertical-align: top; /* 2 */
362
+ }
363
+
364
+ /* ==========================================================================
365
+ Tables
366
+ ========================================================================== */
367
+
368
+ /*
369
+ * Remove most spacing between table cells.
370
+ */
371
+
372
+ table {
373
+ border-collapse: collapse;
374
+ border-spacing: 0;
375
+ }
376
+
@@ -0,0 +1,7 @@
1
+ require "middleman-core"
2
+ require "middleman-robots/version"
3
+
4
+ ::Middleman::Extensions.register(:robots) do
5
+ require 'middleman-robots/extension'
6
+ ::Middleman::Robots::Extension
7
+ end
@@ -0,0 +1,57 @@
1
+ module Middleman
2
+ module Robots
3
+ class Extension < ::Middleman::Extension
4
+ option :rules, [], 'List of rules about sitemap.xml'
5
+ option :sitemap, false, 'URI of sitemap.xml'
6
+
7
+ def initialize(app, options_hash = {}, &block)
8
+ super
9
+
10
+ data = rules(options.rules) + sitemap(options.sitemap)
11
+ data.gsub!(/\n+$/, "\n")
12
+
13
+ build_dir = app.build_dir
14
+ app.after_build do
15
+ File.open(File.join(build_dir, "robots.txt"), "w") do |file|
16
+ file.puts(data)
17
+ end
18
+ puts " middleman-robots: robots.txt created"
19
+ end
20
+ end
21
+
22
+ def rules(rules)
23
+ return '' if rules.empty?
24
+
25
+ data = []
26
+ rules.each do |rule|
27
+ row = []
28
+ if (rule["user-agent"])
29
+ row << "User-Agent: #{rule["user-agent"]}"
30
+ end
31
+
32
+ if (rule[:disallow])
33
+ rule[:disallow].each do |path|
34
+ path = "/" + path unless /^\// =~ path
35
+ row << "Disallow: #{path}"
36
+ end
37
+ end
38
+
39
+ if (rule[:allow])
40
+ rule[:allow].each do |path|
41
+ path = "/" + path unless /^\// =~ path
42
+ row << "Allow: #{path}"
43
+ end
44
+ end
45
+
46
+ data << row.join("\n") + "\n\n" if row.length > 0
47
+ end
48
+
49
+ data.join('')
50
+ end
51
+
52
+ def sitemap(path)
53
+ path ? "Sitemap: #{path}" : ""
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,5 @@
1
+ module Middleman
2
+ module Robots
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,2 @@
1
+ require "middleman-robots"
2
+
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'middleman-robots/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "middleman-robots"
8
+ spec.version = Middleman::Robots::VERSION
9
+ spec.authors = ["yterajima"]
10
+ spec.email = ["terra@e2esound.com"]
11
+ spec.summary = %q{Create robots.txt when do 'build'.}
12
+ spec.description = %q{Create robots.txt when do 'build'.}
13
+ spec.homepage = "https://github.com/yterajima/middleman-robots"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+ spec.required_ruby_version = '>=1.9.3'
21
+
22
+ spec.add_runtime_dependency "middleman", "~>3.3"
23
+
24
+ spec.add_development_dependency "cucumber", "~> 1.3"
25
+ spec.add_development_dependency "aruba", "~> 0.6"
26
+ spec.add_development_dependency "bundler", "~> 1.5"
27
+ spec.add_development_dependency "rake", "~>10"
28
+ end
29
+
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: middleman-robots
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - yterajima
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: middleman
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: cucumber
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: aruba
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10'
83
+ description: Create robots.txt when do 'build'.
84
+ email:
85
+ - terra@e2esound.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".travis.yml"
92
+ - Gemfile
93
+ - LICENSE.txt
94
+ - README.md
95
+ - Rakefile
96
+ - features/robots.feature
97
+ - features/support/env.rb
98
+ - fixtures/basic-app/source/index.html.erb
99
+ - fixtures/basic-app/source/layouts/layout.erb
100
+ - fixtures/basic-app/source/stylesheets/all.css
101
+ - fixtures/basic-app/source/stylesheets/normalize.css
102
+ - lib/middleman-robots.rb
103
+ - lib/middleman-robots/extension.rb
104
+ - lib/middleman-robots/version.rb
105
+ - lib/middleman_extension.rb
106
+ - middleman-robots.gemspec
107
+ homepage: https://github.com/yterajima/middleman-robots
108
+ licenses:
109
+ - MIT
110
+ metadata: {}
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 1.9.3
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 2.2.2
128
+ signing_key:
129
+ specification_version: 4
130
+ summary: Create robots.txt when do 'build'.
131
+ test_files:
132
+ - features/robots.feature
133
+ - features/support/env.rb