jekyll 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of jekyll might be problematic. Click here for more details.

Files changed (64) hide show
  1. data/Gemfile +2 -0
  2. data/History.txt +20 -1
  3. data/README.textile +1 -1
  4. data/Rakefile +2 -0
  5. data/bin/jekyll +92 -2
  6. data/doc/output/book.html +574 -0
  7. data/doc/output/ch00-preface.asc +41 -0
  8. data/doc/output/ch01-quick-start.asc +153 -0
  9. data/doc/output/ch02-directory-layout.asc +90 -0
  10. data/doc/output/stylesheets/handbookish-quirks.css +0 -0
  11. data/doc/output/stylesheets/handbookish.css +231 -0
  12. data/doc/output/stylesheets/scribe-quirks.css +0 -0
  13. data/doc/output/stylesheets/scribe.css +177 -0
  14. data/features/post_data.feature +2 -2
  15. data/features/site_configuration.feature +7 -0
  16. data/features/support/env.rb +3 -0
  17. data/g.pl +48 -0
  18. data/jekyll.gemspec +35 -16
  19. data/lib/jekyll.rb +11 -4
  20. data/lib/jekyll/converters/markdown.rb +14 -2
  21. data/lib/jekyll/converters/textile.rb +2 -1
  22. data/lib/jekyll/convertible.rb +34 -19
  23. data/lib/jekyll/filters.rb +66 -1
  24. data/lib/jekyll/generators/pagination.rb +33 -7
  25. data/lib/jekyll/layout.rb +18 -10
  26. data/lib/jekyll/migrators/csv.rb +3 -3
  27. data/lib/jekyll/migrators/drupal.rb +12 -6
  28. data/lib/jekyll/migrators/enki.rb +49 -0
  29. data/lib/jekyll/migrators/marley.rb +0 -1
  30. data/lib/jekyll/migrators/mephisto.rb +17 -12
  31. data/lib/jekyll/migrators/mt.rb +26 -17
  32. data/lib/jekyll/migrators/posterous.rb +68 -0
  33. data/lib/jekyll/migrators/textpattern.rb +15 -8
  34. data/lib/jekyll/migrators/tumblr.rb +119 -0
  35. data/lib/jekyll/migrators/typo.rb +8 -6
  36. data/lib/jekyll/migrators/wordpress.rb +23 -16
  37. data/lib/jekyll/migrators/wordpressdotcom.rb +70 -0
  38. data/lib/jekyll/page.rb +56 -35
  39. data/lib/jekyll/plugin.rb +1 -0
  40. data/lib/jekyll/post.rb +25 -14
  41. data/lib/jekyll/site.rb +138 -80
  42. data/lib/jekyll/static_file.rb +12 -15
  43. data/lib/jekyll/tags/highlight.rb +5 -5
  44. data/output/stylesheets/scribe-quirks.css +0 -0
  45. data/output/stylesheets/scribe.css +177 -0
  46. data/test/helper.rb +3 -3
  47. data/test/source/_posts/2011-04-12-md-extension.md +7 -0
  48. data/test/source/_posts/2011-04-12-text-extension.text +0 -0
  49. data/test/suite.rb +3 -1
  50. data/test/test_configuration.rb +1 -1
  51. data/test/test_core_ext.rb +1 -1
  52. data/test/test_filters.rb +10 -1
  53. data/test/test_generated_site.rb +2 -2
  54. data/test/test_kramdown.rb +1 -1
  55. data/test/test_page.rb +1 -1
  56. data/test/test_pager.rb +1 -1
  57. data/test/test_post.rb +49 -2
  58. data/test/test_rdiscount.rb +1 -1
  59. data/test/test_redcarpet.rb +21 -0
  60. data/test/test_site.rb +1 -1
  61. data/test/test_tags.rb +14 -1
  62. metadata +104 -38
  63. data/lib/jekyll/albino.rb +0 -120
  64. data/lib/jekyll/migrators/wordpress.com.rb +0 -38
File without changes
@@ -0,0 +1,177 @@
1
+ /* ---------------------------------------------------------------------------
2
+ Bare AsciiDoc styles
3
+ Ryan Tomayko <r@tomayko.com>
4
+ --------------------------------------------------------------------------- */
5
+
6
+ body {
7
+ font-family:verdana,helvetica,arial,sans-serif;
8
+ font-size:81.25%; /* 13px */
9
+ line-height:1.538; /* 20px */
10
+ margin:40px auto 50px auto;
11
+ max-width:53.8461538462em; /* 790px */
12
+ color:#333;
13
+ }
14
+
15
+ em {
16
+ font-style:italic;
17
+ }
18
+
19
+ strong {
20
+ font-weight:bold;
21
+ color:#000;
22
+ }
23
+
24
+ tt {
25
+ font-family:consolas, 'lucida console', 'bitstream vera sans mono',
26
+ 'courier new', monospace;
27
+ color:#000;
28
+ }
29
+
30
+ p, ul, ol, dl {
31
+ margin:10px 0
32
+ }
33
+
34
+ dl {
35
+ margin-left:40px
36
+ }
37
+
38
+ dt {
39
+ font-weight:normal;
40
+ color:#000;
41
+ }
42
+
43
+ h1, h2, h3, h4, h5 {
44
+ font-family:'lucida grande',georgia,verdana,helvetica,arial,sans-serif;
45
+ font-weight:normal;
46
+ color:#000;
47
+ }
48
+
49
+ h1 {
50
+ font-size:40px;
51
+ line-height:1.428;
52
+ margin:20px 0;
53
+ }
54
+
55
+ h2 {
56
+ font-size:30px;
57
+ line-height:1.36363636; /* repeating, of course */
58
+ margin:60px 0 20px 0;
59
+ }
60
+
61
+ h2 + .sectionbody {}
62
+
63
+ h3 {
64
+ font-size:24px;
65
+ line-height:1.1;
66
+ margin:30px 0 10px 0;
67
+ }
68
+
69
+ h4 {
70
+ font-size:18px;
71
+ line-height:1.1;
72
+ margin:20px 0 5px 0;
73
+ }
74
+
75
+ h5 {
76
+ font-size:13px;
77
+ font-style:italic;
78
+ line-height:1.1;
79
+ }
80
+
81
+ #header {
82
+ text-align:center;
83
+ margin-bottom:30px;
84
+ }
85
+
86
+ #header h1 { margin-bottom:0 }
87
+
88
+ .title, .sidebar-title {
89
+ font-weight:normal;
90
+ color:#000;
91
+ margin-bottom:0;
92
+ }
93
+
94
+ .admonitionblock .title {
95
+ font-weight:bold;
96
+ }
97
+
98
+ .admonitionblock {
99
+ margin:30px 0px;
100
+ color:#555;
101
+ }
102
+
103
+ .admonitionblock td.icon {
104
+ width:30px;
105
+ padding-right:20px;
106
+ padding-left:20px;
107
+ text-transform:uppercase;
108
+ font-weight:bold;
109
+ color:#888;
110
+ }
111
+
112
+ .listingblock {
113
+ margin: 13px 0;
114
+ }
115
+
116
+ .listingblock .content {
117
+ border:1px solid silver;
118
+ background:#eee;
119
+ padding:5px;
120
+ }
121
+
122
+ .listingblock .content pre {
123
+ margin:0;
124
+ }
125
+
126
+ .literalblock .content {
127
+ margin-left:40px;
128
+ }
129
+
130
+ .verseblock .content {
131
+ white-space:pre
132
+ }
133
+
134
+ .sidebarblock .sidebar-content {
135
+ border:1px solid silver;
136
+ background:#FFFFEE;
137
+ padding:0 10px;
138
+ color:#222;
139
+ font-size:smaller;
140
+ line-height:1.5;
141
+ }
142
+
143
+ .sidebar-title {
144
+ margin:10px 0;
145
+ font-weight:bold;
146
+ color:#442;
147
+ }
148
+
149
+ .quoteblock-content {
150
+ font-style:italic;
151
+ color:#444;
152
+ margin-left:40px;
153
+ }
154
+
155
+ .quoteblock-content .attribution {
156
+ font-style:normal;
157
+ text-align:right;
158
+ color:#000;
159
+ }
160
+
161
+ .exampleblock-content *:first-child { margin-top:0 }
162
+ .exampleblock-content {
163
+ border-left:2px solid silver;
164
+ padding-left:8px;
165
+ }
166
+
167
+ #footer {
168
+ font-size:11px;
169
+ margin-top:40px;
170
+ border-top:1px solid silver;
171
+ color:#555;
172
+ }
173
+
174
+ #author {
175
+ color:#000;
176
+ text-transform:uppercase
177
+ }
@@ -31,10 +31,10 @@ Feature: Post data
31
31
  And I have the following post:
32
32
  | title | date | layout | content |
33
33
  | Star Wars | 3/27/2009 | simple | Luke, I am your father. |
34
- And I have a simple layout that contains "Post date: {{ page.date }}"
34
+ And I have a simple layout that contains "Post date: {{ page.date | date_to_string }}"
35
35
  When I run jekyll
36
36
  Then the _site directory should exist
37
- And I should see "Post date: Fri Mar 27" in "_site/2009/03/27/star-wars.html"
37
+ And I should see "Post date: 27 Mar 2009" in "_site/2009/03/27/star-wars.html"
38
38
 
39
39
  Scenario: Use post.id variable
40
40
  Given I have a _posts directory
@@ -55,6 +55,13 @@ Feature: Site configuration
55
55
  Then the _site directory should exist
56
56
  And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
57
57
 
58
+ Scenario: Use Redcarpet for markup
59
+ Given I have an "index.markdown" page that contains "[Google](http://google.com)"
60
+ And I have a configuration file with "markdown" set to "redcarpet"
61
+ When I run jekyll
62
+ Then the _site directory should exist
63
+ And I should see "<a href="http://google.com">Google</a>" in "_site/index.html"
64
+
58
65
  Scenario: Use Maruku for markup
59
66
  Given I have an "index.markdown" page that contains "[Google](http://google.com)"
60
67
  And I have a configuration file with "markdown" set to "maruku"
@@ -14,3 +14,6 @@ def run_jekyll(opts = {})
14
14
  command << " >> /dev/null 2>&1" if opts[:debug].nil?
15
15
  system command
16
16
  end
17
+
18
+ # work around "invalid option: --format" cucumber bug (see #296)
19
+ Test::Unit.run = true if RUBY_VERSION < '1.9'
data/g.pl ADDED
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/perl
2
+ #fetch Gravatars
3
+
4
+ use strict;
5
+ use warnings;
6
+
7
+ use LWP::Simple;
8
+ use Digest::MD5 qw(md5_hex);
9
+
10
+ my $size = 90;
11
+ my $output_dir = '.git/avatar';
12
+
13
+ die("no .git/ directory found in current path\n") unless -d '.git';
14
+
15
+ mkdir($output_dir) unless -d $output_dir;
16
+
17
+ open(GITLOG, q/git log --pretty=format:"%ae|%an" |/) or die("failed to read git-log: $!\n");
18
+
19
+ my %processed_authors;
20
+
21
+ while(<GITLOG>) {
22
+ chomp;
23
+ my($email, $author) = split(/\|/, $_);
24
+
25
+ next if $processed_authors{$author}++;
26
+
27
+ my $author_image_file = $output_dir . '/' . $author . '.png';
28
+
29
+ #skip images we have
30
+ next if -e $author_image_file;
31
+
32
+ #try and fetch image
33
+
34
+ my $grav_url = "http://www.gravatar.com/avatar/".md5_hex(lc $email)."?d=404&size=".$size;
35
+
36
+ warn "fetching image for '$author' $email ($grav_url)...\n";
37
+
38
+ my $rc = getstore($grav_url, $author_image_file);
39
+
40
+ sleep(1);
41
+
42
+ if($rc != 200) {
43
+ unlink($author_image_file);
44
+ next;
45
+ }
46
+ }
47
+
48
+ close GITLOG;
data/jekyll.gemspec CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.5'
5
5
 
6
6
  s.name = 'jekyll'
7
- s.version = '0.10.0'
8
- s.date = '2010-12-16'
7
+ s.version = '0.11.0'
8
+ s.date = '2011-07-10'
9
9
  s.rubyforge_project = 'jekyll'
10
10
 
11
11
  s.summary = "A simple, blog aware, static site generator."
@@ -18,31 +18,42 @@ Gem::Specification.new do |s|
18
18
  s.require_paths = %w[lib]
19
19
 
20
20
  s.executables = ["jekyll"]
21
- s.default_executable = 'jekyll'
22
21
 
23
22
  s.rdoc_options = ["--charset=UTF-8"]
24
23
  s.extra_rdoc_files = %w[README.textile LICENSE]
25
24
 
26
- s.add_runtime_dependency('liquid', [">= 1.9.0"])
27
- s.add_runtime_dependency('classifier', [">= 1.3.1"])
28
- s.add_runtime_dependency('directory_watcher', [">= 1.1.1"])
29
- s.add_runtime_dependency('maruku', [">= 0.5.9"])
30
-
31
- s.add_development_dependency('redgreen', [">= 4.2.1"])
32
- s.add_development_dependency('shoulda', [">= 4.2.1"])
33
- s.add_development_dependency('rr', [">= 4.2.1"])
34
- s.add_development_dependency('cucumber', [">= 4.2.1"])
35
- s.add_development_dependency('RedCloth', [">= 4.2.1"])
36
- s.add_development_dependency('kramdown', [">= 0.12.0"])
25
+ s.add_runtime_dependency('liquid', ">= 1.9.0")
26
+ s.add_runtime_dependency('classifier', ">= 1.3.1")
27
+ s.add_runtime_dependency('directory_watcher', ">= 1.1.1")
28
+ s.add_runtime_dependency('maruku', ">= 0.5.9")
29
+ s.add_runtime_dependency('kramdown', ">= 0.13.2")
30
+ s.add_runtime_dependency('albino', ">= 1.3.2")
37
31
 
32
+ s.add_development_dependency('redgreen', ">= 1.2.2")
33
+ s.add_development_dependency('shoulda', ">= 2.11.3")
34
+ s.add_development_dependency('rr', ">= 1.0.2")
35
+ s.add_development_dependency('cucumber', ">= 0.10.3")
36
+ s.add_development_dependency('RedCloth', ">= 4.2.1")
37
+ s.add_development_dependency('rdiscount', ">= 1.6.5")
38
+ s.add_development_dependency('redcarpet', ">= 1.9.0")
39
+
38
40
  # = MANIFEST =
39
41
  s.files = %w[
42
+ Gemfile
40
43
  History.txt
41
44
  LICENSE
42
45
  README.textile
43
46
  Rakefile
44
47
  bin/jekyll
45
48
  cucumber.yml
49
+ doc/output/book.html
50
+ doc/output/ch00-preface.asc
51
+ doc/output/ch01-quick-start.asc
52
+ doc/output/ch02-directory-layout.asc
53
+ doc/output/stylesheets/handbookish-quirks.css
54
+ doc/output/stylesheets/handbookish.css
55
+ doc/output/stylesheets/scribe-quirks.css
56
+ doc/output/stylesheets/scribe.css
46
57
  features/create_sites.feature
47
58
  features/embed_filters.feature
48
59
  features/markdown.feature
@@ -53,9 +64,9 @@ Gem::Specification.new do |s|
53
64
  features/site_data.feature
54
65
  features/step_definitions/jekyll_steps.rb
55
66
  features/support/env.rb
67
+ g.pl
56
68
  jekyll.gemspec
57
69
  lib/jekyll.rb
58
- lib/jekyll/albino.rb
59
70
  lib/jekyll/converter.rb
60
71
  lib/jekyll/converters/identity.rb
61
72
  lib/jekyll/converters/markdown.rb
@@ -69,13 +80,16 @@ Gem::Specification.new do |s|
69
80
  lib/jekyll/layout.rb
70
81
  lib/jekyll/migrators/csv.rb
71
82
  lib/jekyll/migrators/drupal.rb
83
+ lib/jekyll/migrators/enki.rb
72
84
  lib/jekyll/migrators/marley.rb
73
85
  lib/jekyll/migrators/mephisto.rb
74
86
  lib/jekyll/migrators/mt.rb
87
+ lib/jekyll/migrators/posterous.rb
75
88
  lib/jekyll/migrators/textpattern.rb
89
+ lib/jekyll/migrators/tumblr.rb
76
90
  lib/jekyll/migrators/typo.rb
77
- lib/jekyll/migrators/wordpress.com.rb
78
91
  lib/jekyll/migrators/wordpress.rb
92
+ lib/jekyll/migrators/wordpressdotcom.rb
79
93
  lib/jekyll/page.rb
80
94
  lib/jekyll/plugin.rb
81
95
  lib/jekyll/post.rb
@@ -83,6 +97,8 @@ Gem::Specification.new do |s|
83
97
  lib/jekyll/static_file.rb
84
98
  lib/jekyll/tags/highlight.rb
85
99
  lib/jekyll/tags/include.rb
100
+ output/stylesheets/scribe-quirks.css
101
+ output/stylesheets/scribe.css
86
102
  test/helper.rb
87
103
  test/source/.htaccess
88
104
  test/source/_includes/sig.markdown
@@ -111,6 +127,8 @@ Gem::Specification.new do |s|
111
127
  test/source/_posts/2010-01-09-time-override.textile
112
128
  test/source/_posts/2010-01-09-timezone-override.textile
113
129
  test/source/_posts/2010-01-16-override-data.textile
130
+ test/source/_posts/2011-04-12-md-extension.md
131
+ test/source/_posts/2011-04-12-text-extension.text
114
132
  test/source/about.html
115
133
  test/source/category/_posts/2008-9-23-categories.textile
116
134
  test/source/contacts.html
@@ -131,6 +149,7 @@ Gem::Specification.new do |s|
131
149
  test/test_pager.rb
132
150
  test/test_post.rb
133
151
  test/test_rdiscount.rb
152
+ test/test_redcarpet.rb
134
153
  test/test_site.rb
135
154
  test/test_tags.rb
136
155
  ]
data/lib/jekyll.rb CHANGED
@@ -19,10 +19,12 @@ require 'rubygems'
19
19
  require 'fileutils'
20
20
  require 'time'
21
21
  require 'yaml'
22
+ require 'English'
22
23
 
23
24
  # 3rd party
24
25
  require 'liquid'
25
26
  require 'maruku'
27
+ require 'albino'
26
28
 
27
29
  # internal requires
28
30
  require 'jekyll/core_ext'
@@ -32,7 +34,6 @@ require 'jekyll/layout'
32
34
  require 'jekyll/page'
33
35
  require 'jekyll/post'
34
36
  require 'jekyll/filters'
35
- require 'jekyll/albino'
36
37
  require 'jekyll/static_file'
37
38
  require 'jekyll/errors'
38
39
 
@@ -45,7 +46,7 @@ require_all 'jekyll/generators'
45
46
  require_all 'jekyll/tags'
46
47
 
47
48
  module Jekyll
48
- VERSION = '0.10.0'
49
+ VERSION = '0.11.0'
49
50
 
50
51
  # Default options. Overriden by values in _config.yml or command-line opts.
51
52
  # (Strings rather symbols used for compatability with YAML).
@@ -64,6 +65,9 @@ module Jekyll
64
65
  'pygments' => false,
65
66
  'markdown' => 'maruku',
66
67
  'permalink' => 'date',
68
+
69
+ 'markdown_ext' => 'markdown,mkd,mkdn,md',
70
+ 'textile_ext' => 'textile',
67
71
 
68
72
  'maruku' => {
69
73
  'use_tex' => false,
@@ -75,6 +79,9 @@ module Jekyll
75
79
  'rdiscount' => {
76
80
  'extensions' => []
77
81
  },
82
+ 'redcarpet' => {
83
+ 'extensions' => []
84
+ },
78
85
  'kramdown' => {
79
86
  'auto_ids' => true,
80
87
  'footnote_nr' => 1,
@@ -93,8 +100,8 @@ module Jekyll
93
100
  }
94
101
  }
95
102
 
96
- # Generate a Jekyll configuration Hash by merging the default options
97
- # with anything in _config.yml, and adding the given options on top.
103
+ # Public: Generate a Jekyll configuration Hash by merging the default
104
+ # options with anything in _config.yml, and adding the given options on top.
98
105
  #
99
106
  # override - A Hash of config directives that override any options in both
100
107
  # the defaults and the config file. See Jekyll::DEFAULTS for a
@@ -10,6 +10,15 @@ module Jekyll
10
10
  return if @setup
11
11
  # Set the Markdown interpreter (and Maruku self.config, if necessary)
12
12
  case @config['markdown']
13
+ when 'redcarpet'
14
+ begin
15
+ require 'redcarpet'
16
+ @redcarpet_extensions = @config['redcarpet']['extensions'].map { |e| e.to_sym }
17
+ rescue LoadError
18
+ STDERR.puts 'You are missing a library required for Markdown. Please run:'
19
+ STDERR.puts ' $ [sudo] gem install redcarpet'
20
+ raise FatalException.new("Missing dependency: redcarpet")
21
+ end
13
22
  when 'kramdown'
14
23
  begin
15
24
  require 'kramdown'
@@ -65,9 +74,10 @@ module Jekyll
65
74
  end
66
75
  @setup = true
67
76
  end
68
-
77
+
69
78
  def matches(ext)
70
- ext =~ /(markdown|mkdn?|md)/i
79
+ rgx = '(' + @config['markdown_ext'].gsub(',','|') +')'
80
+ ext =~ Regexp.new(rgx, Regexp::IGNORECASE)
71
81
  end
72
82
 
73
83
  def output_ext(ext)
@@ -77,6 +87,8 @@ module Jekyll
77
87
  def convert(content)
78
88
  setup
79
89
  case @config['markdown']
90
+ when 'redcarpet'
91
+ Redcarpet.new(content, *@redcarpet_extensions).to_html
80
92
  when 'kramdown'
81
93
  # Check for use of coderay
82
94
  if @config['kramdown']['use_coderay']