middleman-robots 0.1.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: 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