jekyll_generator 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +33 -0
  3. data/PostInstall.txt +7 -0
  4. data/README.rdoc +58 -0
  5. data/Rakefile +28 -0
  6. data/app_generators/jekyll_generator/USAGE +5 -0
  7. data/app_generators/jekyll_generator/jekyll_generator_generator.rb +87 -0
  8. data/app_generators/jekyll_generator/templates/atom.xml +27 -0
  9. data/app_generators/jekyll_generator/templates/config.yml +1 -0
  10. data/app_generators/jekyll_generator/templates/index.markdown +6 -0
  11. data/bin/jekyll_generator +19 -0
  12. data/features/development.feature +13 -0
  13. data/features/jekyll.feature +71 -0
  14. data/features/steps/common.rb +212 -0
  15. data/features/steps/env.rb +6 -0
  16. data/features/steps/jekyll.rb +24 -0
  17. data/jekyll_generators/plain_theme/plain_theme_generator.rb +3 -0
  18. data/jekyll_generators/plain_theme/templates/_layouts/default.html +61 -0
  19. data/jekyll_generators/plain_theme/templates/_layouts/post.html +86 -0
  20. data/jekyll_generators/plain_theme/templates/css/stylesheet.css +166 -0
  21. data/jekyll_generators/textmate_theme/templates/_layouts/default.html +72 -0
  22. data/jekyll_generators/textmate_theme/templates/_layouts/post.html +91 -0
  23. data/jekyll_generators/textmate_theme/templates/css/macromates.css +380 -0
  24. data/jekyll_generators/textmate_theme/textmate_theme_generator.rb +13 -0
  25. data/lib/jekyll_generator/theme_generator_base.rb +28 -0
  26. data/lib/jekyll_generator.rb +14 -0
  27. data/script/console +10 -0
  28. data/script/destroy +14 -0
  29. data/script/generate +14 -0
  30. data/spec/jekyll_generator_spec.rb +11 -0
  31. data/spec/spec.opts +1 -0
  32. data/spec/spec_helper.rb +10 -0
  33. data/tasks/rspec.rake +21 -0
  34. metadata +119 -0
@@ -0,0 +1,380 @@
1
+ html {
2
+ background: #1e1e1e;
3
+ }
4
+ body {
5
+ background: transparent url("http://macromates.com/images/site/bg_body") repeat-y 50% 0px;
6
+ /* font: 0.72em/170% "Lucida Grande", Verdana, Helvetica, sans-serif;*/
7
+ font: 12px "Lucida Grande", Verdana, Helvetica, sans-serif;
8
+ margin: 0;
9
+ padding: 0;
10
+ }
11
+ a[href] {
12
+ color: #525151;
13
+ }
14
+
15
+ #wrapper { /* IE workaround */
16
+ margin: 0 auto;
17
+ padding: 0;
18
+ width: 750px;
19
+ }
20
+ html>body #wrapper {
21
+ margin: 0 auto;
22
+ padding: 0;
23
+ width: auto;
24
+ max-width: 750px;
25
+ }
26
+
27
+ #header {
28
+ position: relative;
29
+ /* background: #4B055A url("http://macromates.com/images/site/bg_header") no-repeat 0px 0px;*/
30
+ background: #6F1A77;
31
+ border-bottom: 1px solid #861b90;
32
+ height: 113px;
33
+ }
34
+ #header h1 {
35
+ position: absolute;
36
+ left: 60px;
37
+ top: 40px;
38
+ width: 380px;
39
+ height: 50px;
40
+ cursor: pointer;
41
+ color: white;
42
+ }
43
+
44
+ #navigation {
45
+ background: #232323 url("http://macromates.com/images/site/bg_navigation") repeat-x 0px 0px;
46
+ border-top: 5px solid #6D0E79;
47
+ border-bottom: 1px solid #171717;
48
+ margin: 0;
49
+ padding: 0.5em 0;
50
+ width: 100%;
51
+ }
52
+ #navigation ul {
53
+ margin: 0;
54
+ padding: 0;
55
+ list-style: none;
56
+ }
57
+ #navigation li {
58
+ display: inline;
59
+ margin: 0;
60
+ padding: 0 0 0 25px;
61
+ text-shadow: 0px 2px 4px #000;
62
+ }
63
+ #navigation li a {
64
+ color: #5b5b5b;
65
+ text-decoration: none;
66
+ }
67
+
68
+ #intro #navi_intro a,
69
+ #blog #navi_blog a,
70
+ #toc #navi_manual a,
71
+ #chapter #navi_manual a,
72
+ #wiki #navi_wiki a,
73
+ #community #navi_community a,
74
+ #contact #navi_contact a,
75
+ #navigation li a:hover {
76
+ color: #fff;
77
+ }
78
+
79
+ #page_body {
80
+ margin: 0;
81
+ padding: 0;
82
+ position: relative;
83
+ overflow: hidden;
84
+ }
85
+
86
+ #content { /* IE workaround */
87
+ margin: 0;
88
+ padding: 25px;
89
+ width: 430px;
90
+ height: 584px; /* (64+2*20+2)*6 - 2 - 2*25 */
91
+ background: #fff;
92
+ }
93
+ html>body #content {
94
+ margin: 0;
95
+ padding: 25px;
96
+ width: auto;
97
+ height: auto;
98
+ max-width: 430px;
99
+ min-height: 584px; /* (64+2*20+2)*6 - 2 - 2*25 */
100
+ background: #fff;
101
+ }
102
+ #content :first-child {
103
+ margin-top: 0px;
104
+ }
105
+ #content :first-child + h1 {
106
+ margin-top: 0px;
107
+ }
108
+
109
+ #sidebar {
110
+ margin: 0;
111
+ padding: 0;
112
+ top: 0px;
113
+ left: 480px;
114
+ width: 270px;
115
+ background-color: #e8eaea;
116
+ position: absolute;
117
+ }
118
+ #sidebar .item {
119
+ color: #5b5b5b;
120
+ border-bottom: 2px solid #fff;
121
+ padding: 20px;
122
+ min-height: 64px;
123
+ }
124
+ #sidebar .item * {
125
+ margin: 0px;
126
+ }
127
+ #sidebar .item h4 {
128
+ margin-bottom: 1em;
129
+ font-size: 120%;
130
+ }
131
+ #sidebar .item p {
132
+ font-size: 90%;
133
+ }
134
+ #sidebar .item a {
135
+ text-decoration: none;
136
+ }
137
+ #sidebar .item a:hover {
138
+ text-decoration: underline;
139
+ }
140
+
141
+ #sidebar .item #download,
142
+ #sidebar .item #purchase,
143
+ #sidebar .item #manual,
144
+ #sidebar .item #screencasts,
145
+ #sidebar .item #book,
146
+ #sidebar .item #rss_feed,
147
+ #sidebar .item #tickets {
148
+ display: block;
149
+ overflow: hidden;
150
+ width: 64px;
151
+ height: 64px;
152
+ float: left;
153
+ margin: 0 10px 0 0;
154
+ padding: 0;
155
+ text-indent: -9999px;
156
+ }
157
+
158
+ #sidebar .item #download { background-image: url("http://macromates.com/images/site/download"); }
159
+ #sidebar .item #purchase { background-image: url("http://macromates.com/images/site/purchase"); }
160
+ #sidebar .item #manual { background-image: url("http://macromates.com/images/site/pdf"); }
161
+ #sidebar .item #screencasts { background-image: url("http://macromates.com/images/site/quicktime"); }
162
+ #sidebar .item #book { background-image: url("http://macromates.com/images/site/book"); }
163
+ #sidebar .item #rss_feed { background-image: url("http://macromates.com/images/site/rss"); }
164
+ #sidebar .item #tickets { background-image: url("http://macromates.com/images/site/ratings"); }
165
+
166
+
167
+ #footer {
168
+ position: relative;
169
+ margin: 0;
170
+ padding: 0.75em 25px 0.75em 25px;
171
+ min-height: 1em;
172
+ clear: both;
173
+ color: #b5b5b5;
174
+ background: #2E2E2E;
175
+ }
176
+ #footer * {
177
+ margin: 0;
178
+ padding: 0;
179
+ }
180
+ #footer a {
181
+ color: #b5b5b5;
182
+ text-decoration: none;
183
+ }
184
+ #footer a:hover {
185
+ color: #2E2E2E;
186
+ background: #b5b5b5;
187
+ text-decoration: none;
188
+ }
189
+ #footer .left {
190
+ float: left;
191
+ }
192
+ #footer .right {
193
+ float: right;
194
+ }
195
+
196
+ /* ========== */
197
+ /* = Teaser = */
198
+ /* ========== */
199
+
200
+ #teaser #content:first-child {
201
+ margin-top: -25px;
202
+ }
203
+
204
+ #teaser #content { /* IE workaround */
205
+ width: 700px;
206
+ }
207
+ html>body#teaser #content {
208
+ width: auto;
209
+ max-width: 700px;
210
+ }
211
+ #teaser #sidebar {
212
+ display: none;
213
+ }
214
+
215
+ #teaser_bar {
216
+ background: #2E2E2E url("http://macromates.com/images/site/bg_teaser.gif") no-repeat 100% 0px;
217
+ color: #b5b5b5;
218
+ margin: -25px -25px 25px -25px;
219
+ padding: 10px 0 0 0;
220
+ /* float: left;*/
221
+ /* width: 100%;*/
222
+ /* overflow: hidden;*/
223
+ }
224
+ #teaser_bar .teaseritem {
225
+ float: left;
226
+ width: 29%;
227
+ padding: 40px 0px 20px 25px;
228
+ text-shadow: 2px 2px 2px #000;
229
+ /* background-color: #DDD;*/
230
+ }
231
+ #teaser_bar h2 {
232
+ color: #6b6b6b;
233
+ font-size: 280%;
234
+ font-weight: normal;
235
+ margin: 20px 0 -5px 25px;
236
+ text-shadow: 2px 2px 2px #000;
237
+ }
238
+ #teaser_bar h3 {
239
+ color: #fff;
240
+ font-size: 140%;
241
+ font-weight: normal;
242
+ }
243
+ #teaser_bar .teaseritem a {
244
+ color: #b5b5b5;
245
+ text-decoration: none;
246
+ }
247
+ #teaser_bar .teaseritem a:hover {
248
+ color: #ffffff;
249
+ text-decoration: none;
250
+ }
251
+
252
+ /* ======================== */
253
+ /* = Page Specific Styles = */
254
+ /* ======================== */
255
+
256
+ #intro #content > p:first-child {
257
+ font-weight: bold;
258
+ color: #7b7b7b;
259
+ }
260
+
261
+ #intro #content img#project_window {
262
+ float: right;
263
+ margin-left: 10px;
264
+ }
265
+ #intro #content img#theme_editor {
266
+ float: left;
267
+ margin-right: 10px;
268
+ }
269
+
270
+ #intro #content ul a {
271
+ text-decoration: none;
272
+ }
273
+ #intro #content ul a:hover {
274
+ text-decoration: underline;
275
+ }
276
+
277
+ .caution {
278
+ margin: 25px;
279
+ border: 1px solid #cccbba;
280
+ padding: 10px;
281
+ background: #f0f0f0 url("http://macromates.com/images/site/caution') no-repeat 21px center;
282
+ }
283
+ .caution ul {
284
+ margin: 0;
285
+ padding: 0 0 0 64px;
286
+ list-style-type: none;
287
+ font-size: 85%;
288
+ }
289
+ .caution li {
290
+ margin: 0;
291
+ }
292
+ .caution li + li {
293
+ margin-top: 1em;
294
+ }
295
+ .caution li p {
296
+ margin: 0;
297
+ }
298
+
299
+ .textbox {
300
+ padding: 1em 40px;
301
+ }
302
+
303
+ .graybox {
304
+ border-top: 1px solid #919699;
305
+ border-left: 1px solid #919699;
306
+ }
307
+ .graybox th {
308
+ background: #E2E2E2;
309
+ border-bottom: 1px solid #919699;
310
+ border-right: 1px solid #919699;
311
+ /* font-size: 12px;*/
312
+ font-weight: bold;
313
+ padding: 4px 8px 4px 8px;
314
+ text-align: left;
315
+ }
316
+ .graybox td {
317
+ border-bottom: 1px solid #919699;
318
+ border-right: 1px solid #919699;
319
+ /* font-size: 12px;*/
320
+ padding: 8px;
321
+ vertical-align: top;
322
+ }
323
+ .graybox p {
324
+ margin: 0;
325
+ }
326
+ .graybox p + p {
327
+ margin-top: 1em;
328
+ }
329
+
330
+ /* ========================== */
331
+ /* = Styling of user quotes = */
332
+ /* ========================== */
333
+
334
+ #quotes blockquote {
335
+ font-style: italic;
336
+ margin: 20px 20px 0 20px;
337
+ }
338
+ #quotes blockquote p {
339
+ margin: 0 0 0 0;
340
+ }
341
+ #quotes .attribution:before {
342
+ content: "— ";
343
+ }
344
+ #quotes .attribution {
345
+ color: gray;
346
+ margin: 0.5em 0 0 40px;
347
+ font-size: 90%;
348
+ }
349
+
350
+ /* ========================= */
351
+ /* = Should be in wiki.css = */
352
+ /* ========================= */
353
+
354
+ #wiki .page_group {
355
+ margin: 0;
356
+ font-size: 80%;
357
+ color: #999887;
358
+ }
359
+ #wiki .page_group a {
360
+ color: #999887;
361
+ text-decoration: none;
362
+ }
363
+ #wiki .page_group a:hover {
364
+ text-decoration: underline;
365
+ }
366
+
367
+ #wiki .page_title {
368
+ margin: 0 0 1em 0;
369
+ }
370
+ #wiki .page_title a {
371
+ color: #000;
372
+ text-decoration: none;
373
+ }
374
+ #wiki .page_title a:hover {
375
+ text-decoration: underline;
376
+ }
377
+
378
+ #wiki #sidebar ul {
379
+ margin-bottom: 0.5em;
380
+ }
@@ -0,0 +1,13 @@
1
+ require File.dirname(__FILE__) + '/../../lib/jekyll_generator'
2
+ class TextmateThemeGenerator < JekyllGenerator::ThemeGeneratorBase
3
+ def manifest
4
+ record do |m|
5
+ # Ensure appropriate folder(s) exists
6
+ m.directory '_layouts'
7
+ m.directory 'css'
8
+
9
+ m.template_copy_each ["default.html", "post.html"], "_layouts"
10
+ m.file_copy_each ["macromates.css"], "css"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ class JekyllGenerator::ThemeGeneratorBase < RubiGen::Base
2
+ # these values are automatically setup by the config.yml file
3
+ # generated from jekyll_generator_generator.rb
4
+ # based on options/defaults
5
+ attr_reader :author, :email, :title, :name, :theme, :github_user, :header_color
6
+ attr_reader :hypenated_name
7
+
8
+ def initialize(runtime_args, runtime_options = {})
9
+ super
10
+ config_options = YAML.load(File.read(File.join(destination_root, "config.yml")))
11
+ config_options.each do |key, value|
12
+ self.send(:instance_variable_set, "@#{key}", value)
13
+ end
14
+
15
+ @hypenated_name = @name.gsub(/_/, '-')
16
+ end
17
+
18
+ def manifest
19
+ record do |m|
20
+ # Ensure appropriate folder(s) exists
21
+ m.directory '_layouts'
22
+ m.directory 'css'
23
+
24
+ m.template_copy_each ["default.html", "post.html"], "_layouts"
25
+ m.template_copy_each ["stylesheet.css"], "css"
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,14 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ module JekyllGenerator
5
+ VERSION = '1.0.0'
6
+ end
7
+
8
+ begin
9
+ require 'rubigen'
10
+ rescue LoadError
11
+ require 'rubygems'
12
+ require 'rubigen'
13
+ end
14
+ require 'jekyll_generator/theme_generator_base'
data/script/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/jekyll_generator.rb'}"
9
+ puts "Loading jekyll_generator gem"
10
+ exec "#{irb} #{libs} --simple-prompt"
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/generate'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ # Time to add your specs!
4
+ # http://rspec.info/
5
+ describe "Place your specs here" do
6
+
7
+ it "find this spec in spec directory" do
8
+ violated "Be sure to write your specs"
9
+ end
10
+
11
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,10 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ gem 'rspec'
6
+ require 'spec'
7
+ end
8
+
9
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
10
+ require 'jekyll_generator'
data/tasks/rspec.rake ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'spec'
6
+ end
7
+ begin
8
+ require 'spec/rake/spectask'
9
+ rescue LoadError
10
+ puts <<-EOS
11
+ To use rspec for testing you must install rspec gem:
12
+ gem install rspec
13
+ EOS
14
+ exit(0)
15
+ end
16
+
17
+ desc "Run the specs under spec/models"
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_opts = ['--options', "spec/spec.opts"]
20
+ t.spec_files = FileList['spec/**/*_spec.rb']
21
+ end
metadata ADDED
@@ -0,0 +1,119 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll_generator
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Dr Nic Williams
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-21 00:00:00 +10:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rubigen
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.4.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: newgem
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.1
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: hoe
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.8.0
44
+ version:
45
+ description: A nice generator for a Jekyll website including Disqus comments integration. Probably tightly integrated to github and Github Pages. Will be relaxed later.
46
+ email:
47
+ - drnicwilliams@gmail.com
48
+ executables:
49
+ - jekyll_generator
50
+ extensions: []
51
+
52
+ extra_rdoc_files:
53
+ - History.txt
54
+ - Manifest.txt
55
+ - PostInstall.txt
56
+ - README.rdoc
57
+ files:
58
+ - History.txt
59
+ - Manifest.txt
60
+ - PostInstall.txt
61
+ - README.rdoc
62
+ - Rakefile
63
+ - app_generators/jekyll_generator/USAGE
64
+ - app_generators/jekyll_generator/jekyll_generator_generator.rb
65
+ - app_generators/jekyll_generator/templates/atom.xml
66
+ - app_generators/jekyll_generator/templates/config.yml
67
+ - app_generators/jekyll_generator/templates/index.markdown
68
+ - bin/jekyll_generator
69
+ - features/development.feature
70
+ - features/jekyll.feature
71
+ - features/steps/common.rb
72
+ - features/steps/env.rb
73
+ - features/steps/jekyll.rb
74
+ - jekyll_generators/plain_theme/plain_theme_generator.rb
75
+ - jekyll_generators/plain_theme/templates/_layouts/default.html
76
+ - jekyll_generators/plain_theme/templates/_layouts/post.html
77
+ - jekyll_generators/plain_theme/templates/css/stylesheet.css
78
+ - jekyll_generators/textmate_theme/templates/_layouts/default.html
79
+ - jekyll_generators/textmate_theme/templates/_layouts/post.html
80
+ - jekyll_generators/textmate_theme/templates/css/macromates.css
81
+ - jekyll_generators/textmate_theme/textmate_theme_generator.rb
82
+ - lib/jekyll_generator.rb
83
+ - lib/jekyll_generator/theme_generator_base.rb
84
+ - script/console
85
+ - script/destroy
86
+ - script/generate
87
+ - spec/jekyll_generator_spec.rb
88
+ - spec/spec.opts
89
+ - spec/spec_helper.rb
90
+ - tasks/rspec.rake
91
+ has_rdoc: true
92
+ homepage: http://drnic.github.com/jekyll_generator
93
+ post_install_message: PostInstall.txt
94
+ rdoc_options:
95
+ - --main
96
+ - README.rdoc
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: "0"
104
+ version:
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: "0"
110
+ version:
111
+ requirements: []
112
+
113
+ rubyforge_project: drnicutilities
114
+ rubygems_version: 1.3.1
115
+ signing_key:
116
+ specification_version: 2
117
+ summary: A nice generator for a Jekyll website including Disqus comments integration
118
+ test_files: []
119
+