From b5d4a9614915b9e906c1b2fb753f28ea538ec81d Mon Sep 17 00:00:00 2001 From: John Piasetzki Date: Thu, 23 May 2013 22:06:15 -0400 Subject: [PATCH 01/85] Refactored site.rb, I tried to clean a bunch of the methods code climate was complaining about --- lib/jekyll/site.rb | 60 +++++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 38 deletions(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index e8b65135..c572cf34 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -138,34 +138,19 @@ module Jekyll entries = Dir.chdir(base) { filter_entries(Dir.entries('.')) } self.read_posts(dir) - - if self.show_drafts - self.read_drafts(dir) - end - + self.read_drafts(dir) if self.show_drafts self.posts.sort! - - # limit the posts if :limit_posts option is set - if limit_posts > 0 - limit = self.posts.length < limit_posts ? self.posts.length : limit_posts - self.posts = self.posts[-limit, limit] - end + limit_posts! if limit_posts > 0 # limit the posts if :limit_posts option is set entries.each do |f| f_abs = File.join(base, f) - f_rel = File.join(dir, f) if File.directory?(f_abs) - next if self.dest.sub(/\/$/, '') == f_abs - read_directories(f_rel) + f_rel = File.join(dir, f) + read_directories(f_rel) unless self.dest.sub(/\/$/, '') == f_abs + elsif has_yaml_header?(f_abs) + pages << Page.new(self, self.source, dir, f) else - first3 = File.open(f_abs) { |fd| fd.read(3) } - if first3 == "---" - # file appears to have a YAML header so process it as a page - pages << Page.new(self, self.source, dir, f) - else - # otherwise treat it as a static file - static_files << StaticFile.new(self, self.source, dir, f) - end + static_files << StaticFile.new(self, self.source, dir, f) end end end @@ -255,14 +240,8 @@ module Jekyll # files to be written files = Set.new - self.posts.each do |post| - files << post.destination(self.dest) - end - self.pages.each do |page| - files << page.destination(self.dest) - end - self.static_files.each do |sf| - files << sf.destination(self.dest) + [self.posts, self.pages, self.static_files].flatten.each do |item| + files << item.destination(self.dest) end # adding files' parent directories @@ -290,14 +269,8 @@ module Jekyll # # Returns nothing. def write - self.posts.each do |post| - post.write(self.dest) - end - self.pages.each do |page| - page.write(self.dest) - end - self.static_files.each do |sf| - sf.write(self.dest) + [self.posts, self.pages, self.static_files].flatten.each do |item| + item.write(self.dest) end end @@ -430,5 +403,16 @@ module Jekyll @deprecated_relative_permalinks = true end end + + private + + def has_yaml_header?(file) + "---" == File.open(file) { |fd| fd.read(3) } + end + + def limit_posts! + limit = self.posts.length < limit_posts ? self.posts.length : limit_posts + self.posts = self.posts[-limit, limit] + end end end From 13fd798ec0a62cdef8cbe62d68488d8d5797ff52 Mon Sep 17 00:00:00 2001 From: John Piasetzki Date: Sun, 26 May 2013 16:15:24 -0400 Subject: [PATCH 02/85] Extracted each method --- lib/jekyll/site.rb | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index c572cf34..1542f0ef 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -240,9 +240,7 @@ module Jekyll # files to be written files = Set.new - [self.posts, self.pages, self.static_files].flatten.each do |item| - files << item.destination(self.dest) - end + site_files_each { |item| files << item.destination(self.dest) } # adding files' parent directories dirs = Set.new @@ -269,9 +267,7 @@ module Jekyll # # Returns nothing. def write - [self.posts, self.pages, self.static_files].flatten.each do |item| - item.write(self.dest) - end + site_files_each { |item| item.write(self.dest) } end # Construct a Hash of Posts indexed by the specified Post attribute. @@ -404,6 +400,14 @@ module Jekyll end end + def site_files_each + %w(posts pages static_files).each do |type| + self.send(type).each do |item| + yield item + end + end + end + private def has_yaml_header?(file) From e1ecae250c6dbf67f4226552e7ebb5742981d1e4 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 12 Jul 2013 10:52:00 +0200 Subject: [PATCH 03/85] Site#site_files_each ~> Site#each_site_file --- lib/jekyll/site.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index cb60222f..f7a8c379 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -240,7 +240,7 @@ module Jekyll # files to be written files = Set.new - site_files_each { |item| files << item.destination(self.dest) } + each_site_file { |item| files << item.destination(self.dest) } # adding files' parent directories dirs = Set.new @@ -271,7 +271,7 @@ module Jekyll # # Returns nothing. def write - site_files_each { |item| item.write(self.dest) } + each_site_file { |item| item.write(self.dest) } end # Construct a Hash of Posts indexed by the specified Post attribute. @@ -404,7 +404,7 @@ module Jekyll end end - def site_files_each + def each_site_file %w(posts pages static_files).each do |type| self.send(type).each do |item| yield item From 86fd1c5dd4bcba815adaca71b90872e9ae4cec39 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 12 Jul 2013 10:52:28 +0200 Subject: [PATCH 04/85] Update history to reflect merge of #1144. --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index b8e72d26..1174daf1 100644 --- a/History.markdown +++ b/History.markdown @@ -27,6 +27,7 @@ * Restrict activesupport dependency to pre-4.0.0 to maintain compatibility with `<= 1.9.2` * Include/exclude deprecation handling simplification (#1284) * Convert README to Markdown. (#1267) + * Refactor Jekyll::Site (#1144) ### Site Enhancements * Add "News" section for release notes, along with an RSS feed (#1093, #1285, #1286) From 456ac01890d532ceefdfa99e94983971f554f894 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 13 May 2013 21:06:56 +0200 Subject: [PATCH 05/85] Crash if a config file isn't there. If a configuration file is specified via the command line but does not exist, fail loudly and crash to preserve the current state. Do not fail if the requested file is the default configuration file, _config.yml. In that case, fall back on the defaults. --- lib/jekyll/configuration.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/jekyll/configuration.rb b/lib/jekyll/configuration.rb index c428c1a6..69323dce 100644 --- a/lib/jekyll/configuration.rb +++ b/lib/jekyll/configuration.rb @@ -102,7 +102,10 @@ module Jekyll def config_files(override) # Get configuration from /_config.yml or / config_files = override.delete('config') - config_files = File.join(source(override), "_config.yml") if config_files.to_s.empty? + if config_files.to_s.empty? + config_files = File.join(source(override), "_config.yml") + @default_config_file = true + end config_files = [config_files] unless config_files.is_a? Array config_files end @@ -117,6 +120,14 @@ module Jekyll raise "Configuration file: (INVALID) #{file}".yellow if !next_config.is_a?(Hash) Jekyll.logger.info "Configuration file:", file next_config + rescue SystemCallError + if @default_config_file + Jekyll::Logger.warn "Configuration file:", "none" + {} + else + Jekyll::Logger.error "Fatal:", "The configuration file '#{file}' could not be found." + exit(1) + end end # Public: Read in a list of configuration files and merge with this hash @@ -133,9 +144,6 @@ module Jekyll new_config = read_config_file(config_file) configuration = configuration.deep_merge(new_config) end - rescue SystemCallError - # Errno:ENOENT = file not found - Jekyll.logger.warn "Configuration file:", "none" rescue => err Jekyll.logger.warn "WARNING:", "Error reading configuration. " + "Using defaults (and options)." From a7efb86d5c9289d0d0307d5b8c10e036c3a18d7b Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 12 Jul 2013 11:56:22 +0200 Subject: [PATCH 06/85] Throw ArgumentError when there's an invalid config file, and catch only that. --- lib/jekyll/configuration.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/jekyll/configuration.rb b/lib/jekyll/configuration.rb index 69323dce..a4894237 100644 --- a/lib/jekyll/configuration.rb +++ b/lib/jekyll/configuration.rb @@ -117,16 +117,16 @@ module Jekyll # Returns this configuration, overridden by the values in the file def read_config_file(file) next_config = YAML.safe_load_file(file) - raise "Configuration file: (INVALID) #{file}".yellow if !next_config.is_a?(Hash) + raise ArgumentError.new("Configuration file: (INVALID) #{file}".yellow) if !next_config.is_a?(Hash) Jekyll.logger.info "Configuration file:", file next_config rescue SystemCallError if @default_config_file - Jekyll::Logger.warn "Configuration file:", "none" + Jekyll.logger.warn "Configuration file:", "none" {} else - Jekyll::Logger.error "Fatal:", "The configuration file '#{file}' could not be found." - exit(1) + Jekyll.logger.error "Fatal:", "The configuration file '#{file}' could not be found." + abort end end From 253fc8c506b47f901bbc018720b7e86329dffbcf Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 12 Jul 2013 12:22:06 +0200 Subject: [PATCH 07/85] Raise LoadError if the file doesn't exist but do not catch it. :) --- lib/jekyll/configuration.rb | 4 ++-- test/test_configuration.rb | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/configuration.rb b/lib/jekyll/configuration.rb index a4894237..5b5dda4b 100644 --- a/lib/jekyll/configuration.rb +++ b/lib/jekyll/configuration.rb @@ -126,7 +126,7 @@ module Jekyll {} else Jekyll.logger.error "Fatal:", "The configuration file '#{file}' could not be found." - abort + raise LoadError end end @@ -144,7 +144,7 @@ module Jekyll new_config = read_config_file(config_file) configuration = configuration.deep_merge(new_config) end - rescue => err + rescue ArgumentError => err Jekyll.logger.warn "WARNING:", "Error reading configuration. " + "Using defaults (and options)." $stderr.puts "#{err}" diff --git a/test/test_configuration.rb b/test/test_configuration.rb index 0f197643..0e6372b0 100644 --- a/test/test_configuration.rb +++ b/test/test_configuration.rb @@ -82,6 +82,7 @@ class TestConfiguration < Test::Unit::TestCase context "loading configuration" do setup do @path = File.join(Dir.pwd, '_config.yml') + @user_config = File.join(Dir.pwd, "my_config_file.yml") end should "fire warning with no _config.yml" do @@ -102,6 +103,14 @@ class TestConfiguration < Test::Unit::TestCase mock($stderr).puts("Configuration file: (INVALID) #{@path}".yellow) assert_equal Jekyll::Configuration::DEFAULTS, Jekyll.configuration({}) end + + should "fire warning when user-specified config file isn't there" do + mock(YAML).safe_load_file(@user_config) { raise SystemCallError, "No such file or directory - #{@user_config}" } + mock($stderr).puts(("Fatal: ".rjust(20) + "The configuration file '#{@user_config}' could not be found.").red) + assert_raises LoadError do + Jekyll.configuration({'config' => [@user_config]}) + end + end end context "loading config from external file" do setup do From 9f867c8014f079f979b05aa9e294e3e94ef705d2 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 12 Jul 2013 18:29:04 +0200 Subject: [PATCH 08/85] Update history to reflect merge of #1098 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 1174daf1..f411f6f3 100644 --- a/History.markdown +++ b/History.markdown @@ -14,6 +14,7 @@ sites. (#1247) * In the generated site, remove files that will be replaced by a directory (#1118) + * Fail loudly if a user-specified configuration file doesn't exist (#1098) ### Bug Fixes * Fix pagination in subdirectories. (#1198) From 015ace6773efb9b51824ec2c5377241bdc88fbbc Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 13 Jul 2013 16:18:20 +0200 Subject: [PATCH 09/85] Shuffle around rendering of extracted excerpt so it can be liquified. --- lib/jekyll.rb | 1 + lib/jekyll/excerpt.rb | 140 ++++++++++++++++++++++++++++++++++++++++++ lib/jekyll/post.rb | 51 ++------------- 3 files changed, 145 insertions(+), 47 deletions(-) create mode 100644 lib/jekyll/excerpt.rb diff --git a/lib/jekyll.rb b/lib/jekyll.rb index 684d5eb1..06242de9 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -36,6 +36,7 @@ require 'jekyll/convertible' require 'jekyll/layout' require 'jekyll/page' require 'jekyll/post' +require 'jekyll/excerpt' require 'jekyll/draft' require 'jekyll/filters' require 'jekyll/static_file' diff --git a/lib/jekyll/excerpt.rb b/lib/jekyll/excerpt.rb new file mode 100644 index 00000000..4d704661 --- /dev/null +++ b/lib/jekyll/excerpt.rb @@ -0,0 +1,140 @@ +module Jekyll + class Excerpt + + # Internal: Extract excerpt from the content + # + # By default excerpt is your first paragraph of a post: everything before + # the first two new lines: + # + # --- + # title: Example + # --- + # + # First paragraph with [link][1]. + # + # Second paragraph. + # + # [1]: http://example.com/ + # + # This is fairly good option for Markdown and Textile files. But might cause + # problems for HTML posts (which is quite unusual for Jekyll). If default + # excerpt delimiter is not good for you, you might want to set your own via + # configuration option `excerpt_separator`. For example, following is a good + # alternative for HTML posts: + # + # # file: _config.yml + # excerpt_separator: "" + # + # Notice that all markdown-style link references will be appended to the + # excerpt. So the example post above will have this excerpt source: + # + # First paragraph with [link][1]. + # + # [1]: http://example.com/ + # + # Excerpts are rendered same time as content is rendered. + # + # Returns excerpt String + + include Convertible + + attr_accessor :post + attr_accessor :content, :output, :ext + + # Initialize this Post instance. + # + # site - The Site. + # base - The String path to the dir containing the post file. + # name - The String filename of the post file. + # + # Returns the new Post. + def initialize(post) + @post = post + @content = extract_excerpt(post.content) + end + + %w[site name data ext].each do |meth| + define_method(meth) do + post.send(meth) + end + end + + def path + File.join(post.path, "#excerpt") + end + + def include?(something) + (output && output.include?(something)) || content.include?(something) + end + + # The UID for this post (useful in feeds). + # e.g. /2008/11/05/my-awesome-post + # + # Returns the String UID. + def id + File.join(post.dir, post.slug, "#excerpt") + end + + # Convert this post into a Hash for use in Liquid templates. + # + # Returns the representative Hash. + def to_liquid + further_data = Hash[ATTRIBUTES_FOR_LIQUID.map { |attribute| + [attribute, post.send(attribute)] + }] + further_data + end + + def to_s + output || content + end + + # Returns the shorthand String identifier of this Post. + def inspect + "" + end + + protected + + # Internal: Extract excerpt from the content + # + # By default excerpt is your first paragraph of a post: everything before + # the first two new lines: + # + # --- + # title: Example + # --- + # + # First paragraph with [link][1]. + # + # Second paragraph. + # + # [1]: http://example.com/ + # + # This is fairly good option for Markdown and Textile files. But might cause + # problems for HTML posts (which is quite unusual for Jekyll). If default + # excerpt delimiter is not good for you, you might want to set your own via + # configuration option `excerpt_separator`. For example, following is a good + # alternative for HTML posts: + # + # # file: _config.yml + # excerpt_separator: "" + # + # Notice that all markdown-style link references will be appended to the + # excerpt. So the example post above will have this excerpt source: + # + # First paragraph with [link][1]. + # + # [1]: http://example.com/ + # + # Excerpts are rendered same time as content is rendered. + # + # Returns excerpt String + def extract_excerpt(post_content) + separator = site.config['excerpt_separator'] + head, _, tail = post_content.partition(separator) + + "" << head << "\n\n" << tail.scan(/^\[[^\]]+\]:.+$/).join("\n") + end + end +end diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index c478adb5..1b70e31e 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -109,7 +109,7 @@ module Jekyll if self.data.has_key? 'excerpt' self.data['excerpt'] else - self.extracted_excerpt + self.extracted_excerpt.to_s end end @@ -158,14 +158,6 @@ module Jekyll raise FatalException.new("Post #{name} does not have a valid date.") end - # Transform the contents and excerpt based on the content type. - # - # Returns nothing. - def transform - super - self.extracted_excerpt = converter.convert(self.extracted_excerpt) - end - # The generated directory into which the post will be placed # upon generation. This is derived from the permalink or, if # permalink is absent, set to the default date @@ -260,6 +252,8 @@ module Jekyll "page" => self.to_liquid }.deep_merge(site_payload) + self.extracted_excerpt.do_layout(payload, layouts) + do_layout(payload, layouts) end @@ -311,45 +305,8 @@ module Jekyll protected - # Internal: Extract excerpt from the content - # - # By default excerpt is your first paragraph of a post: everything before - # the first two new lines: - # - # --- - # title: Example - # --- - # - # First paragraph with [link][1]. - # - # Second paragraph. - # - # [1]: http://example.com/ - # - # This is fairly good option for Markdown and Textile files. But might cause - # problems for HTML posts (which is quite unusual for Jekyll). If default - # excerpt delimiter is not good for you, you might want to set your own via - # configuration option `excerpt_separator`. For example, following is a good - # alternative for HTML posts: - # - # # file: _config.yml - # excerpt_separator: "" - # - # Notice that all markdown-style link references will be appended to the - # excerpt. So the example post above will have this excerpt source: - # - # First paragraph with [link][1]. - # - # [1]: http://example.com/ - # - # Excerpts are rendered same time as content is rendered. - # - # Returns excerpt String def extract_excerpt - separator = self.site.config['excerpt_separator'] - head, _, tail = self.content.partition(separator) - - "" << head << "\n\n" << tail.scan(/^\[[^\]]+\]:.+$/).join("\n") + Jekyll::Excerpt.new(self) end end end From e78d5dd5cb5b6552c2a1560d55598d677935c385 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 13 Jul 2013 16:18:38 +0200 Subject: [PATCH 10/85] Will now have to render the post, not just transform it. --- test/test_post.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test_post.rb b/test/test_post.rb index 903e48c5..e38af0fa 100644 --- a/test/test_post.rb +++ b/test/test_post.rb @@ -267,9 +267,10 @@ class TestPost < Test::Unit::TestCase context "#excerpt" do setup do file = "2013-01-02-post-excerpt.markdown" + @post = setup_post(file) @post.process(file) @post.read_yaml(@source, file) - @post.transform + do_render(@post) end should "return first paragraph by default" do From 21b52bbf70b1c4acb74fb80e0df0f89ae54e1e85 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Sat, 13 Jul 2013 20:40:37 -0500 Subject: [PATCH 11/85] Update history to reflect merge of #1302 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index f411f6f3..31276659 100644 --- a/History.markdown +++ b/History.markdown @@ -3,6 +3,7 @@ ### Major Enhancements * Add 'docs' subcommand to read Jekyll's docs when offline. (#1046) * Support passing parameters to templates in 'include' tag (#1204) + * Add support for Liquid tags to post excerpts (#1302) ### Minor Enhancements * Search the hierarchy of pagination path up to site root to determine template page for From d815c12571e051f5031f7fd855d41ff1e7fa23e2 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 04:22:34 +0200 Subject: [PATCH 12/85] Don't try to be smarter than the computer. Pass Excerpt#to_liquid to its parent post. --- lib/jekyll/excerpt.rb | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/jekyll/excerpt.rb b/lib/jekyll/excerpt.rb index 4d704661..16584963 100644 --- a/lib/jekyll/excerpt.rb +++ b/lib/jekyll/excerpt.rb @@ -79,10 +79,7 @@ module Jekyll # # Returns the representative Hash. def to_liquid - further_data = Hash[ATTRIBUTES_FOR_LIQUID.map { |attribute| - [attribute, post.send(attribute)] - }] - further_data + post.to_liquid end def to_s From 774bf07380c3c84fc535ecea1dbd236048b96300 Mon Sep 17 00:00:00 2001 From: zachgersh Date: Sun, 9 Jun 2013 21:46:17 -0700 Subject: [PATCH 13/85] Supporting more kramdown options. --- lib/jekyll/converters/markdown/kramdown_parser.rb | 2 +- lib/jekyll/core_ext.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index 58857276..25e119b2 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -26,7 +26,7 @@ module Jekyll # not using coderay base_kramdown_configs end - Kramdown::Document.new(content, kramdown_configs).to_html + Kramdown::Document.new(content, @config["kramdown"].symbolize_keys).to_html end def base_kramdown_configs diff --git a/lib/jekyll/core_ext.rb b/lib/jekyll/core_ext.rb index b1192cf4..00f64fcf 100644 --- a/lib/jekyll/core_ext.rb +++ b/lib/jekyll/core_ext.rb @@ -41,6 +41,17 @@ class Hash end array || [] end + + def symbolize_keys! + keys.each do |key| + self[(key.to_sym rescue key) || key] = delete(key) + end + self + end + + def symbolize_keys + dup.symbolize_keys! + end end # Thanks, ActiveSupport! From 90500f37ac29dcb6c43294fabb2d86a27d05843c Mon Sep 17 00:00:00 2001 From: zachgersh Date: Sun, 14 Jul 2013 00:24:49 -0500 Subject: [PATCH 14/85] Deleted unused code. --- lib/jekyll/converters/markdown/kramdown_parser.rb | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index 25e119b2..45542c66 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -13,7 +13,7 @@ module Jekyll def convert(content) # Check for use of coderay - kramdown_configs = if @config['kramdown']['use_coderay'] + if @config['kramdown']['use_coderay'] base_kramdown_configs.merge({ :coderay_wrap => @config['kramdown']['coderay']['coderay_wrap'], :coderay_line_numbers => @config['kramdown']['coderay']['coderay_line_numbers'], @@ -22,22 +22,11 @@ module Jekyll :coderay_bold_every => @config['kramdown']['coderay']['coderay_bold_every'], :coderay_css => @config['kramdown']['coderay']['coderay_css'] }) - else - # not using coderay - base_kramdown_configs end + Kramdown::Document.new(content, @config["kramdown"].symbolize_keys).to_html end - def base_kramdown_configs - { - :auto_ids => @config['kramdown']['auto_ids'], - :footnote_nr => @config['kramdown']['footnote_nr'], - :entity_output => @config['kramdown']['entity_output'], - :toc_levels => @config['kramdown']['toc_levels'], - :smart_quotes => @config['kramdown']['smart_quotes'] - } - end end end end From b0fbfdb87d285e7b049f757ffa473fe33aed2cdd Mon Sep 17 00:00:00 2001 From: zachgersh Date: Sun, 14 Jul 2013 00:32:48 -0500 Subject: [PATCH 15/85] Added a configuration warning to our docs for the two kramdown options we don't support. --- site/docs/configuration.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/site/docs/configuration.md b/site/docs/configuration.md index ffdbf6ef..7a72394f 100644 --- a/site/docs/configuration.md +++ b/site/docs/configuration.md @@ -236,7 +236,16 @@ before your site is served. Jekyll runs with the following configuration options by default. Unless alternative settings for these options are explicitly specified in the -configuration file or on the command-line, Jekyll will run using these options. +[[configuration]] file or on the command-line, Jekyll will run using these options. + +
+
There are two unsupported kramdown options
+

+ Please note that both remove_block_html_tags and + remove_span_html_tags are currently unsupported in jekyll due to the + fact that they are not included within the kramdown HTML converter. +

+
{% highlight yaml %} source: . From 7521414d11e335391c44083872ab3c99ec45cff0 Mon Sep 17 00:00:00 2001 From: Damian Lettie Date: Sun, 14 Jul 2013 18:17:09 +1000 Subject: [PATCH 16/85] Add optional time zone when specifying page.date. --- site/docs/variables.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/site/docs/variables.md b/site/docs/variables.md index 7f93b12b..979d358d 100644 --- a/site/docs/variables.md +++ b/site/docs/variables.md @@ -197,7 +197,9 @@ following is a reference of the available data. The Date assigned to the Post. This can be overridden in a Post’s front matter by specifying a new date/time in the format - YYYY-MM-DD HH:MM:SS + YYYY-MM-DD HH:MM:SS (assuming UTC), or + YYYY-MM-DD HH:MM:SS +/-TTTT (to specify a time zone using + an offset from UTC. e.g. 2008-12-14 10:30:00 +0900).

From db0be233cf31ea894189f4c633f05bcb5965e5f2 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 17:45:56 +0200 Subject: [PATCH 17/85] Update history to reflect merge of #1201. --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 31276659..886affd6 100644 --- a/History.markdown +++ b/History.markdown @@ -16,6 +16,7 @@ * In the generated site, remove files that will be replaced by a directory (#1118) * Fail loudly if a user-specified configuration file doesn't exist (#1098) + * Allow for all options for Kramdown HTML Converter (#1201) ### Bug Fixes * Fix pagination in subdirectories. (#1198) From e95086b211725165225ef3aec7e7b463bf42e3d0 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 17:47:13 +0200 Subject: [PATCH 18/85] Fix for kramdown coderay options. #1201. --- lib/jekyll/converters/markdown/kramdown_parser.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index 45542c66..7d6a2ce2 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -14,7 +14,7 @@ module Jekyll def convert(content) # Check for use of coderay if @config['kramdown']['use_coderay'] - base_kramdown_configs.merge({ + @config['kramdown'].merge({ :coderay_wrap => @config['kramdown']['coderay']['coderay_wrap'], :coderay_line_numbers => @config['kramdown']['coderay']['coderay_line_numbers'], :coderay_line_number_start => @config['kramdown']['coderay']['coderay_line_number_start'], From 5d91b8f346983a5df604346d1b6c34a355503ae8 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 17:48:34 +0200 Subject: [PATCH 19/85] merge bang to modify in place. Woops. #1201 --- lib/jekyll/converters/markdown/kramdown_parser.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/converters/markdown/kramdown_parser.rb b/lib/jekyll/converters/markdown/kramdown_parser.rb index 7d6a2ce2..b4237881 100644 --- a/lib/jekyll/converters/markdown/kramdown_parser.rb +++ b/lib/jekyll/converters/markdown/kramdown_parser.rb @@ -14,7 +14,7 @@ module Jekyll def convert(content) # Check for use of coderay if @config['kramdown']['use_coderay'] - @config['kramdown'].merge({ + @config['kramdown'].merge!({ :coderay_wrap => @config['kramdown']['coderay']['coderay_wrap'], :coderay_line_numbers => @config['kramdown']['coderay']['coderay_line_numbers'], :coderay_line_number_start => @config['kramdown']['coderay']['coderay_line_number_start'], From d572e588e8761d25c7dc73de9c3ccf6b69bd7530 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 19:52:44 +0200 Subject: [PATCH 20/85] Release 1.1.0 --- History.markdown | 14 ++++++++-- jekyll.gemspec | 23 ++++++++++++++-- lib/jekyll.rb | 2 +- .../2013-07-14-jekyll-1-1-0-released.markdown | 27 +++++++++++++++++++ 4 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 site/_posts/2013-07-14-jekyll-1-1-0-released.markdown diff --git a/History.markdown b/History.markdown index 886affd6..a672e253 100644 --- a/History.markdown +++ b/History.markdown @@ -1,5 +1,17 @@ ## HEAD +### Major Enhancements + +### Minor Enhancements + +### Bug Fixes + +### Development Fixes + +### Site Enhancements + +## 1.1.0 / 2013-07-14 + ### Major Enhancements * Add 'docs' subcommand to read Jekyll's docs when offline. (#1046) * Support passing parameters to templates in 'include' tag (#1204) @@ -68,8 +80,6 @@ * Add suggestion for Xcode CLT install to troubleshooting page in docs (#1296) * Add 'Working with drafts' page to docs (#1289) -### Development Fixes - ## 1.0.3 / 2013-06-07 ### Minor Enhancements diff --git a/jekyll.gemspec b/jekyll.gemspec index 2f2db1dd..a39ac9a5 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -4,9 +4,9 @@ Gem::Specification.new do |s| s.rubygems_version = '1.3.5' s.name = 'jekyll' - s.version = '1.0.3' + s.version = '1.1.0' s.license = 'MIT' - s.date = '2013-06-07' + s.date = '2013-07-14' s.rubyforge_project = 'jekyll' s.summary = "A simple, blog aware, static site generator." @@ -60,6 +60,7 @@ Gem::Specification.new do |s| features/create_sites.feature features/drafts.feature features/embed_filters.feature + features/include_tag.feature features/markdown.feature features/pagination.feature features/permalinks.feature @@ -89,6 +90,7 @@ Gem::Specification.new do |s| lib/jekyll/deprecator.rb lib/jekyll/draft.rb lib/jekyll/errors.rb + lib/jekyll/excerpt.rb lib/jekyll/filters.rb lib/jekyll/generator.rb lib/jekyll/generators/pagination.rb @@ -123,11 +125,20 @@ Gem::Specification.new do |s| site/_includes/docs_contents_mobile.html site/_includes/footer.html site/_includes/header.html + site/_includes/news_contents.html + site/_includes/news_contents_mobile.html + site/_includes/news_item.html site/_includes/primary-nav-items.html site/_includes/section_nav.html site/_includes/top.html site/_layouts/default.html site/_layouts/docs.html + site/_layouts/news.html + site/_layouts/news_item.html + site/_posts/2013-05-06-jekyll-1-0-0-released.markdown + site/_posts/2013-05-08-jekyll-1-0-1-released.markdown + site/_posts/2013-05-12-jekyll-1-0-2-released.markdown + site/_posts/2013-06-07-jekyll-1-0-3-released.markdown site/css/gridism.css site/css/normalize.css site/css/pygments.css @@ -135,6 +146,7 @@ Gem::Specification.new do |s| site/docs/configuration.md site/docs/contributing.md site/docs/deployment-methods.md + site/docs/drafts.md site/docs/extras.md site/docs/frontmatter.md site/docs/github-pages.md @@ -148,6 +160,7 @@ Gem::Specification.new do |s| site/docs/permalinks.md site/docs/plugins.md site/docs/posts.md + site/docs/quickstart.md site/docs/resources.md site/docs/sites.md site/docs/structure.md @@ -157,6 +170,8 @@ Gem::Specification.new do |s| site/docs/usage.md site/docs/variables.md site/favicon.png + site/feed.xml + site/freenode.txt site/img/article-footer.png site/img/footer-arrow.png site/img/footer-logo.png @@ -166,13 +181,17 @@ Gem::Specification.new do |s| site/img/tube1x.png site/index.html site/js/modernizr-2.5.3.min.js + site/news/index.md + site/news/releases/index.md test/fixtures/broken_front_matter1.erb test/fixtures/broken_front_matter2.erb test/fixtures/broken_front_matter3.erb test/fixtures/exploit_front_matter.erb test/fixtures/front_matter.erb test/helper.rb + test/source/+/foo.md test/source/.htaccess + test/source/_includes/params.html test/source/_includes/sig.markdown test/source/_layouts/default.html test/source/_layouts/simple.html diff --git a/lib/jekyll.rb b/lib/jekyll.rb index 06242de9..77cc7cd5 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -58,7 +58,7 @@ require_all 'jekyll/tags' SafeYAML::OPTIONS[:suppress_warnings] = true module Jekyll - VERSION = '1.0.3' + VERSION = '1.1.0' # Public: Generate a Jekyll configuration Hash by merging the default # options with anything in _config.yml, and adding the given options on top. diff --git a/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown b/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown new file mode 100644 index 00000000..c379ba8a --- /dev/null +++ b/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown @@ -0,0 +1,27 @@ +--- +layout: news_item +title: "Jekyll 1.1.0 Released" +date: "2013-07-14 19:38:02 +0200" +author: parkr +version: 1.1.0 +categories: [release] +--- + +After a month of hard work, the Jekyll core team is excited to announce the release of +Jekyll v1.1.0! This latest release of Jekyll brings some really exciting new additions: + +- Add 'docs' subcommand to read Jekyll's docs when offline. ([#1046][]) +- Support passing parameters to templates in 'include' tag ([#1204][]) +- Add support for Liquid tags to post excerpts ([#1302][]) +- Fix pagination for subdirectories ([#1198][]) +- Provide better error reporting when generating sites ([#1253][]) +- Latest posts first in non-LSI `related_posts` ([#1271][]) + +See the [History][] page for more a more detailed changelog for this release. + +{% assign issue_numbers = "1046|1204|1302|1198|1171|1118|1098|1215|1253|1271" | split: "|" %} +{% for issue in issue_numbers %} +[#{{ issue }}]: https://github.com/mojombo/jekyll/issues/{{ issue }} +{% endfor %} + +[History]: /docs/history/#110__20130714 From e8662422e3afa3141bff897abd5a735170456b58 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 19:53:48 +0200 Subject: [PATCH 21/85] Add Jekyll v1.1.0 release notes post. --- jekyll.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/jekyll.gemspec b/jekyll.gemspec index a39ac9a5..c99f5161 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -139,6 +139,7 @@ Gem::Specification.new do |s| site/_posts/2013-05-08-jekyll-1-0-1-released.markdown site/_posts/2013-05-12-jekyll-1-0-2-released.markdown site/_posts/2013-06-07-jekyll-1-0-3-released.markdown + site/_posts/2013-07-14-jekyll-1-1-0-released.markdown site/css/gridism.css site/css/normalize.css site/css/pygments.css From 07406baabeb36c1c3e1d2455392fec672d91dffd Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 19:57:09 +0200 Subject: [PATCH 22/85] Update history files. --- History.markdown | 4 +-- site/docs/history.md | 70 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/History.markdown b/History.markdown index a672e253..cfec4072 100644 --- a/History.markdown +++ b/History.markdown @@ -13,8 +13,8 @@ ## 1.1.0 / 2013-07-14 ### Major Enhancements - * Add 'docs' subcommand to read Jekyll's docs when offline. (#1046) - * Support passing parameters to templates in 'include' tag (#1204) + * Add `docs` subcommand to read Jekyll's docs when offline. (#1046) + * Support passing parameters to templates in `include` tag (#1204) * Add support for Liquid tags to post excerpts (#1302) ### Minor Enhancements diff --git a/site/docs/history.md b/site/docs/history.md index d71fbfd6..e531e79b 100644 --- a/site/docs/history.md +++ b/site/docs/history.md @@ -5,6 +5,76 @@ permalink: /docs/history/ prev_section: contributing --- +## 1.1.0 / 2013-07-14 + +### Major Enhancements +- Add `docs` subcommand to read Jekyll's docs when offline. ([#1046](https://github.com/mojombo/jekyll/issues/1046)) +- Support passing parameters to templates in `include` tag ([#1204](https://github.com/mojombo/jekyll/issues/1204)) +- Add support for Liquid tags to post excerpts ([#1302](https://github.com/mojombo/jekyll/issues/1302)) + +### Minor Enhancements +- Search the hierarchy of pagination path up to site root to determine template page for + pagination. ([#1198](https://github.com/mojombo/jekyll/issues/1198)) +- Add the ability to generate a new Jekyll site without a template ([#1171](https://github.com/mojombo/jekyll/issues/1171)) +- Use redcarpet as the default markdown engine in newly generated + sites ([#1245](https://github.com/mojombo/jekyll/issues/1245), [#1247](https://github.com/mojombo/jekyll/issues/1247)) +- Add `redcarpet` as a runtime dependency so `jekyll build` works out-of-the-box for new + sites. ([#1247](https://github.com/mojombo/jekyll/issues/1247)) +- In the generated site, remove files that will be replaced by a + directory ([#1118](https://github.com/mojombo/jekyll/issues/1118)) +- Fail loudly if a user-specified configuration file doesn't exist ([#1098](https://github.com/mojombo/jekyll/issues/1098)) +- Allow for all options for Kramdown HTML Converter ([#1201](https://github.com/mojombo/jekyll/issues/1201)) + +### Bug Fixes +- Fix pagination in subdirectories. ([#1198](https://github.com/mojombo/jekyll/issues/1198)) +- Fix an issue with directories and permalinks that have a plus sign + (+) in them ([#1215](https://github.com/mojombo/jekyll/issues/1215)) +- Provide better error reporting when generating sites ([#1253](https://github.com/mojombo/jekyll/issues/1253)) +- Latest posts first in non-LSI `related_posts` ([#1271](https://github.com/mojombo/jekyll/issues/1271)) + +### Development Fixes +- Merge the theme and layout cucumber steps into one step ([#1151](https://github.com/mojombo/jekyll/issues/1151)) +- Restrict activesupport dependency to pre-4.0.0 to maintain compatibility with `<= 1.9.2` +- Include/exclude deprecation handling simplification ([#1284](https://github.com/mojombo/jekyll/issues/1284)) +- Convert README to Markdown. ([#1267](https://github.com/mojombo/jekyll/issues/1267)) +- Refactor Jekyll::Site ([#1144](https://github.com/mojombo/jekyll/issues/1144)) + +### Site Enhancements +- Add "News" section for release notes, along with an RSS feed ([#1093](https://github.com/mojombo/jekyll/issues/1093), [#1285](https://github.com/mojombo/jekyll/issues/1285), [#1286](https://github.com/mojombo/jekyll/issues/1286)) +- Add "History" page. +- Restructured docs sections to include "Meta" section. +- Add message to "Templates" page that specifies that Python must be installed in order + to use Pygments. ([#1182](https://github.com/mojombo/jekyll/issues/1182)) +- Update link to the official Maruku repo ([#1175](https://github.com/mojombo/jekyll/issues/1175)) +- Add documentation about `paginate_path` to "Templates" page in docs ([#1129](https://github.com/mojombo/jekyll/issues/1129)) +- Give the quick-start guide its own page ([#1191](https://github.com/mojombo/jekyll/issues/1191)) +- Update ProTip on Installation page in docs to point to all the info about Pygments and + the 'highlight' tag. ([#1196](https://github.com/mojombo/jekyll/issues/1196)) +- Run `site/img` through ImageOptim (thanks [@qrush](https://github.com/qrush)!) ([#1208](https://github.com/mojombo/jekyll/issues/1208)) +- Added Jade Converter to `site/docs/plugins` ([#1210](https://github.com/mojombo/jekyll/issues/1210)) +- Fix location of docs pages in Contributing pages ([#1214](https://github.com/mojombo/jekyll/issues/1214)) +- Add ReadInXMinutes plugin to the plugin list ([#1222](https://github.com/mojombo/jekyll/issues/1222)) +- Remove plugins from the plugin list that have equivalents in Jekyll + proper ([#1223](https://github.com/mojombo/jekyll/issues/1223)) +- Add jekyll-assets to the plugin list ([#1225](https://github.com/mojombo/jekyll/issues/1225)) +- Add jekyll-pandoc-mulitple-formats to the plugin list ([#1229](https://github.com/mojombo/jekyll/issues/1229)) +- Remove dead link to "Using Git to maintain your blog" ([#1227](https://github.com/mojombo/jekyll/issues/1227)) +- Tidy up the third-party plugins listing ([#1228](https://github.com/mojombo/jekyll/issues/1228)) +- Update contributor information ([#1192](https://github.com/mojombo/jekyll/issues/1192)) +- Update URL of article about Blogger migration ([#1242](https://github.com/mojombo/jekyll/issues/1242)) +- Specify that RedCarpet is the default for new Jekyll sites on Quickstart page ([#1247](https://github.com/mojombo/jekyll/issues/1247)) +- Added site.pages to Variables page in docs ([#1251](https://github.com/mojombo/jekyll/issues/1251)) +- Add Youku and Tudou Embed link on Plugins page. ([#1250](https://github.com/mojombo/jekyll/issues/1250)) +- Add note that `gist` tag supports private gists. ([#1248](https://github.com/mojombo/jekyll/issues/1248)) +- Add `jekyll-timeago` to list of third-party plugins. ([#1260](https://github.com/mojombo/jekyll/issues/1260)) +- Add `jekyll-swfobject` to list of third-party plugins. ([#1263](https://github.com/mojombo/jekyll/issues/1263)) +- Add `jekyll-picture-tag` to list of third-party plugins. ([#1280](https://github.com/mojombo/jekyll/issues/1280)) +- Update the GitHub Pages documentation regarding relative URLs + ([#1291](https://github.com/mojombo/jekyll/issues/1291)) +- Update the S3 deployment documentation ([#1294](https://github.com/mojombo/jekyll/issues/1294)) +- Add suggestion for Xcode CLT install to troubleshooting page in docs ([#1296](https://github.com/mojombo/jekyll/issues/1296)) +- Add 'Working with drafts' page to docs ([#1289](https://github.com/mojombo/jekyll/issues/1289)) + ## 1.0.3 / 2013-06-07 ### Minor Enhancements From 05e843c34bfff792337d6617a229e674c604df65 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 19:58:18 +0200 Subject: [PATCH 23/85] Make 'docs' and 'include' code. --- site/_posts/2013-07-14-jekyll-1-1-0-released.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown b/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown index c379ba8a..a94a0e84 100644 --- a/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown +++ b/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown @@ -10,8 +10,8 @@ categories: [release] After a month of hard work, the Jekyll core team is excited to announce the release of Jekyll v1.1.0! This latest release of Jekyll brings some really exciting new additions: -- Add 'docs' subcommand to read Jekyll's docs when offline. ([#1046][]) -- Support passing parameters to templates in 'include' tag ([#1204][]) +- Add `docs` subcommand to read Jekyll's docs when offline. ([#1046][]) +- Support passing parameters to templates in `include` tag ([#1204][]) - Add support for Liquid tags to post excerpts ([#1302][]) - Fix pagination for subdirectories ([#1198][]) - Provide better error reporting when generating sites ([#1253][]) From e5b2b9b4cd8905394ad067d7a1dba60211a6da1e Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 20:12:04 +0200 Subject: [PATCH 24/85] @mojombo asked us to use Releases on GitHub. Link to it in our release notes. --- site/_posts/2013-07-14-jekyll-1-1-0-released.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown b/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown index a94a0e84..06df9470 100644 --- a/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown +++ b/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown @@ -17,11 +17,11 @@ Jekyll v1.1.0! This latest release of Jekyll brings some really exciting new add - Provide better error reporting when generating sites ([#1253][]) - Latest posts first in non-LSI `related_posts` ([#1271][]) -See the [History][] page for more a more detailed changelog for this release. +See the [GitHub Release][] page for more a more detailed changelog for this release. {% assign issue_numbers = "1046|1204|1302|1198|1171|1118|1098|1215|1253|1271" | split: "|" %} {% for issue in issue_numbers %} [#{{ issue }}]: https://github.com/mojombo/jekyll/issues/{{ issue }} {% endfor %} -[History]: /docs/history/#110__20130714 +[History]: https://github.com/mojombo/jekyll/releases/tag/v1.1.0 From 11142992ae28742ed35314b9cf36497901f969bf Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 14 Jul 2013 20:14:26 +0200 Subject: [PATCH 25/85] Woopsie. --- site/_posts/2013-07-14-jekyll-1-1-0-released.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown b/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown index 06df9470..4d373598 100644 --- a/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown +++ b/site/_posts/2013-07-14-jekyll-1-1-0-released.markdown @@ -24,4 +24,4 @@ See the [GitHub Release][] page for more a more detailed changelog for this rele [#{{ issue }}]: https://github.com/mojombo/jekyll/issues/{{ issue }} {% endfor %} -[History]: https://github.com/mojombo/jekyll/releases/tag/v1.1.0 +[GitHub Release]: https://github.com/mojombo/jekyll/releases/tag/v1.1.0 From 404332ae359d4cc853152242f3f046c7715e6efb Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Sun, 14 Jul 2013 13:53:45 -0500 Subject: [PATCH 26/85] Update history to reflect merge of #1304 --- History.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/History.markdown b/History.markdown index cfec4072..878eead4 100644 --- a/History.markdown +++ b/History.markdown @@ -79,6 +79,8 @@ * Update the S3 deployment documentation (#1294) * Add suggestion for Xcode CLT install to troubleshooting page in docs (#1296) * Add 'Working with drafts' page to docs (#1289) + * Add information about time zones to the documentation for a page's + date (#1304) ## 1.0.3 / 2013-06-07 From d402427b81af6e7b6e573e1b5f9dedc1de4c072a Mon Sep 17 00:00:00 2001 From: Rob Wierzbowski Date: Sun, 14 Jul 2013 18:58:45 -0400 Subject: [PATCH 27/85] Add Jekyll Image Tag to the plugins list --- site/docs/plugins.md | 1 + 1 file changed, 1 insertion(+) diff --git a/site/docs/plugins.md b/site/docs/plugins.md index 19e06ecc..541346d6 100644 --- a/site/docs/plugins.md +++ b/site/docs/plugins.md @@ -435,6 +435,7 @@ Levin](https://github.com/kinnetica/jekyll-plugins) - [jekyll-timeago](https://github.com/markets/jekyll-timeago): Time-ago Liquid filter - [jekyll-swfobject](https://github.com/sectore/jekyll-swfobject): Liquid plugin for embedding Adobe Flash files (`*.swf`) using [SWFObject](http://code.google.com/p/swfobject/) - [Jekyll Picture Tag](https://github.com/robwierzbowski/jekyll-picture-tag): Easy responsive images for Jekyll. Based on the proposed [``](http://picture.responsiveimages.org/) element, polyfilled with Scott Jelh's [Picturefill](https://github.com/scottjehl/picturefill). +- [Jekyll Image Tag](https://github.com/robwierzbowski/jekyll-image-tag): Better images for Jekyll. Save image presets, generate resized images, and add classes, alt text, and other attributes.
Jekyll Plugins Wanted
From 349ec1f75dcb5750317ce8b5ff570f9b989d8ff3 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 16 Jul 2013 11:23:20 +0200 Subject: [PATCH 28/85] Update history to reflect merge of #1306. --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 878eead4..640a2468 100644 --- a/History.markdown +++ b/History.markdown @@ -9,6 +9,7 @@ ### Development Fixes ### Site Enhancements + * Add Jekyll Image Tag to the plugins list (#1306) ## 1.1.0 / 2013-07-14 From 1f6839baca0500efcd010ac8c89e6b9f9f9349cf Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 16 Jul 2013 11:24:14 +0200 Subject: [PATCH 29/85] Update history page in the docs to include #1304. --- site/docs/history.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/site/docs/history.md b/site/docs/history.md index e531e79b..338cb95a 100644 --- a/site/docs/history.md +++ b/site/docs/history.md @@ -74,6 +74,8 @@ prev_section: contributing - Update the S3 deployment documentation ([#1294](https://github.com/mojombo/jekyll/issues/1294)) - Add suggestion for Xcode CLT install to troubleshooting page in docs ([#1296](https://github.com/mojombo/jekyll/issues/1296)) - Add 'Working with drafts' page to docs ([#1289](https://github.com/mojombo/jekyll/issues/1289)) +- Add information about time zones to the documentation for a page's + date ([#1304](https://github.com/mojombo/jekyll/issues/1304)) ## 1.0.3 / 2013-06-07 From b8b9e7989914dc6bff3a820859a745b36d76b047 Mon Sep 17 00:00:00 2001 From: Rob Wierzbowski Date: Mon, 15 Jul 2013 17:34:09 -0400 Subject: [PATCH 30/85] Organize plugins into categories, clean up copy. --- site/docs/plugins.md | 174 +++++++++++++++++++++++-------------------- 1 file changed, 93 insertions(+), 81 deletions(-) diff --git a/site/docs/plugins.md b/site/docs/plugins.md index 541346d6..8614e8d7 100644 --- a/site/docs/plugins.md +++ b/site/docs/plugins.md @@ -350,93 +350,105 @@ end ## Available Plugins -There are a few useful, prebuilt plugins at the following locations: +You can find a few useful plugins at the following locations: -- [Truncate HTML while preserving markup structure](https://github.com/MattHall/truncatehtml) by [Matt Hall](http://codebeef.com) -- [Domain Name Filter by Lawrence Woodman](https://github.com/LawrenceWoodman/domain_name-liquid_filter): Filters the input text so that just the domain name is left -- [Jekyll Plugins by Recursive Design](http://recursive-design.com/projects/jekyll-plugins/): Plugin to generate Project pages from GitHub readmes, a Category page plugin, and a Sitemap generator -- [Pygments Cache Path by Raimonds Simanovskis](https://github.com/rsim/blog.rayapps.com/blob/master/_plugins/pygments_cache_patch.rb): Plugin to cache syntax-highlighted code from Pygments -- [Delicious Plugin by Christian Hellsten](https://github.com/christianhellsten/jekyll-plugins): Fetches and renders bookmarks from delicious.com. -- [Ultraviolet plugin by Steve Alex](https://gist.github.com/480380): Jekyll Plugin for Ultraviolet -- [Jade plugin by John Papandriopoulos](https://github.com/snappylabs/jade-jekyll-plugin): Jade Converter plugin for Jekyll -- [HAML plugin by Sam Z](https://gist.github.com/517556): HAML plugin for jekyll -- [ArchiveGenerator by Ilkka Laukkanen](https://gist.github.com/707909): Uses [this archive page](https://gist.github.com/707020) to generate archives -- [Tag Cloud Plugin by Ilkka Laukkanen](https://gist.github.com/710577): Jekyll tag cloud / tag pages plugin -- [HAML/SASS Converter by Adam Pearson](https://gist.github.com/481456): Simple haml-sass conversion for jekyll. [Fork](https://gist.github.com/528642) by Sam X -- [SASS scss Converter by Mark Wolfe](https://gist.github.com/960150): Jekyll Converter which uses the new css compatible syntax, based on the one written by Sam X. -- [GIT Tag by Alexandre Girard](https://gist.github.com/730347): Jekyll plugin to add Git activity inside a list -- [Draft/Publish Plugin by Michael Ivey](https://gist.github.com/49630) -- [Less.js generator by Andy Fowler](https://gist.github.com/642739): Jekyll plugin to render less.js files during generation. -- [Less Converter by Jason Graham](https://gist.github.com/639920): A Jekyll plugin to convert a .less file to .css -- [Less Converter by Josh Brown](https://gist.github.com/760265) +#### Generators -- [MathJax Liquid Tags by Jessy Cowan-Sharp](https://gist.github.com/834610): A simple liquid tag for Jekyll that converts and into inline math, and and into block equations, by replacing with the appropriate MathJax script tags. -- [Non-JS Gist Tag by Brandon Tilley](https://gist.github.com/1027674) A Liquid tag for Jekyll sites that allows embedding Gists and showing code for non-JavaScript enabled browsers and readers. -- [Growl Notification Generator by Tate Johnson](https://gist.github.com/490101) -- [Growl Notification Hook by Tate Johnson](https://gist.github.com/525267): Better alternative to the above, but requires his “hook” fork. -- [Version Reporter by Blake Smith](https://gist.github.com/449491) -- [Upcase Converter by Blake Smith](https://gist.github.com/449463) -- [Render Time Tag by Blake Smith](https://gist.github.com/449509) -- [Summarize Filter by Mathieu Arnold](https://gist.github.com/731597) -- [Status.net/OStatus Tag by phaer](https://gist.github.com/912466) -- [CoffeeScript converter by phaer](https://gist.github.com/959938): Put this file in `plugins` and write a YAML header to your .coffee files. See [http://coffeescript.org](http://coffeescript.org) for more info -- [Raw Tag by phaer.](https://gist.github.com/1020852): Keeps liquid from parsing text betweeen `{{ "{% raw " }}%}` and `{{ "{% endraw " }}%}` -- [URL encoding by James An](https://gist.github.com/919275) -- [Sitemap.xml Generator by Michael -Levin](https://github.com/kinnetica/jekyll-plugins) -- [Markdown references by Olov Lassus](https://github.com/olov/jekyll-references): Keep all your markdown reference-style link definitions in one file (_references.md) -- [Full-text search by Pascal Widdershoven](https://github.com/PascalW/jekyll_indextank): Add full-text search to your Jekyll site with this plugin and a bit of JavaScript. -- [Stylus Converter](https://gist.github.com/988201) Convert .styl to .css. -- [Embed.ly client by Robert Böhnke](https://github.com/robb/jekyll-embedly-client) Autogenerate embeds from URLs using oEmbed. -- [Logarithmic Tag Cloud](https://gist.github.com/2290195): Flexible. Logarithmic distribution. Documentation inline. -- [Related Posts by Lawrence Woodman](https://github.com/LawrenceWoodman/related_posts-jekyll_plugin): Overrides `site.related_posts` to use categories to assess relationship -- [AliasGenerator by Thomas Mango](https://github.com/tsmango/jekyll_alias_generator): Generates redirect pages for posts when an alias configuration is specified in the YAML Front Matter. -- [FlickrSetTag by Thomas Mango](https://github.com/tsmango/jekyll_flickr_set_tag): Generates image galleries from Flickr sets. -- [Projectlist by Frederic Hemberger](https://github.com/fhemberger/jekyll-projectlist): Loads all files from a directory and renders the entries into a single page, instead of creating separate posts. -- [Tiered Archives by Eli Naeher](https://gist.github.com/88cda643aa7e3b0ca1e5): creates a tiered template variable that allows you to create archives grouped by year and month. -- [oEmbed Tag by Tammo van Lessen](https://gist.github.com/1455726): enables easy content embedding (e.g. from YouTube, Flickr, Slideshare) via oEmbed. -- [Company website and blog plugins](https://github.com/flatterline/jekyll-plugins) by Flatterline, a [Ruby on Rails development company](http://flatterline.com/): portfolio/project page generator, team/individual page generator, author bio liquid template tag for use on posts and a few other smaller plugins. -- [Transform Layouts](https://gist.github.com/1472645) Monkey patching allowing HAML layouts (you need a HAML Converter plugin for this to work) -- [ReStructuredText converter](https://github.com/xdissent/jekyll-rst): Converts ReST documents to HTML with Pygments syntax highlighting. -- [Tweet Tag by Scott W. Bradley](https://github.com/scottwb/jekyll-tweet-tag): Liquid tag for [Embedded Tweets](https://dev.twitter.com/docs/embedded-tweets) using Twitter’s shortcodes -- [jekyll-localization](https://github.com/blackwinter/jekyll-localization): Jekyll plugin that adds localization features to the rendering engine. -- [jekyll-rendering](https://github.com/blackwinter/jekyll-rendering): Jekyll plugin to provide alternative rendering engines. -- [jekyll-pagination](https://github.com/blackwinter/jekyll-pagination): Jekyll plugin to extend the pagination generator. -- [jekyll-tagging](https://github.com/pattex/jekyll-tagging): Jekyll plugin to automatically generate a tag cloud and tag pages. -- [jekyll-contentblocks](https://github.com/rustygeldmacher/jekyll-contentblocks): Lets you use Rails-like content_for tags in your templates, for passing content from your posts up to your layouts. -- [Generate YouTube Embed (tag)](https://gist.github.com/1805814) by [joelverhagen](https://github.com/joelverhagen): Jekyll plugin which allows you to embed a YouTube video in your page with the YouTube ID. Optionally specify width and height dimensions. Like “oEmbed Tag” but just for YouTube. -- [JSON Filter](https://gist.github.com/1850654) by [joelverhagen](https://github.com/joelverhagen): filter that takes input text and outputs it as JSON. Great for rendering JavaScript. -- [jekyll-beastiepress](https://github.com/okeeblow/jekyll-beastiepress): FreeBSD utility tags for Jekyll sites. -- [jsonball](https://gist.github.com/1895282): reads json files and produces maps for use in jekylled files -- [bibjekyll](https://github.com/pablooliveira/bibjekyll): render BibTeX-formatted bibliographies/citations included in posts/pages using bibtex2html -- [jekyll-citation](https://github.com/archome/jekyll-citation): render BibTeX-formatted bibliographies/citations included in posts/pages (pure Ruby) -- [jekyll-scholar](https://github.com/inukshuk/jekyll-scholar): Jekyll extensions for the blogging scholar -- [jekyll-asset_bundler](https://github.com/moshen/jekyll-asset_bundler): bundles and minifies JavaScript and CSS -- [Jekyll Dribbble Set Tag](https://github.com/ericdfields/Jekyll-Dribbble-Set-Tag): builds Dribbble image galleries from any user -- [debbugs](https://gist.github.com/2218470): allows posting links to Debian BTS easily -- [refheap_tag](https://github.com/aburdette/refheap_tag): Liquid tag that allows embedding pastes from [refheap](https://refheap.com) +- [ArchiveGenerator by Ilkka Laukkanen](https://gist.github.com/707909): Uses [this archive page](https://gist.github.com/707020) to generate archives. +- [LESS.js Generator by Andy Fowler](https://gist.github.com/642739): Renders LESS.js files during generation. +- [Version Reporter by Blake Smith](https://gist.github.com/449491): Creates a version.html file containing the Jekyll version. +- [Sitemap.xml Generator by Michael Levin](https://github.com/kinnetica/jekyll-plugins): Generates a sitemap.xml file by traversing all of the available posts and pages. +- [Full-text search by Pascal Widdershoven](https://github.com/PascalW/jekyll_indextank): Adds full-text search to your Jekyll site with a plugin and a bit of JavaScript. +- [AliasGenerator by Thomas Mango](https://github.com/tsmango/jekyll_alias_generator): Generates redirect pages for posts when an alias is specified in the YAML Front Matter. +- [Projectlist by Frederic Hemberger](https://github.com/fhemberger/jekyll-projectlist): Renders files in a directory as a single page instead of separate posts. + +#### Converters + +- [Jade plugin by John Papandriopoulos](https://github.com/snappylabs/jade-jekyll-plugin): Jade converter for Jekyll. +- [HAML plugin by Sam Z](https://gist.github.com/517556): HAML converter for Jekyll. +- [HAML-Sass Converter by Adam Pearson](https://gist.github.com/481456): Simple HAML-Sass converter for Jekyll. [Fork](https://gist.github.com/528642) by Sam X. +- [Sass SCSS Converter by Mark Wolfe](https://gist.github.com/960150): Sass converter which uses the new CSS compatible syntax, based Sam X's fork above. +- [LESS Converter by Jason Graham](https://gist.github.com/639920): Convert LESS files to CSS. +- [LESS Converter by Josh Brown](https://gist.github.com/760265): Simple LESS converter. +- [Upcase Converter by Blake Smith](https://gist.github.com/449463): An example Jekyll converter. +- [CoffeeScript Converter by phaer](https://gist.github.com/959938): A [CoffeeScript](http://coffeescript.org) to Javascript converter. +- [Markdown References by Olov Lassus](https://github.com/olov/jekyll-references): Keep all your markdown reference-style link definitions in one _references.md file. +- [Stylus Converter](https://gist.github.com/988201): Convert .styl to .css. +- [ReStructuredText Converter](https://github.com/xdissent/jekyll-rst): Converts ReST documents to HTML with Pygments syntax highlighting. +- [Jekyll-pandoc-plugin](https://github.com/dsanson/jekyll-pandoc-plugin): Use pandoc for rendering markdown. +- [Jekyll-pandoc-multiple-formats](https://github.com/fauno/jekyll-pandoc-multiple-formats) by [edsl](https://github.com/edsl): Use pandoc to generate your site in multiple formats. Supports pandoc's markdown extensions. +- [ReStructuredText Converter](https://github.com/xdissent/jekyll-rst): Converts ReST documents to HTML with Pygments syntax highlighting. +- [Transform Layouts](https://gist.github.com/1472645): Allows HAML layouts (you need a HAML Converter plugin for this to work). + +#### Filters + +- [Truncate HTML](https://github.com/MattHall/truncatehtml) by [Matt Hall](http://codebeef.com): A Jekyll filter that truncates HTML while preserving markup structure. +- [Domain Name Filter by Lawrence Woodman](https://github.com/LawrenceWoodman/domain_name-liquid_filter): Filters the input text so that just the domain name is left. +- [Summarize Filter by Mathieu Arnold](https://gist.github.com/731597): Remove markup after a `
` tag. +- [URL encoding by James An](https://gist.github.com/919275): Percent encoding for URIs. +- [JSON Filter](https://gist.github.com/1850654) by [joelverhagen](https://github.com/joelverhagen): Filter that takes input text and outputs it as JSON. Great for rendering JavaScript. - [i18n_filter](https://github.com/gacha/gacha.id.lv/blob/master/_plugins/i18n_filter.rb): Liquid filter to use I18n localization. -- [singlepage-jekyll](https://github.com/JCB-K/singlepage-jekyll) by [JCB-K](https://github.com/JCB-K): turns Jekyll into a dynamic one-page website. -- [flickr](https://github.com/reagent/fleakr): Embed photos from flickr right into your posts. -- [jekyll-devonly_tag](https://gist.github.com/2403522): A block tag for including markup only during development. -- [Jekyll plugins by Aucor](https://github.com/aucor/jekyll-plugins): Plugins for eg. trimming unwanted newlines/whitespace and sorting pages by weight attribute. -- [jekyll-pandoc-plugin](https://github.com/dsanson/jekyll-pandoc-plugin): use pandoc for rendering markdown. -- [File compressor](https://gist.github.com/2758691) by [mytharcher](https://github.com/mytharcher): Compress HTML (\*.html) and JavaScript(\*.js) files when output. -- [smilify](https://github.com/SaswatPadhi/jekyll_smilify) by [SaswatPadhi](https://github.com/SaswatPadhi): Convert text emoticons in your content to themeable smiley pics. [Demo](http://saswatpadhi.github.com/) -- [jekyll-minibundle](https://github.com/tkareine/jekyll-minibundle): Asset bundling and cache busting using external minification tool of your choice, no gem dependencies. -- [JekyllGalleryTag](https://github.com/redwallhp/JekyllGalleryTag) by [redwallhp](https://github.com/redwallhp): Generates thumbnails from a directory of images and displays them in a grid with a Liquid tag. -- [Read in X Minutes](https://gist.github.com/zachleat/5792681) by [zachleat](https://github.com/zachleat): Estimates the reading time of a string (use for blog post content). -- [jekyll-assets](http://ixti.net/jekyll-assets/) by [ixti](https://github.com/ixti): Rails-alike assets pipeline (write assets in CoffeeScript, SASS, LESS etc; specify dependencies for automatic bundling using simple declarative comments in assets; minify and compress; use JST templates; cache bust; and many-many more). -- [jekyll-pandoc-multiple-formats](https://github.com/fauno/jekyll-pandoc-multiple-formats) - by [edsl](https://github.com/edsl): Use pandoc to generate your site in - multiple formats plus support for pandoc's markdown extensions. -- [Youku and Tudou Embed](https://gist.github.com/Yexiaoxing/5891929): Liquid plugin for - embedding Youku and Tudou videos -- [jekyll-timeago](https://github.com/markets/jekyll-timeago): Time-ago Liquid filter -- [jekyll-swfobject](https://github.com/sectore/jekyll-swfobject): Liquid plugin for embedding Adobe Flash files (`*.swf`) using [SWFObject](http://code.google.com/p/swfobject/) +- [Smilify](https://github.com/SaswatPadhi/jekyll_smilify) by [SaswatPadhi](https://github.com/SaswatPadhi): Convert text emoticons in your content to themeable smiley pics ([Demo](http://saswatpadhi.github.com/)). +- [Read in X Minutes](https://gist.github.com/zachleat/5792681) by [zachleat](https://github.com/zachleat): Estimates the reading time of a string (for blog post content). +- [Jekyll-timeago](https://github.com/markets/jekyll-timeago): Converts a time value to the time ago in words. + +#### Tags + +- [Delicious Plugin by Christian Hellsten](https://github.com/christianhellsten/jekyll-plugins): Fetches and renders bookmarks from delicious.com. +- [Ultraviolet Plugin by Steve Alex](https://gist.github.com/480380): Jekyll tag for the [Ultraviolet](http://ultraviolet.rubyforge.org/) code highligher. +- [Tag Cloud Plugin by Ilkka Laukkanen](https://gist.github.com/710577): Generate a tag cloud that links to tag pages. +- [GIT Tag by Alexandre Girard](https://gist.github.com/730347): Add Git activity inside a list. +- [MathJax Liquid Tags by Jessy Cowan-Sharp](https://gist.github.com/834610): Simple liquid tags for Jekyll that convert inline math and block equations to the appropriate MathJax script tags. +- [Non-JS Gist Tag by Brandon Tilley](https://gist.github.com/1027674) A Liquid tag that embeds Gists and shows code for non-JavaScript enabled browsers and readers. +- [Render Time Tag by Blake Smith](https://gist.github.com/449509): Displays the time a Jekyll page was generated. +- [Status.net/OStatus Tag by phaer](https://gist.github.com/912466): Displays the notices in a given status.net/ostatus feed. +- [Raw Tag by phaer](https://gist.github.com/1020852): Keeps liquid from parsing text betweeen `raw` tags. +- [Embed.ly client by Robert Böhnke](https://github.com/robb/jekyll-embedly-client): Autogenerate embeds from URLs using oEmbed. +- [Logarithmic Tag Cloud](https://gist.github.com/2290195): Flexible. Logarithmic distribution. Documentation inline. +- [oEmbed Tag by Tammo van Lessen](https://gist.github.com/1455726): Enables easy content embedding (e.g. from YouTube, Flickr, Slideshare) via oEmbed. +- [FlickrSetTag by Thomas Mango](https://github.com/tsmango/jekyll_flickr_set_tag): Generates image galleries from Flickr sets. +- [Tweet Tag by Scott W. Bradley](https://github.com/scottwb/jekyll-tweet-tag): Liquid tag for [Embedded Tweets](https://dev.twitter.com/docs/embedded-tweets) using Twitter’s shortcodes. +- [Jekyll-contentblocks](https://github.com/rustygeldmacher/jekyll-contentblocks): Lets you use Rails-like content_for tags in your templates, for passing content from your posts up to your layouts. +- [Generate YouTube Embed](https://gist.github.com/1805814) by [joelverhagen](https://github.com/joelverhagen): Jekyll plugin which allows you to embed a YouTube video in your page with the YouTube ID. Optionally specify width and height dimensions. Like “oEmbed Tag” but just for YouTube. +- [Jekyll-beastiepress](https://github.com/okeeblow/jekyll-beastiepress): FreeBSD utility tags for Jekyll sites. +- [Jsonball](https://gist.github.com/1895282): Reads json files and produces maps for use in Jekyll files. +- [Bibjekyll](https://github.com/pablooliveira/bibjekyll): Render BibTeX-formatted bibliographies/citations included in posts and pages using bibtex2html. +- [Jekyll-citation](https://github.com/archome/jekyll-citation): Render BibTeX-formatted bibliographies/citations included in posts and pages (pure Ruby). +- [Jekyll Dribbble Set Tag](https://github.com/ericdfields/Jekyll-Dribbble-Set-Tag): Builds Dribbble image galleries from any user. +- [Debbugs](https://gist.github.com/2218470): Allows posting links to Debian BTS easily. +- [Refheap_tag](https://github.com/aburdette/refheap_tag): Liquid tag that allows embedding pastes from [refheap](https://refheap.com). +- [Jekyll-devonly_tag](https://gist.github.com/2403522): A block tag for including markup only during development. +- [JekyllGalleryTag](https://github.com/redwallhp/JekyllGalleryTag) by [redwallhp](https://github.com/redwallhp): Generates thumbnails from a directory of images and displays them in a grid. +- [Youku and Tudou Embed](https://gist.github.com/Yexiaoxing/5891929): Liquid plugin for embedding Youku and Tudou videos. +- [Jekyll-swfobject](https://github.com/sectore/jekyll-swfobject): Liquid plugin for embedding Adobe Flash files (*.swf) using [SWFObject](http://code.google.com/p/swfobject/). - [Jekyll Picture Tag](https://github.com/robwierzbowski/jekyll-picture-tag): Easy responsive images for Jekyll. Based on the proposed [``](http://picture.responsiveimages.org/) element, polyfilled with Scott Jelh's [Picturefill](https://github.com/scottjehl/picturefill). - [Jekyll Image Tag](https://github.com/robwierzbowski/jekyll-image-tag): Better images for Jekyll. Save image presets, generate resized images, and add classes, alt text, and other attributes. +#### Collections + +- [Jekyll Plugins by Recursive Design](http://recursive-design.com/projects/jekyll-plugins/): Plugins to generate Project pages from GitHub readmes, a Category page, and a Sitemap generator. +- [Company website and blog plugins](https://github.com/flatterline/jekyll-plugins) by Flatterline, a [Ruby on Rails development company](http://flatterline.com/): Portfolio/project page generator, team/individual page generator, an author bio liquid tag for use on posts, and a few other smaller plugins. +- [Jekyll plugins by Aucor](https://github.com/aucor/jekyll-plugins): Plugins for trimming unwanted newlines/whitespace and sorting pages by weight attribute. + +#### Other + +- [Pygments Cache Path by Raimonds Simanovskis](https://github.com/rsim/blog.rayapps.com/blob/master/_plugins/pygments_cache_patch.rb): Plugin to cache syntax-highlighted code from Pygments. +- [Draft/Publish Plugin by Michael Ivey](https://gist.github.com/49630): Save posts as drafts. +- [Growl Notification Generator by Tate Johnson](https://gist.github.com/490101): Send Jekyll notifications to Growl. +- [Growl Notification Hook by Tate Johnson](https://gist.github.com/525267): Better alternative to the above, but requires his “hook” fork. +- [Related Posts by Lawrence Woodman](https://github.com/LawrenceWoodman/related_posts-jekyll_plugin): Overrides `site.related_posts` to use categories to assess relationship. +- [Tiered Archives by Eli Naeher](https://gist.github.com/88cda643aa7e3b0ca1e5): Create tiered template variable that allows you to group archives by year and month. +- [Jekyll-localization](https://github.com/blackwinter/jekyll-localization): Jekyll plugin that adds localization features to the rendering engine. +- [Jekyll-rendering](https://github.com/blackwinter/jekyll-rendering): Jekyll plugin to provide alternative rendering engines. +- [Jekyll-pagination](https://github.com/blackwinter/jekyll-pagination): Jekyll plugin to extend the pagination generator. +- [Jekyll-tagging](https://github.com/pattex/jekyll-tagging): Jekyll plugin to automatically generate a tag cloud and tag pages. +- [Jekyll-scholar](https://github.com/inukshuk/jekyll-scholar): Jekyll extensions for the blogging scholar. +- [Jekyll-asset_bundler](https://github.com/moshen/jekyll-asset_bundler): Bundles and minifies JavaScript and CSS. +- [Jekyll-assets](http://ixti.net/jekyll-assets/) by [ixti](https://github.com/ixti): Rails-alike assets pipeline (write assets in CoffeeScript, Sass, LESS etc; specify dependencies for automatic bundling using simple declarative comments in assets; minify and compress; use JST templates; cache bust; and many-many more). +- [File compressor](https://gist.github.com/2758691) by [mytharcher](https://github.com/mytharcher): Compress HTML and JavaScript files on site build. +- [Jekyll-minibundle](https://github.com/tkareine/jekyll-minibundle): Asset bundling and cache busting using external minification tool of your choice. No gem dependencies. +- [Singlepage-jekyll](https://github.com/JCB-K/singlepage-jekyll) by [JCB-K](https://github.com/JCB-K): Turns Jekyll into a dynamic one-page website. +
Jekyll Plugins Wanted

From afb1561c83ad0d842a1680ed86b68c655e213d42 Mon Sep 17 00:00:00 2001 From: Rob Wierzbowski Date: Tue, 16 Jul 2013 03:17:57 -0400 Subject: [PATCH 31/85] Escape/remove single '_' and '*'s that maruku chokes on. --- site/docs/plugins.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/docs/plugins.md b/site/docs/plugins.md index 8614e8d7..5575d4e9 100644 --- a/site/docs/plugins.md +++ b/site/docs/plugins.md @@ -372,7 +372,7 @@ You can find a few useful plugins at the following locations: - [LESS Converter by Josh Brown](https://gist.github.com/760265): Simple LESS converter. - [Upcase Converter by Blake Smith](https://gist.github.com/449463): An example Jekyll converter. - [CoffeeScript Converter by phaer](https://gist.github.com/959938): A [CoffeeScript](http://coffeescript.org) to Javascript converter. -- [Markdown References by Olov Lassus](https://github.com/olov/jekyll-references): Keep all your markdown reference-style link definitions in one _references.md file. +- [Markdown References by Olov Lassus](https://github.com/olov/jekyll-references): Keep all your markdown reference-style link definitions in one \_references.md file. - [Stylus Converter](https://gist.github.com/988201): Convert .styl to .css. - [ReStructuredText Converter](https://github.com/xdissent/jekyll-rst): Converts ReST documents to HTML with Pygments syntax highlighting. - [Jekyll-pandoc-plugin](https://github.com/dsanson/jekyll-pandoc-plugin): Use pandoc for rendering markdown. @@ -420,7 +420,7 @@ You can find a few useful plugins at the following locations: - [Jekyll-devonly_tag](https://gist.github.com/2403522): A block tag for including markup only during development. - [JekyllGalleryTag](https://github.com/redwallhp/JekyllGalleryTag) by [redwallhp](https://github.com/redwallhp): Generates thumbnails from a directory of images and displays them in a grid. - [Youku and Tudou Embed](https://gist.github.com/Yexiaoxing/5891929): Liquid plugin for embedding Youku and Tudou videos. -- [Jekyll-swfobject](https://github.com/sectore/jekyll-swfobject): Liquid plugin for embedding Adobe Flash files (*.swf) using [SWFObject](http://code.google.com/p/swfobject/). +- [Jekyll-swfobject](https://github.com/sectore/jekyll-swfobject): Liquid plugin for embedding Adobe Flash files (.swf) using [SWFObject](http://code.google.com/p/swfobject/). - [Jekyll Picture Tag](https://github.com/robwierzbowski/jekyll-picture-tag): Easy responsive images for Jekyll. Based on the proposed [``](http://picture.responsiveimages.org/) element, polyfilled with Scott Jelh's [Picturefill](https://github.com/scottjehl/picturefill). - [Jekyll Image Tag](https://github.com/robwierzbowski/jekyll-image-tag): Better images for Jekyll. Save image presets, generate resized images, and add classes, alt text, and other attributes. From 37dc75941055c7543bc78edb8a027ff2ca11c054 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 16 Jul 2013 18:04:56 +0200 Subject: [PATCH 32/85] Pages are not alphabetical. https://github.com/mojombo/jekyll/commit/f25fe1c86fd6d9fb05f23222711e3678d4453371#commitcomment-3644377 --- site/docs/variables.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/docs/variables.md b/site/docs/variables.md index 979d358d..cf710f3e 100644 --- a/site/docs/variables.md +++ b/site/docs/variables.md @@ -88,7 +88,7 @@ following is a reference of the available data.

site.pages

- An alphabetical list of all Pages. + A list of all Pages.

From 475c4c399db58e4bf3318f4cf208e893c60fe329 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 16 Jul 2013 18:05:53 +0200 Subject: [PATCH 33/85] Update history to reflect removal of erroneous statement in docs about site.pages' sorting. --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 640a2468..410d3d3e 100644 --- a/History.markdown +++ b/History.markdown @@ -10,6 +10,7 @@ ### Site Enhancements * Add Jekyll Image Tag to the plugins list (#1306) + * Remove erroneous statement that `site.pages` are sorted alphabetically. ## 1.1.0 / 2013-07-14 From 52b3afdb714022dbab8260d77404df954522bcb2 Mon Sep 17 00:00:00 2001 From: John Hughes Date: Tue, 16 Jul 2013 20:30:22 +0100 Subject: [PATCH 34/85] Update Extras page in the docs to include Kramdown to fix #1313 --- site/docs/extras.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/site/docs/extras.md b/site/docs/extras.md index db25ebf5..3344f8ac 100644 --- a/site/docs/extras.md +++ b/site/docs/extras.md @@ -19,7 +19,7 @@ fork](http://github.com/remi/maruku). ## RDiscount If you prefer to use [RDiscount](http://github.com/rtomayko/rdiscount) instead -of [Maruku](http://github.com/bhollis/maruku) for markdown, just make sure you have +of [Maruku](http://github.com/bhollis/maruku) for Markdown, just make sure you have it installed: {% highlight bash %} @@ -33,3 +33,24 @@ have Jekyll run with that option. # In _config.yml markdown: rdiscount {% endhighlight %} + +## Kramdown + +You can also use [Kramdown](http://kramdown.rubyforge.org/) instead of Maruku +for Markdown. Make sure that Kramdown is installed: + +{% highlight bash %} +$ sudo gem install kramdown +{% endhighlight %} + +Then you can specify Kramdown as the Markdown engine in `_config.yml`. + +{% highlight bash %} +# In _config.yml +markdown: kramdown +{% endhighlight %} + +Kramdown has various options for customizing the HTML output. The +[Configuration](/docs/configuration/) page lists the default options used by +Jekyll. A complete list of options is also available on the [Kramdown +website](http://kramdown.rubyforge.org/options.html). From aae84c4180b84c29a538f29ad552eac7099ed063 Mon Sep 17 00:00:00 2001 From: John Hughes Date: Tue, 16 Jul 2013 21:01:01 +0100 Subject: [PATCH 35/85] Add brackets around sudo on Extras page --- site/docs/extras.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/docs/extras.md b/site/docs/extras.md index 3344f8ac..11ecce8f 100644 --- a/site/docs/extras.md +++ b/site/docs/extras.md @@ -23,7 +23,7 @@ of [Maruku](http://github.com/bhollis/maruku) for Markdown, just make sure you h it installed: {% highlight bash %} -$ sudo gem install rdiscount +$ [sudo] gem install rdiscount {% endhighlight %} And then specify RDiscount as the Markdown engine in your `_config.yml` file to @@ -40,7 +40,7 @@ You can also use [Kramdown](http://kramdown.rubyforge.org/) instead of Maruku for Markdown. Make sure that Kramdown is installed: {% highlight bash %} -$ sudo gem install kramdown +$ [sudo] gem install kramdown {% endhighlight %} Then you can specify Kramdown as the Markdown engine in `_config.yml`. From 2e8c4359a1029101aefd41fb396d748b823b9f1f Mon Sep 17 00:00:00 2001 From: John Hughes Date: Tue, 16 Jul 2013 21:06:30 +0100 Subject: [PATCH 36/85] Change syntax highlighting to YAML on Extras page --- site/docs/extras.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/docs/extras.md b/site/docs/extras.md index 11ecce8f..0c190ec1 100644 --- a/site/docs/extras.md +++ b/site/docs/extras.md @@ -29,7 +29,7 @@ $ [sudo] gem install rdiscount And then specify RDiscount as the Markdown engine in your `_config.yml` file to have Jekyll run with that option. -{% highlight bash %} +{% highlight yaml %} # In _config.yml markdown: rdiscount {% endhighlight %} @@ -45,7 +45,7 @@ $ [sudo] gem install kramdown Then you can specify Kramdown as the Markdown engine in `_config.yml`. -{% highlight bash %} +{% highlight yaml %} # In _config.yml markdown: kramdown {% endhighlight %} From 7d18d2843b882258a9a478aeaf91fa7494c0edde Mon Sep 17 00:00:00 2001 From: Anatol Broder Date: Wed, 17 Jul 2013 01:11:00 +0200 Subject: [PATCH 37/85] Add description for drafts folder. Fix #1319 --- site/docs/structure.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/site/docs/structure.md b/site/docs/structure.md index 98bbef3a..aade3127 100644 --- a/site/docs/structure.md +++ b/site/docs/structure.md @@ -60,6 +60,18 @@ An overview of what each of these does:

+ + +

_drafts

+ + +

+ + Drafts are unpublished posts. The format of these files is without a date: title.MARKUP. Learn how to work with drafts. + +

+ +

_includes

From 840f57ca07607f23188560d700d4f2bdd5567f48 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Tue, 16 Jul 2013 22:38:02 -0500 Subject: [PATCH 38/85] Update history to reflect merge of #1320 --- History.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/History.markdown b/History.markdown index 410d3d3e..f9e120d0 100644 --- a/History.markdown +++ b/History.markdown @@ -11,6 +11,8 @@ ### Site Enhancements * Add Jekyll Image Tag to the plugins list (#1306) * Remove erroneous statement that `site.pages` are sorted alphabetically. + * Add info about the `_drafts` directory to the directory structure + docs (#1320) ## 1.1.0 / 2013-07-14 From 4df051c49bdb05e75ec86568f2e1fde92165cfdb Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Tue, 16 Jul 2013 22:49:32 -0500 Subject: [PATCH 39/85] Update history to reflect merge of #1310 --- History.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/History.markdown b/History.markdown index f9e120d0..231c5838 100644 --- a/History.markdown +++ b/History.markdown @@ -13,6 +13,8 @@ * Remove erroneous statement that `site.pages` are sorted alphabetically. * Add info about the `_drafts` directory to the directory structure docs (#1320) + * Improve the layout of the plugin listing by organizing it into + categories (#1310) ## 1.1.0 / 2013-07-14 From a880b7f99f7a392848d16bc428dc17b97170c0d5 Mon Sep 17 00:00:00 2001 From: Wlodek Bzyl Date: Fri, 19 Jul 2013 16:01:04 +0200 Subject: [PATCH 40/85] Remove superfluous 'table' selector from main.css in 'jekyll new' site template. Closes #1323 --- lib/site_template/css/main.css | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lib/site_template/css/main.css b/lib/site_template/css/main.css index 0e86700b..50a81804 100755 --- a/lib/site_template/css/main.css +++ b/lib/site_template/css/main.css @@ -29,11 +29,6 @@ a { color: #00a; } a:hover { color: #000; } a:visited { color: #a0a; } -table { - font-size: inherit; - font: 100%; -} - /*****************************************************************************/ /* /* Home From 5c9aa191239ddee9c6550a22f1583e50c431bb41 Mon Sep 17 00:00:00 2001 From: Rob Wierzbowski Date: Fri, 19 Jul 2013 11:03:31 -0400 Subject: [PATCH 41/85] Add generator-jekyllrb and grunt-jekyll to plugins page --- site/docs/plugins.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/site/docs/plugins.md b/site/docs/plugins.md index 5575d4e9..f38595fa 100644 --- a/site/docs/plugins.md +++ b/site/docs/plugins.md @@ -448,6 +448,8 @@ You can find a few useful plugins at the following locations: - [File compressor](https://gist.github.com/2758691) by [mytharcher](https://github.com/mytharcher): Compress HTML and JavaScript files on site build. - [Jekyll-minibundle](https://github.com/tkareine/jekyll-minibundle): Asset bundling and cache busting using external minification tool of your choice. No gem dependencies. - [Singlepage-jekyll](https://github.com/JCB-K/singlepage-jekyll) by [JCB-K](https://github.com/JCB-K): Turns Jekyll into a dynamic one-page website. +- [generator-jekyllrb](https://github.com/robwierzbowski/generator-jekyllrb): A generator that wraps Jekyll in [Yeoman](http://yeoman.io/), a tool collection and workflow for builing modern web apps. +- [grunt-jekyll](https://github.com/dannygarcia/grunt-jekyll): A straightforward [Grunt](http://gruntjs.com/) plugin for Jekyll.
Jekyll Plugins Wanted
From 2b6bd5a40f76c897e3ae06caf9828eb2eb1a1396 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 20 Jul 2013 23:54:44 +0200 Subject: [PATCH 42/85] Update history to reflect merge of #1328 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 231c5838..aecbe07e 100644 --- a/History.markdown +++ b/History.markdown @@ -3,6 +3,7 @@ ### Major Enhancements ### Minor Enhancements + * Remove superfluous `table` selector from main.css in `jekyll new` template (#1328) ### Bug Fixes From b3b46f28740240563ef523e6e9c3a2a56f138513 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 20 Jul 2013 23:55:21 +0200 Subject: [PATCH 43/85] Update history to reflect merge of #1330 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index aecbe07e..7c2259cf 100644 --- a/History.markdown +++ b/History.markdown @@ -16,6 +16,7 @@ docs (#1320) * Improve the layout of the plugin listing by organizing it into categories (#1310) + * Add generator-jekyllrb and grunt-jekyll to plugins page (#1330) ## 1.1.0 / 2013-07-14 From 258c7d6e4a0c064ec46ed5234dde9989f3b0c52e Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 20 Jul 2013 23:57:29 +0200 Subject: [PATCH 44/85] Update history to reflect merge of #1318 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 7c2259cf..977d5f2d 100644 --- a/History.markdown +++ b/History.markdown @@ -17,6 +17,7 @@ * Improve the layout of the plugin listing by organizing it into categories (#1310) * Add generator-jekyllrb and grunt-jekyll to plugins page (#1330) + * Mention Kramdown as option for markdown parser on Extras page (#1318) ## 1.1.0 / 2013-07-14 From 234f35a025b515a30460ed9038b1fadd257c6510 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 21 Jul 2013 00:07:25 +0200 Subject: [PATCH 45/85] Update Quick-Start page to include reminder that all requirements must be installed for Jekyll to work. Fixes #1327. --- site/docs/quickstart.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/site/docs/quickstart.md b/site/docs/quickstart.md index e1a325a5..65af42b3 100644 --- a/site/docs/quickstart.md +++ b/site/docs/quickstart.md @@ -25,3 +25,8 @@ advantage of all the awesome configuration options Jekyll makes available.

In Jekyll 1.1, we switched the default markdown engine for sites generated with jekyll new to Redcarpet

+ +If you're running into problems, ensure you have all the [requirements +installed][Installation]. + +[Installation]: /docs/installation/ From 36e5d5da036cafa86de6120aa468b5b18ceadbab Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 21 Jul 2013 00:08:05 +0200 Subject: [PATCH 46/85] Update history to reflect closing of #1327 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 977d5f2d..e51e39df 100644 --- a/History.markdown +++ b/History.markdown @@ -18,6 +18,7 @@ categories (#1310) * Add generator-jekyllrb and grunt-jekyll to plugins page (#1330) * Mention Kramdown as option for markdown parser on Extras page (#1318) + * Update Quick-Start page to include reminder that all requirements must be installed (#1327) ## 1.1.0 / 2013-07-14 From f4d6ffeaac3ef6be7d2df0ec2c568cf0673751e5 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 21 Jul 2013 00:12:31 +0200 Subject: [PATCH 47/85] Include an HTML file in Templates docs so as not to confuse - we don't automatically markdownify/textilize includes. Fixes #1303. --- site/docs/templates.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/site/docs/templates.md b/site/docs/templates.md index b1152c3b..bf70932d 100644 --- a/site/docs/templates.md +++ b/site/docs/templates.md @@ -185,17 +185,17 @@ If you have small page fragments that you wish to include in multiple places on your site, you can use the `include` tag. {% highlight ruby %} -{% raw %}{% include sig.md %}{% endraw %} +{% raw %}{% include footer.html %}{% endraw %} {% endhighlight %} Jekyll expects all include files to be placed in an `_includes` directory at the root of your source directory. This will embed the contents of -`/_includes/sig.md` into the calling file. +`/_includes/footer.html` into the calling file. You can also pass parameters to an include: {% highlight ruby %} -{% raw %}{% include sig.textile param="value" %}{% endraw %} +{% raw %}{% include footer.html param="value" %}{% endraw %} {% endhighlight %} These parameters are available via Liquid in the include: From 9e22d23801fad50a7b69d84c0827a216a57a6717 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sun, 21 Jul 2013 00:13:44 +0200 Subject: [PATCH 48/85] Update history to reflect closing of #1303 --- History.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/History.markdown b/History.markdown index e51e39df..436e50a3 100644 --- a/History.markdown +++ b/History.markdown @@ -19,6 +19,8 @@ * Add generator-jekyllrb and grunt-jekyll to plugins page (#1330) * Mention Kramdown as option for markdown parser on Extras page (#1318) * Update Quick-Start page to include reminder that all requirements must be installed (#1327) + * Change filename in `include` example to an HTML file so as not to indicate that Jekyll + will automatically convert them. (#1303) ## 1.1.0 / 2013-07-14 From 5fb13d8047162111d2ed10067d509471933d20b1 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 10:04:45 +0200 Subject: [PATCH 49/85] Create a default command to run help if there are no arguments but to fail with non-zero exit code if the command is invalid. Props to @ggilder. --- bin/jekyll | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/bin/jekyll b/bin/jekyll index 01f97cf9..fe61508e 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -12,7 +12,7 @@ program :name, 'jekyll' program :version, Jekyll::VERSION program :description, 'Jekyll is a blog-aware, static site generator in Ruby' -default_command :help +default_command :default global_option '-s', '--source [DIR]', 'Source directory (defaults to ./)' global_option '-d', '--destination [DIR]', 'Destination directory (defaults to ./_site)' @@ -33,6 +33,16 @@ def normalize_options(options) options end +command :default do |c| + c.action do |args, options| + if args.empty? + command(:help).run + else + Jekyll.logger.abort_with "Invalid command. Use --help for more information" + end + end +end + command :new do |c| c.syntax = 'jekyll new PATH' c.description = 'Creates a new Jekyll site scaffold in PATH' From 374e6fcdf47292fad582abfe406126c971a70253 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 10:07:15 +0200 Subject: [PATCH 50/85] Add Jekyll::Stevenson#abort_with --- lib/jekyll/stevenson.rb | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/jekyll/stevenson.rb b/lib/jekyll/stevenson.rb index 5be5f04c..b825cea5 100644 --- a/lib/jekyll/stevenson.rb +++ b/lib/jekyll/stevenson.rb @@ -5,7 +5,7 @@ module Jekyll DEBUG = 0 INFO = 1 WARN = 2 - ERROR = 3 + ERROR = 3 # Public: Create a new instance of Stevenson, Jekyll's logger # @@ -22,7 +22,7 @@ module Jekyll # message - the message detail # # Returns nothing - def info(topic, message) + def info(topic, message = nil) $stdout.puts(message(topic, message)) if log_level <= INFO end @@ -32,7 +32,7 @@ module Jekyll # message - the message detail # # Returns nothing - def warn(topic, message) + def warn(topic, message = nil) $stderr.puts(message(topic, message).yellow) if log_level <= WARN end @@ -42,10 +42,21 @@ module Jekyll # message - the message detail # # Returns nothing - def error(topic, message) + def error(topic, message = nil) $stderr.puts(message(topic, message).red) if log_level <= ERROR end + # Public: Print a Jekyll error message to stderr and immediately abort the process + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # message - the message detail (can be omitted) + # + # Returns nothing + def abort_with(topic, message = nil) + error(topic, message) + abort + end + # Public: Build a Jekyll topic method # # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. From 04e0b318c8d9395a4b780c0ff2671b4e51a22afe Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 19 Jul 2013 15:43:04 +0200 Subject: [PATCH 51/85] Remove duplicate comment --- lib/jekyll/excerpt.rb | 36 ------------------------------------ 1 file changed, 36 deletions(-) diff --git a/lib/jekyll/excerpt.rb b/lib/jekyll/excerpt.rb index 16584963..ce0c3351 100644 --- a/lib/jekyll/excerpt.rb +++ b/lib/jekyll/excerpt.rb @@ -1,41 +1,5 @@ module Jekyll class Excerpt - - # Internal: Extract excerpt from the content - # - # By default excerpt is your first paragraph of a post: everything before - # the first two new lines: - # - # --- - # title: Example - # --- - # - # First paragraph with [link][1]. - # - # Second paragraph. - # - # [1]: http://example.com/ - # - # This is fairly good option for Markdown and Textile files. But might cause - # problems for HTML posts (which is quite unusual for Jekyll). If default - # excerpt delimiter is not good for you, you might want to set your own via - # configuration option `excerpt_separator`. For example, following is a good - # alternative for HTML posts: - # - # # file: _config.yml - # excerpt_separator: "" - # - # Notice that all markdown-style link references will be appended to the - # excerpt. So the example post above will have this excerpt source: - # - # First paragraph with [link][1]. - # - # [1]: http://example.com/ - # - # Excerpts are rendered same time as content is rendered. - # - # Returns excerpt String - include Convertible attr_accessor :post From 0e0e25b9ba75105295fb925751af83d6793fd83f Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 19 Jul 2013 15:43:26 +0200 Subject: [PATCH 52/85] start with Excerpt#output, otherwise call #to_s --- lib/jekyll/post.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index 1b70e31e..387c2752 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -109,7 +109,7 @@ module Jekyll if self.data.has_key? 'excerpt' self.data['excerpt'] else - self.extracted_excerpt.to_s + self.extracted_excerpt.output || self.extracted_excerpt.to_s end end From f99c726085569fffcb65de0a28da93df1473369b Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 19 Jul 2013 15:44:01 +0200 Subject: [PATCH 53/85] Override Excerpt#render_all_layouts to just assign content to output --- lib/jekyll/excerpt.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/jekyll/excerpt.rb b/lib/jekyll/excerpt.rb index ce0c3351..fb63f5cb 100644 --- a/lib/jekyll/excerpt.rb +++ b/lib/jekyll/excerpt.rb @@ -31,6 +31,10 @@ module Jekyll (output && output.include?(something)) || content.include?(something) end + def render_all_layouts(layouts, payload, info) + output = content + end + # The UID for this post (useful in feeds). # e.g. /2008/11/05/my-awesome-post # From c6a37a424b25b0ff73fa80cd80ebf5868a457ec1 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 19 Jul 2013 15:46:20 +0200 Subject: [PATCH 54/85] Debug statements - take them out later --- lib/jekyll/convertible.rb | 1 + lib/jekyll/excerpt.rb | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb index b247ac4e..1e5cfdeb 100644 --- a/lib/jekyll/convertible.rb +++ b/lib/jekyll/convertible.rb @@ -78,6 +78,7 @@ module Jekyll # # Returns the converted content def render_liquid(content, payload, info) + Jekyll.logger.debug "Rendering Liquid for #{self.path}", "" Liquid::Template.parse(content).render!(payload, info) rescue Exception => e Jekyll.logger.error "Liquid Exception:", "#{e.message} in #{payload[:file]}" diff --git a/lib/jekyll/excerpt.rb b/lib/jekyll/excerpt.rb index fb63f5cb..682bf135 100644 --- a/lib/jekyll/excerpt.rb +++ b/lib/jekyll/excerpt.rb @@ -33,6 +33,7 @@ module Jekyll def render_all_layouts(layouts, payload, info) output = content + Jekyll.logger.debug "Output of", "#{self.path} => '#{self.output}'" end # The UID for this post (useful in feeds). @@ -51,6 +52,7 @@ module Jekyll end def to_s + Jekyll.logger.debug "Excerpt#to_s:", "#{output} || #{content}" output || content end From e3594728706db09aae99401b317fdb64a9751b2e Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 11:30:19 +0200 Subject: [PATCH 55/85] May as well add Stevenson#debug --- lib/jekyll/stevenson.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/jekyll/stevenson.rb b/lib/jekyll/stevenson.rb index 5be5f04c..12e65651 100644 --- a/lib/jekyll/stevenson.rb +++ b/lib/jekyll/stevenson.rb @@ -15,6 +15,16 @@ module Jekyll def initialize(level = INFO) @log_level = level end + + # Public: Print a jekyll debug message to stdout + # + # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. + # message - the message detail + # + # Returns nothing + def debug(topic, message = nil) + $stdout.puts(message(topic, message)) if log_level <= DEBUG + end # Public: Print a jekyll message to stdout # From 26dc14881c444198f2c57d740d8ab126525a5b67 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 11:31:15 +0200 Subject: [PATCH 56/85] Moving data around to make sure excerpts have no layouts but that they are still converted with liquid and the proper converter --- lib/jekyll/excerpt.rb | 43 +++++++++++++++++++++++++------------------ lib/jekyll/post.rb | 24 ++++++++++++++---------- 2 files changed, 39 insertions(+), 28 deletions(-) diff --git a/lib/jekyll/excerpt.rb b/lib/jekyll/excerpt.rb index 682bf135..768acd97 100644 --- a/lib/jekyll/excerpt.rb +++ b/lib/jekyll/excerpt.rb @@ -13,27 +13,41 @@ module Jekyll # # Returns the new Post. def initialize(post) - @post = post - @content = extract_excerpt(post.content) + self.post = post + self.content = extract_excerpt(post.content) end - %w[site name data ext].each do |meth| + %w[site name ext].each do |meth| define_method(meth) do post.send(meth) end end + def to_liquid + post.to_liquid(Post::EXCERPT_ATTRIBUTES_FOR_LIQUID) + end + + # Fetch YAML front-matter data from related post, without layout key + # + # Returns Hash of post data + def data + @data ||= post.data.dup + @data.delete("layout") if @data.has_key?("layout") + @data + end + + # 'Path' of the excerpt. + # + # Returns the path for the post this excerpt belongs to with #excerpt appended def path File.join(post.path, "#excerpt") end + # Check if excerpt includes a string + # + # Returns true if the string passed in def include?(something) - (output && output.include?(something)) || content.include?(something) - end - - def render_all_layouts(layouts, payload, info) - output = content - Jekyll.logger.debug "Output of", "#{self.path} => '#{self.output}'" + (self.output && self.output.include?(something)) || self.content.include?(something) end # The UID for this post (useful in feeds). @@ -44,16 +58,9 @@ module Jekyll File.join(post.dir, post.slug, "#excerpt") end - # Convert this post into a Hash for use in Liquid templates. - # - # Returns the representative Hash. - def to_liquid - post.to_liquid - end - def to_s - Jekyll.logger.debug "Excerpt#to_s:", "#{output} || #{content}" - output || content + Jekyll.logger.debug "Excerpt#to_s:", "#{self.output} || #{content}" + self.output || self.content end # Returns the shorthand String identifier of this Post. diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index 387c2752..693517a6 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -10,8 +10,7 @@ module Jekyll # Valid post name regex. MATCHER = /^(.+\/)*(\d+-\d+-\d+)-(.*)(\.[^.]+)$/ - # Attributes for Liquid templates - ATTRIBUTES_FOR_LIQUID = %w[ + EXCERPT_ATTRIBUTES_FOR_LIQUID = %w[ title url date @@ -20,11 +19,15 @@ module Jekyll next previous tags - content - excerpt path ] + # Attributes for Liquid templates + ATTRIBUTES_FOR_LIQUID = EXCERPT_ATTRIBUTES_FOR_LIQUID.concat(%w[ + content + excerpt + ]) + # Post name validator. Post filenames must be like: # 2008-11-05-my-awesome-post.textile # @@ -109,7 +112,7 @@ module Jekyll if self.data.has_key? 'excerpt' self.data['excerpt'] else - self.extracted_excerpt.output || self.extracted_excerpt.to_s + self.extracted_excerpt.to_s end end @@ -249,12 +252,13 @@ module Jekyll # construct payload payload = { "site" => { "related_posts" => related_posts(site_payload["site"]["posts"]) }, - "page" => self.to_liquid + "page" => self.to_liquid(EXCERPT_ATTRIBUTES_FOR_LIQUID) }.deep_merge(site_payload) - self.extracted_excerpt.do_layout(payload, layouts) + self.extracted_excerpt.do_layout(payload, {}) + Jekyll.logger.info("", "#{self.excerpt}".green) - do_layout(payload, layouts) + do_layout(payload.merge({"page" => self.to_liquid}), layouts) end # Obtain destination path. @@ -272,8 +276,8 @@ module Jekyll # Convert this post into a Hash for use in Liquid templates. # # Returns the representative Hash. - def to_liquid - further_data = Hash[ATTRIBUTES_FOR_LIQUID.map { |attribute| + def to_liquid(attrs = ATTRIBUTES_FOR_LIQUID) + further_data = Hash[attrs.map { |attribute| [attribute, send(attribute)] }] data.deep_merge(further_data) From f883acc6644bd60930aa88f2504af3b0e04a7f89 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 11:33:19 +0200 Subject: [PATCH 57/85] Remove debug statements --- lib/jekyll/convertible.rb | 1 - lib/jekyll/excerpt.rb | 1 - lib/jekyll/post.rb | 1 - 3 files changed, 3 deletions(-) diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb index 1e5cfdeb..b247ac4e 100644 --- a/lib/jekyll/convertible.rb +++ b/lib/jekyll/convertible.rb @@ -78,7 +78,6 @@ module Jekyll # # Returns the converted content def render_liquid(content, payload, info) - Jekyll.logger.debug "Rendering Liquid for #{self.path}", "" Liquid::Template.parse(content).render!(payload, info) rescue Exception => e Jekyll.logger.error "Liquid Exception:", "#{e.message} in #{payload[:file]}" diff --git a/lib/jekyll/excerpt.rb b/lib/jekyll/excerpt.rb index 768acd97..a5382466 100644 --- a/lib/jekyll/excerpt.rb +++ b/lib/jekyll/excerpt.rb @@ -59,7 +59,6 @@ module Jekyll end def to_s - Jekyll.logger.debug "Excerpt#to_s:", "#{self.output} || #{content}" self.output || self.content end diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index 693517a6..9ad25399 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -256,7 +256,6 @@ module Jekyll }.deep_merge(site_payload) self.extracted_excerpt.do_layout(payload, {}) - Jekyll.logger.info("", "#{self.excerpt}".green) do_layout(payload.merge({"page" => self.to_liquid}), layouts) end From 81a7b2267267d3712eaadf8e4bf8f0b14e66b72b Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 12:22:47 +0200 Subject: [PATCH 58/85] Add a new post, bump @site.posts.size --- .../2013-07-22-post-excerpt-with-layout.markdown | 14 ++++++++++++++ test/test_generated_site.rb | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown diff --git a/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown b/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown new file mode 100644 index 00000000..3eb86140 --- /dev/null +++ b/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown @@ -0,0 +1,14 @@ +--- +layout: post +title: Post Excerpt with Layout +--- + +First paragraph with [link ref][link]. + +Second paragraph + +--- + +Third paragraph + +[link]: http://www.jekyllrb.com/ diff --git a/test/test_generated_site.rb b/test/test_generated_site.rb index 35c451c5..dd24187f 100644 --- a/test/test_generated_site.rb +++ b/test/test_generated_site.rb @@ -14,7 +14,7 @@ class TestGeneratedSite < Test::Unit::TestCase end should "ensure post count is as expected" do - assert_equal 34, @site.posts.size + assert_equal 35, @site.posts.size end should "insert site.posts into the index" do From 1bbacbd396c812b2b840f392af0c086a37b9d864 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 12:40:49 +0200 Subject: [PATCH 59/85] Dumb tests are helpful anyway --- test/test_excerpt.rb | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 test/test_excerpt.rb diff --git a/test/test_excerpt.rb b/test/test_excerpt.rb new file mode 100644 index 00000000..9c4b6a72 --- /dev/null +++ b/test/test_excerpt.rb @@ -0,0 +1,55 @@ +require 'helper' + +class TestExcerpt < Test::Unit::TestCase + def setup_post(file) + Post.new(@site, source_dir, '', file) + end + + def do_render(post) + layouts = { "default" => Layout.new(@site, source_dir('_layouts'), "simple.html")} + post.render(layouts, {"site" => {"posts" => []}}) + end + + context "An extracted excerpt" do + setup do + clear_dest + stub(Jekyll).configuration { Jekyll::Configuration::DEFAULTS } + @site = Site.new(Jekyll.configuration) + @post = setup_post("2013-07-22-post-excerpt-with-layout.markdown") + end + + context "#to_liquid" do + should "contain the proper page data to mimick the post liquid" do + assert_equal {}, @post.excerpt.to_liquid.to_s + end + end + + context "#content" do + + context "before render" do + should "be the first paragraph of the page" do + assert_equal "First paragraph with [link ref][link].\n\n[link]: http://www.jekyllrb.com/", @post.excerpt.to_s + end + + should "contain any refs at the bottom of the page" do + assert @post.excerpt.to_s.include?("[link]: http://www.jekyllrb.com/") + end + end + + context "after render" do + setup do + @rendered_post = @post.dup + do_render(@rendered_post) + end + + should "be the first paragraph of the page" do + assert_equal "

First paragraph with link ref.

", @rendered_post.excerpt.content + end + + should "link properly" do + assert @rendered_post.excerpt.to_s.include?("http://www.jekyllrb.com/") + end + end + end + end +end From 3418a9197a2878b55f4b1e31da08baeee0a2157f Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 12:57:03 +0200 Subject: [PATCH 60/85] Add categories and tags and test #to_liquid --- ...2013-07-22-post-excerpt-with-layout.markdown | 9 +++++++++ test/test_excerpt.rb | 17 ++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown b/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown index 3eb86140..9d149266 100644 --- a/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown +++ b/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown @@ -1,6 +1,15 @@ --- layout: post title: Post Excerpt with Layout +categories: +- jekyll +- excerpt +- blah +tags: +- first +- second +- third +- jekyllrb.com --- First paragraph with [link ref][link]. diff --git a/test/test_excerpt.rb b/test/test_excerpt.rb index 9c4b6a72..5bdc72e0 100644 --- a/test/test_excerpt.rb +++ b/test/test_excerpt.rb @@ -16,11 +16,17 @@ class TestExcerpt < Test::Unit::TestCase stub(Jekyll).configuration { Jekyll::Configuration::DEFAULTS } @site = Site.new(Jekyll.configuration) @post = setup_post("2013-07-22-post-excerpt-with-layout.markdown") + @excerpt = @post.send :extract_excerpt end context "#to_liquid" do should "contain the proper page data to mimick the post liquid" do - assert_equal {}, @post.excerpt.to_liquid.to_s + assert_equal "", @excerpt.to_liquid + assert_equal "Post Excerpt with Layout", @excerpt.to_liquid["title"] + assert_equal "/jekyll/excerpt/blah/2013/07/22/post-excerpt-with-layout.html", @excerpt.to_liquid["url"] + assert_equal Time.new(2013, 07, 22), @excerpt.to_liquid["date"] + assert_equal %w[jekyll excerpt blah], @excerpt.to_liquid["categories"] + assert_equal %w[first second third jekyllrb.com], @excerpt.to_liquid["tags"] end end @@ -28,11 +34,11 @@ class TestExcerpt < Test::Unit::TestCase context "before render" do should "be the first paragraph of the page" do - assert_equal "First paragraph with [link ref][link].\n\n[link]: http://www.jekyllrb.com/", @post.excerpt.to_s + assert_equal "First paragraph with [link ref][link].\n\n[link]: http://www.jekyllrb.com/", @excerpt.content end should "contain any refs at the bottom of the page" do - assert @post.excerpt.to_s.include?("[link]: http://www.jekyllrb.com/") + assert @excerpt.content.include?("[link]: http://www.jekyllrb.com/") end end @@ -40,14 +46,15 @@ class TestExcerpt < Test::Unit::TestCase setup do @rendered_post = @post.dup do_render(@rendered_post) + @extracted_excerpt = @rendered_post.send :extracted_excerpt end should "be the first paragraph of the page" do - assert_equal "

First paragraph with link ref.

", @rendered_post.excerpt.content + assert_equal "

First paragraph with link ref.

", @extracted_excerpt.content end should "link properly" do - assert @rendered_post.excerpt.to_s.include?("http://www.jekyllrb.com/") + assert @extracted_excerpt.content.include?("http://www.jekyllrb.com/") end end end From 930aac3b79f41142a7123b3f897b2fed39a1ddfc Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 13:03:48 +0200 Subject: [PATCH 61/85] Unit tests are simple --- test/test_excerpt.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/test_excerpt.rb b/test/test_excerpt.rb index 5bdc72e0..48588d4f 100644 --- a/test/test_excerpt.rb +++ b/test/test_excerpt.rb @@ -21,12 +21,12 @@ class TestExcerpt < Test::Unit::TestCase context "#to_liquid" do should "contain the proper page data to mimick the post liquid" do - assert_equal "", @excerpt.to_liquid assert_equal "Post Excerpt with Layout", @excerpt.to_liquid["title"] - assert_equal "/jekyll/excerpt/blah/2013/07/22/post-excerpt-with-layout.html", @excerpt.to_liquid["url"] + assert_equal "/bar/baz/z_category/2013/07/22/post-excerpt-with-layout.html", @excerpt.to_liquid["url"] assert_equal Time.new(2013, 07, 22), @excerpt.to_liquid["date"] - assert_equal %w[jekyll excerpt blah], @excerpt.to_liquid["categories"] + assert_equal %w[bar baz z_category], @excerpt.to_liquid["categories"] assert_equal %w[first second third jekyllrb.com], @excerpt.to_liquid["tags"] + assert_equal "_posts/2013-07-22-post-excerpt-with-layout.markdown", @excerpt.to_liquid["path"] end end From 95491eb7e7c111b20b86b18756a26a0f971c4595 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 13:04:07 +0200 Subject: [PATCH 62/85] update categories on the new post to not fuck up old numbers --- .../_posts/2013-07-22-post-excerpt-with-layout.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown b/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown index 9d149266..07b0e5f3 100644 --- a/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown +++ b/test/source/_posts/2013-07-22-post-excerpt-with-layout.markdown @@ -2,9 +2,9 @@ layout: post title: Post Excerpt with Layout categories: -- jekyll -- excerpt -- blah +- bar +- baz +- z_category tags: - first - second From 5d6b755d7d246a82f760b06bc6bfa27b01fbd6be Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 13:42:40 +0200 Subject: [PATCH 63/85] feature maybe? --- features/post_excerpts.feature | 50 +++++++++++++++++++++++ features/step_definitions/jekyll_steps.rb | 6 +++ 2 files changed, 56 insertions(+) create mode 100644 features/post_excerpts.feature diff --git a/features/post_excerpts.feature b/features/post_excerpts.feature new file mode 100644 index 00000000..2254e29d --- /dev/null +++ b/features/post_excerpts.feature @@ -0,0 +1,50 @@ +Feature: Post excerpts + As a hacker who likes to blog + I want to be able to make a static sitej + In order to share my awesome ideas with the interwebs + But some people can only focus for a few moments + So just give them a taste + + Scenario: An excerpt without a layout + Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}" + And I have a _posts directory + And I have the following posts: + | title | date | layout | content | + | entry1 | 2007-12-31 | post | content for entry1. | + When I run jekyll + Then the _site directory should exist + And I should see exactly "

content for entry1.

" in "_site/index.html" + + Scenario: An excerpt from a post with a layout + Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}" + And I have a _posts directory + And I have a _layouts directory + And I have a post layout that contains "{{ page.excerpt }}" + And I have the following posts: + | title | date | layout | content | + | entry1 | 2007-12-31 | post | content for entry1. | + When I run jekyll + Then the _site directory should exist + And the _site/2007 directory should exist + And the _site/2007/12 directory should exist + And the _site/2007/12/31 directory should exist + And the "_site/2007/12/31/entry1.html" file should exist + And I should see exactly "

content for entry1.

" in "_site/2007/12/31/entry1.html" + And I should see exactly "

content for entry1.

" in "_site/index.html" + + Scenario: An excerpt from a post with a layout which has context + Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}" + And I have a _posts directory + And I have a _layouts directory + And I have a post layout that contains "{{ page.excerpt }}" + And I have the following posts: + | title | date | layout | content | + | entry1 | 2007-12-31 | post | content for entry1. | + When I run jekyll + Then the _site directory should exist + And the _site/2007 directory should exist + And the _site/2007/12 directory should exist + And the _site/2007/12/31 directory should exist + And the "_site/2007/12/31/entry1.html" file should exist + And I should see exactly "

content for entry1.

" in "_site/index.html" + And I should see exactly "

content for entry1.

" in "_site/2007/12/31/entry1.html" diff --git a/features/step_definitions/jekyll_steps.rb b/features/step_definitions/jekyll_steps.rb index 9208c4ec..136f048d 100644 --- a/features/step_definitions/jekyll_steps.rb +++ b/features/step_definitions/jekyll_steps.rb @@ -4,6 +4,8 @@ Before do Dir.chdir(TEST_DIR) end +World(Test::Unit::Assertions) + Given /^I have a blank site in "(.*)"$/ do |path| FileUtils.mkdir(path) end @@ -143,6 +145,10 @@ Then /^I should see "(.*)" in "(.*)"$/ do |text, file| assert Regexp.new(text).match(File.open(file).readlines.join) end +Then /^I should see exactly "(.*)" in "(.*)"$/ do |text, file| + assert_equal text, File.open(file).readlines.join.strip +end + Then /^I should not see "(.*)" in "(.*)"$/ do |text, file| assert_no_match Regexp.new(text), File.read(file) end From 1e7dbcaaff7769b7a6df816ca005205824469683 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 14:37:51 +0200 Subject: [PATCH 64/85] 1.8.7 doesn't support Time.new(*args), so use Time.parse instead --- test/test_excerpt.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_excerpt.rb b/test/test_excerpt.rb index 48588d4f..a72d1bd2 100644 --- a/test/test_excerpt.rb +++ b/test/test_excerpt.rb @@ -23,7 +23,7 @@ class TestExcerpt < Test::Unit::TestCase should "contain the proper page data to mimick the post liquid" do assert_equal "Post Excerpt with Layout", @excerpt.to_liquid["title"] assert_equal "/bar/baz/z_category/2013/07/22/post-excerpt-with-layout.html", @excerpt.to_liquid["url"] - assert_equal Time.new(2013, 07, 22), @excerpt.to_liquid["date"] + assert_equal Time.parse("2013-07-22"), @excerpt.to_liquid["date"] assert_equal %w[bar baz z_category], @excerpt.to_liquid["categories"] assert_equal %w[first second third jekyllrb.com], @excerpt.to_liquid["tags"] assert_equal "_posts/2013-07-22-post-excerpt-with-layout.markdown", @excerpt.to_liquid["path"] From a62d868c748670502029f3203a1d6b1c26f3131e Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Mon, 22 Jul 2013 14:57:44 +0200 Subject: [PATCH 65/85] s/sitej/site/ props @benbalter --- features/post_excerpts.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/features/post_excerpts.feature b/features/post_excerpts.feature index 2254e29d..09e41338 100644 --- a/features/post_excerpts.feature +++ b/features/post_excerpts.feature @@ -1,6 +1,6 @@ Feature: Post excerpts As a hacker who likes to blog - I want to be able to make a static sitej + I want to be able to make a static site In order to share my awesome ideas with the interwebs But some people can only focus for a few moments So just give them a taste From d717ec7f3db427d2ca79648d96e4077ab73e1422 Mon Sep 17 00:00:00 2001 From: Anatol Broder Date: Tue, 23 Jul 2013 19:21:06 +0200 Subject: [PATCH 66/85] Add master branch feed --- site/_includes/top.html | 1 + 1 file changed, 1 insertion(+) diff --git a/site/_includes/top.html b/site/_includes/top.html index 9a0d5a8f..8b9bce1f 100644 --- a/site/_includes/top.html +++ b/site/_includes/top.html @@ -5,6 +5,7 @@ {{ page.title }} + From 8e7b6bf5ff56e6bb8d0f1019c19b351f1d600e39 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 23 Jul 2013 20:00:27 +0200 Subject: [PATCH 67/85] Update history to reflect merge of #1338 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 436e50a3..1be8015a 100644 --- a/History.markdown +++ b/History.markdown @@ -4,6 +4,7 @@ ### Minor Enhancements * Remove superfluous `table` selector from main.css in `jekyll new` template (#1328) + * Abort with non-zero exit codes (#1338) ### Bug Fixes From 0bb2af8dee0c7d12a9a49c9a825871cfff7d7248 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Tue, 23 Jul 2013 20:04:39 +0200 Subject: [PATCH 68/85] Remove superfluous conditional, props @mattr- --- lib/jekyll/excerpt.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jekyll/excerpt.rb b/lib/jekyll/excerpt.rb index a5382466..a02272b5 100644 --- a/lib/jekyll/excerpt.rb +++ b/lib/jekyll/excerpt.rb @@ -32,7 +32,7 @@ module Jekyll # Returns Hash of post data def data @data ||= post.data.dup - @data.delete("layout") if @data.has_key?("layout") + @data.delete("layout") @data end From dd4ec1691b89544f853970e3203d9e60ec4634be Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Tue, 23 Jul 2013 20:37:06 -0500 Subject: [PATCH 69/85] Update history to reflect merge of #1343 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 1be8015a..ace42e39 100644 --- a/History.markdown +++ b/History.markdown @@ -22,6 +22,7 @@ * Update Quick-Start page to include reminder that all requirements must be installed (#1327) * Change filename in `include` example to an HTML file so as not to indicate that Jekyll will automatically convert them. (#1303) + * Add an RSS feed for commits to Jekyll (#1343) ## 1.1.0 / 2013-07-14 From 8e0a4e927f49580ed7981610edd64da5a10e92d3 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Tue, 23 Jul 2013 20:44:11 -0500 Subject: [PATCH 70/85] Update history to reflect merge of #1339 --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index ace42e39..97fff7f5 100644 --- a/History.markdown +++ b/History.markdown @@ -7,6 +7,7 @@ * Abort with non-zero exit codes (#1338) ### Bug Fixes + * Fix up the rendering of excerpts (#1339) ### Development Fixes From df1a4100a1f97742d1414202995840dfc65bfe44 Mon Sep 17 00:00:00 2001 From: Anatol Broder Date: Wed, 24 Jul 2013 08:21:42 +0200 Subject: [PATCH 71/85] Use different quote types for HTML and Liquid --- site/_includes/docs_contents.html | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/site/_includes/docs_contents.html b/site/_includes/docs_contents.html index 909832f4..35904fbf 100644 --- a/site/_includes/docs_contents.html +++ b/site/_includes/docs_contents.html @@ -2,43 +2,43 @@