jekyll 3.1.0.pre.beta1 → 3.1.0.pre.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of jekyll might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.markdown +1 -0
- data/bin/jekyll +17 -8
- data/lib/jekyll.rb +6 -6
- data/lib/jekyll/cleaner.rb +1 -1
- data/lib/jekyll/collection.rb +8 -7
- data/lib/jekyll/command.rb +0 -4
- data/lib/jekyll/commands/build.rb +2 -6
- data/lib/jekyll/commands/clean.rb +1 -3
- data/lib/jekyll/commands/doctor.rb +15 -19
- data/lib/jekyll/commands/help.rb +0 -2
- data/lib/jekyll/commands/serve.rb +11 -3
- data/lib/jekyll/commands/serve/servlet.rb +3 -3
- data/lib/jekyll/configuration.rb +28 -29
- data/lib/jekyll/converters/identity.rb +1 -1
- data/lib/jekyll/converters/markdown.rb +7 -7
- data/lib/jekyll/converters/markdown/rdiscount_parser.rb +1 -1
- data/lib/jekyll/converters/markdown/redcarpet_parser.rb +5 -6
- data/lib/jekyll/converters/smartypants.rb +34 -0
- data/lib/jekyll/convertible.rb +29 -16
- data/lib/jekyll/deprecator.rb +1 -1
- data/lib/jekyll/document.rb +26 -27
- data/lib/jekyll/drops/collection_drop.rb +0 -2
- data/lib/jekyll/drops/document_drop.rb +0 -1
- data/lib/jekyll/drops/drop.rb +54 -6
- data/lib/jekyll/drops/site_drop.rb +0 -1
- data/lib/jekyll/drops/unified_payload_drop.rb +0 -1
- data/lib/jekyll/drops/url_drop.rb +45 -13
- data/lib/jekyll/entry_filter.rb +1 -1
- data/lib/jekyll/errors.rb +4 -2
- data/lib/jekyll/external.rb +5 -6
- data/lib/jekyll/filters.rb +18 -7
- data/lib/jekyll/frontmatter_defaults.rb +16 -15
- data/lib/jekyll/generator.rb +1 -2
- data/lib/jekyll/hooks.rb +26 -26
- data/lib/jekyll/liquid_renderer.rb +1 -1
- data/lib/jekyll/liquid_renderer/table.rb +2 -2
- data/lib/jekyll/page.rb +7 -8
- data/lib/jekyll/plugin.rb +31 -12
- data/lib/jekyll/plugin_manager.rb +3 -4
- data/lib/jekyll/reader.rb +7 -7
- data/lib/jekyll/readers/collection_reader.rb +1 -2
- data/lib/jekyll/readers/data_reader.rb +7 -7
- data/lib/jekyll/readers/page_reader.rb +3 -3
- data/lib/jekyll/readers/post_reader.rb +2 -2
- data/lib/jekyll/readers/static_file_reader.rb +2 -2
- data/lib/jekyll/regenerator.rb +17 -18
- data/lib/jekyll/related_posts.rb +0 -2
- data/lib/jekyll/renderer.rb +14 -12
- data/lib/jekyll/site.rb +18 -22
- data/lib/jekyll/static_file.rb +15 -15
- data/lib/jekyll/stevenson.rb +2 -2
- data/lib/jekyll/tags/highlight.rb +10 -11
- data/lib/jekyll/tags/include.rb +10 -11
- data/lib/jekyll/tags/post_url.rb +7 -10
- data/lib/jekyll/url.rb +4 -5
- data/lib/jekyll/utils.rb +27 -22
- data/lib/jekyll/utils/ansi.rb +1 -1
- data/lib/jekyll/utils/platforms.rb +0 -1
- data/lib/jekyll/version.rb +1 -1
- data/lib/site_template/_includes/head.html +1 -1
- metadata +4 -3
| @@ -15,7 +15,7 @@ module Jekyll | |
| 15 15 | 
             
                def file(filename)
         | 
| 16 16 | 
             
                  filename = @site.in_source_dir(filename).sub(/\A#{Regexp.escape(@site.source)}\//, '')
         | 
| 17 17 |  | 
| 18 | 
            -
                  LiquidRenderer::File.new(self, filename).tap do | 
| 18 | 
            +
                  LiquidRenderer::File.new(self, filename).tap do
         | 
| 19 19 | 
             
                    @stats[filename] ||= {}
         | 
| 20 20 | 
             
                    @stats[filename][:count] ||= 0
         | 
| 21 21 | 
             
                    @stats[filename][:count] += 1
         | 
| @@ -69,10 +69,10 @@ module Jekyll | |
| 69 69 | 
             
                end
         | 
| 70 70 |  | 
| 71 71 | 
             
                def data_for_table(n)
         | 
| 72 | 
            -
                  sorted = @stats.sort_by{ | | 
| 72 | 
            +
                  sorted = @stats.sort_by { |_, file_stats| -file_stats[:time] }
         | 
| 73 73 | 
             
                  sorted = sorted.slice(0, n)
         | 
| 74 74 |  | 
| 75 | 
            -
                  table = [ | 
| 75 | 
            +
                  table = [%w(Filename Count Bytes Time)]
         | 
| 76 76 |  | 
| 77 77 | 
             
                  sorted.each do |filename, file_stats|
         | 
| 78 78 | 
             
                    row = []
         | 
    
        data/lib/jekyll/page.rb
    CHANGED
    
    | @@ -8,13 +8,13 @@ module Jekyll | |
| 8 8 | 
             
                attr_accessor :data, :content, :output
         | 
| 9 9 |  | 
| 10 10 | 
             
                # Attributes for Liquid templates
         | 
| 11 | 
            -
                ATTRIBUTES_FOR_LIQUID = %w | 
| 11 | 
            +
                ATTRIBUTES_FOR_LIQUID = %w(
         | 
| 12 12 | 
             
                  content
         | 
| 13 13 | 
             
                  dir
         | 
| 14 14 | 
             
                  name
         | 
| 15 15 | 
             
                  path
         | 
| 16 16 | 
             
                  url
         | 
| 17 | 
            -
                 | 
| 17 | 
            +
                )
         | 
| 18 18 |  | 
| 19 19 | 
             
                # A set of extensions that are considered HTML or HTML-like so we
         | 
| 20 20 | 
             
                # should not alter them,  this includes .xhtml through XHTM5.
         | 
| @@ -37,11 +37,10 @@ module Jekyll | |
| 37 37 | 
             
                  @dir  = dir
         | 
| 38 38 | 
             
                  @name = name
         | 
| 39 39 |  | 
| 40 | 
            -
             | 
| 41 40 | 
             
                  process(name)
         | 
| 42 41 | 
             
                  read_yaml(File.join(base, dir), name)
         | 
| 43 42 |  | 
| 44 | 
            -
                  data.default_proc = proc do | | 
| 43 | 
            +
                  data.default_proc = proc do |_, key|
         | 
| 45 44 | 
             
                    site.frontmatter_defaults.find(File.join(dir, name), type, key)
         | 
| 46 45 | 
             
                  end
         | 
| 47 46 |  | 
| @@ -107,7 +106,7 @@ module Jekyll | |
| 107 106 | 
             
                # Returns nothing.
         | 
| 108 107 | 
             
                def process(name)
         | 
| 109 108 | 
             
                  self.ext = File.extname(name)
         | 
| 110 | 
            -
                  self.basename = name[0 | 
| 109 | 
            +
                  self.basename = name[0..-ext.length - 1]
         | 
| 111 110 | 
             
                end
         | 
| 112 111 |  | 
| 113 112 | 
             
                # Add any necessary layouts to this post
         | 
| @@ -117,8 +116,8 @@ module Jekyll | |
| 117 116 | 
             
                #
         | 
| 118 117 | 
             
                # Returns nothing.
         | 
| 119 118 | 
             
                def render(layouts, site_payload)
         | 
| 120 | 
            -
                  site_payload | 
| 121 | 
            -
                  site_payload | 
| 119 | 
            +
                  site_payload["page"] = to_liquid
         | 
| 120 | 
            +
                  site_payload["paginator"] = pager.to_liquid
         | 
| 122 121 |  | 
| 123 122 | 
             
                  do_layout(site_payload, layouts)
         | 
| 124 123 | 
             
                end
         | 
| @@ -143,7 +142,7 @@ module Jekyll | |
| 143 142 | 
             
                def destination(dest)
         | 
| 144 143 | 
             
                  path = site.in_dest_dir(dest, URL.unescape_path(url))
         | 
| 145 144 | 
             
                  path = File.join(path, "index") if url.end_with?("/")
         | 
| 146 | 
            -
                  path << | 
| 145 | 
            +
                  path << output_ext unless path.end_with? output_ext
         | 
| 147 146 | 
             
                  path
         | 
| 148 147 | 
             
                end
         | 
| 149 148 |  | 
    
        data/lib/jekyll/plugin.rb
    CHANGED
    
    | @@ -1,20 +1,39 @@ | |
| 1 1 | 
             
            module Jekyll
         | 
| 2 2 | 
             
              class Plugin
         | 
| 3 | 
            -
                PRIORITIES = { | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 3 | 
            +
                PRIORITIES = {
         | 
| 4 | 
            +
                  :low => -10,
         | 
| 5 | 
            +
                  :highest => 100,
         | 
| 6 | 
            +
                  :lowest => -100,
         | 
| 7 | 
            +
                  :normal => 0,
         | 
| 8 | 
            +
                  :high => 10
         | 
| 9 | 
            +
                }
         | 
| 8 10 |  | 
| 9 | 
            -
                # Fetch all the subclasses of this class and its subclasses' subclasses.
         | 
| 10 11 | 
             
                #
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                def self. | 
| 13 | 
            -
                   | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 12 | 
            +
             | 
| 13 | 
            +
                def self.inherited(const)
         | 
| 14 | 
            +
                  return catch_inheritance(const) do |const_|
         | 
| 15 | 
            +
                    catch_inheritance(const_)
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                #
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def self.catch_inheritance(const)
         | 
| 22 | 
            +
                  const.define_singleton_method :inherited do |const_|
         | 
| 23 | 
            +
                    (@children ||= Set.new).add const_
         | 
| 24 | 
            +
                    if block_given?
         | 
| 25 | 
            +
                      yield const_
         | 
| 26 | 
            +
                    end
         | 
| 16 27 | 
             
                  end
         | 
| 17 | 
            -
             | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                #
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def self.descendants
         | 
| 33 | 
            +
                  @children ||= Set.new
         | 
| 34 | 
            +
                  out = @children.map(&:descendants)
         | 
| 35 | 
            +
                  out << self unless superclass == Plugin
         | 
| 36 | 
            +
                  Set.new(out).flatten
         | 
| 18 37 | 
             
                end
         | 
| 19 38 |  | 
| 20 39 | 
             
                # Get or set the priority of this plugin. When called without an
         | 
| @@ -76,7 +76,7 @@ module Jekyll | |
| 76 76 | 
             
                #
         | 
| 77 77 | 
             
                # Returns an Array of plugin search paths
         | 
| 78 78 | 
             
                def plugins_path
         | 
| 79 | 
            -
                  if  | 
| 79 | 
            +
                  if site.config['plugins_dir'] == Jekyll::Configuration::DEFAULTS['plugins_dir']
         | 
| 80 80 | 
             
                    [site.in_source_dir(site.config['plugins_dir'])]
         | 
| 81 81 | 
             
                  else
         | 
| 82 82 | 
             
                    Array(site.config['plugins_dir']).map { |d| File.expand_path(d) }
         | 
| @@ -86,11 +86,10 @@ module Jekyll | |
| 86 86 | 
             
                def deprecation_checks
         | 
| 87 87 | 
             
                  pagination_included = (site.config['gems'] || []).include?('jekyll-paginate') || defined?(Jekyll::Paginate)
         | 
| 88 88 | 
             
                  if site.config['paginate'] && !pagination_included
         | 
| 89 | 
            -
                    Jekyll::Deprecator.deprecation_message "You appear to have pagination "  | 
| 90 | 
            -
                      "turned on, but you haven't included the `jekyll-paginate` gem. "  | 
| 89 | 
            +
                    Jekyll::Deprecator.deprecation_message "You appear to have pagination " \
         | 
| 90 | 
            +
                      "turned on, but you haven't included the `jekyll-paginate` gem. " \
         | 
| 91 91 | 
             
                      "Ensure you have `gems: [jekyll-paginate]` in your configuration file."
         | 
| 92 92 | 
             
                  end
         | 
| 93 93 | 
             
                end
         | 
| 94 | 
            -
             | 
| 95 94 | 
             
              end
         | 
| 96 95 | 
             
            end
         | 
    
        data/lib/jekyll/reader.rb
    CHANGED
    
    | @@ -22,7 +22,7 @@ module Jekyll | |
| 22 22 |  | 
| 23 23 | 
             
                # Sorts posts, pages, and static files.
         | 
| 24 24 | 
             
                def sort_files!
         | 
| 25 | 
            -
                  site.collections.values.each{|c| c.docs.sort!}
         | 
| 25 | 
            +
                  site.collections.values.each { |c| c.docs.sort! }
         | 
| 26 26 | 
             
                  site.pages.sort_by!(&:name)
         | 
| 27 27 | 
             
                  site.static_files.sort_by!(&:relative_path)
         | 
| 28 28 | 
             
                end
         | 
| @@ -38,9 +38,9 @@ module Jekyll | |
| 38 38 | 
             
                  base = site.in_source_dir(dir)
         | 
| 39 39 |  | 
| 40 40 | 
             
                  dot = Dir.chdir(base) { filter_entries(Dir.entries('.'), base) }
         | 
| 41 | 
            -
                  dot_dirs = dot.select{ |file| File.directory?(@site.in_source_dir(base,file)) }
         | 
| 41 | 
            +
                  dot_dirs = dot.select { |file| File.directory?(@site.in_source_dir(base, file)) }
         | 
| 42 42 | 
             
                  dot_files = (dot - dot_dirs)
         | 
| 43 | 
            -
                  dot_pages = dot_files.select{ |file| Utils.has_yaml_header?(@site.in_source_dir(base,file)) }
         | 
| 43 | 
            +
                  dot_pages = dot_files.select { |file| Utils.has_yaml_header?(@site.in_source_dir(base, file)) }
         | 
| 44 44 | 
             
                  dot_static_files = dot_files - dot_pages
         | 
| 45 45 |  | 
| 46 46 | 
             
                  retrieve_posts(dir)
         | 
| @@ -67,12 +67,12 @@ module Jekyll | |
| 67 67 | 
             
                # dot_dirs - The Array of subdirectories in the dir.
         | 
| 68 68 | 
             
                #
         | 
| 69 69 | 
             
                # Returns nothing.
         | 
| 70 | 
            -
                def retrieve_dirs( | 
| 71 | 
            -
                  dot_dirs.map  | 
| 72 | 
            -
                    dir_path = site.in_source_dir(dir,file)
         | 
| 70 | 
            +
                def retrieve_dirs(_base, dir, dot_dirs)
         | 
| 71 | 
            +
                  dot_dirs.map do |file|
         | 
| 72 | 
            +
                    dir_path = site.in_source_dir(dir, file)
         | 
| 73 73 | 
             
                    rel_path = File.join(dir, file)
         | 
| 74 74 | 
             
                    @site.reader.read_directories(rel_path) unless @site.dest.sub(/\/$/, '') == dir_path
         | 
| 75 | 
            -
                   | 
| 75 | 
            +
                  end
         | 
| 76 76 | 
             
                end
         | 
| 77 77 |  | 
| 78 78 | 
             
                # Retrieve all the pages from the current directory,
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            module Jekyll
         | 
| 2 2 | 
             
              class CollectionReader
         | 
| 3 | 
            -
                SPECIAL_COLLECTIONS = %w | 
| 3 | 
            +
                SPECIAL_COLLECTIONS = %w(posts data).freeze
         | 
| 4 4 |  | 
| 5 5 | 
             
                attr_reader :site, :content
         | 
| 6 6 | 
             
                def initialize(site)
         | 
| @@ -16,6 +16,5 @@ module Jekyll | |
| 16 16 | 
             
                    collection.read unless SPECIAL_COLLECTIONS.include?(collection.label)
         | 
| 17 17 | 
             
                  end
         | 
| 18 18 | 
             
                end
         | 
| 19 | 
            -
             | 
| 20 19 | 
             
              end
         | 
| 21 20 | 
             
            end
         | 
| @@ -50,13 +50,13 @@ module Jekyll | |
| 50 50 | 
             
                # Returns the contents of the data file.
         | 
| 51 51 | 
             
                def read_data_file(path)
         | 
| 52 52 | 
             
                  case File.extname(path).downcase
         | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 53 | 
            +
                  when '.csv'
         | 
| 54 | 
            +
                    CSV.read(path, {
         | 
| 55 | 
            +
                                     :headers => true,
         | 
| 56 | 
            +
                                     :encoding => site.config['encoding']
         | 
| 57 | 
            +
                                 }).map(&:to_hash)
         | 
| 58 | 
            +
                  else
         | 
| 59 | 
            +
                    SafeYAML.load_file(path)
         | 
| 60 60 | 
             
                  end
         | 
| 61 61 | 
             
                end
         | 
| 62 62 |  | 
| @@ -4,7 +4,7 @@ module Jekyll | |
| 4 4 | 
             
                def initialize(site, dir)
         | 
| 5 5 | 
             
                  @site = site
         | 
| 6 6 | 
             
                  @dir = dir
         | 
| 7 | 
            -
                  @unfiltered_content =  | 
| 7 | 
            +
                  @unfiltered_content = []
         | 
| 8 8 | 
             
                end
         | 
| 9 9 |  | 
| 10 10 | 
             
                # Read all the files in <source>/<dir>/ for Yaml header and create a new Page
         | 
| @@ -14,8 +14,8 @@ module Jekyll | |
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # Returns an array of static pages.
         | 
| 16 16 | 
             
                def read(files)
         | 
| 17 | 
            -
                  files.map{ |page| @unfiltered_content << Page.new(@site, @site.source, @dir, page) }
         | 
| 18 | 
            -
                  @unfiltered_content.select{ |page| site.publisher.publish?(page) }
         | 
| 17 | 
            +
                  files.map { |page| @unfiltered_content << Page.new(@site, @site.source, @dir, page) }
         | 
| 18 | 
            +
                  @unfiltered_content.select { |page| site.publisher.publish?(page) }
         | 
| 19 19 | 
             
                end
         | 
| 20 20 | 
             
              end
         | 
| 21 21 | 
             
            end
         | 
| @@ -53,8 +53,8 @@ module Jekyll | |
| 53 53 | 
             
                    next unless entry =~ matcher
         | 
| 54 54 | 
             
                    path = @site.in_source_dir(File.join(dir, magic_dir, entry))
         | 
| 55 55 | 
             
                    Document.new(path, {
         | 
| 56 | 
            -
                      site | 
| 57 | 
            -
                      collection | 
| 56 | 
            +
                      :site => @site,
         | 
| 57 | 
            +
                      :collection => @site.posts
         | 
| 58 58 | 
             
                    })
         | 
| 59 59 | 
             
                  end.reject(&:nil?)
         | 
| 60 60 | 
             
                end
         | 
| @@ -4,7 +4,7 @@ module Jekyll | |
| 4 4 | 
             
                def initialize(site, dir)
         | 
| 5 5 | 
             
                  @site = site
         | 
| 6 6 | 
             
                  @dir = dir
         | 
| 7 | 
            -
                  @unfiltered_content =  | 
| 7 | 
            +
                  @unfiltered_content = []
         | 
| 8 8 | 
             
                end
         | 
| 9 9 |  | 
| 10 10 | 
             
                # Read all the files in <source>/<dir>/ for Yaml header and create a new Page
         | 
| @@ -14,7 +14,7 @@ module Jekyll | |
| 14 14 | 
             
                #
         | 
| 15 15 | 
             
                # Returns an array of static files.
         | 
| 16 16 | 
             
                def read(files)
         | 
| 17 | 
            -
                  files.map{ |file| @unfiltered_content << StaticFile.new(@site, @site.source, @dir, file)}
         | 
| 17 | 
            +
                  files.map { |file| @unfiltered_content << StaticFile.new(@site, @site.source, @dir, file) }
         | 
| 18 18 | 
             
                  @unfiltered_content
         | 
| 19 19 | 
             
                end
         | 
| 20 20 | 
             
              end
         | 
    
        data/lib/jekyll/regenerator.rb
    CHANGED
    
    | @@ -62,7 +62,6 @@ module Jekyll | |
| 62 62 | 
             
                  clear_cache
         | 
| 63 63 | 
             
                end
         | 
| 64 64 |  | 
| 65 | 
            -
             | 
| 66 65 | 
             
                # Clear just the cache
         | 
| 67 66 | 
             
                #
         | 
| 68 67 | 
             
                # Returns nothing
         | 
| @@ -70,13 +69,12 @@ module Jekyll | |
| 70 69 | 
             
                  @cache = {}
         | 
| 71 70 | 
             
                end
         | 
| 72 71 |  | 
| 73 | 
            -
             | 
| 74 72 | 
             
                # Checks if the source has been modified or the
         | 
| 75 73 | 
             
                # destination is missing
         | 
| 76 74 | 
             
                #
         | 
| 77 75 | 
             
                # returns a boolean
         | 
| 78 76 | 
             
                def source_modified_or_dest_missing?(source_path, dest_path)
         | 
| 79 | 
            -
                  modified?(source_path) || (dest_path  | 
| 77 | 
            +
                  modified?(source_path) || (dest_path && !File.exist?(dest_path))
         | 
| 80 78 | 
             
                end
         | 
| 81 79 |  | 
| 82 80 | 
             
                # Checks if a path's (or one of its dependencies)
         | 
| @@ -90,7 +88,7 @@ module Jekyll | |
| 90 88 | 
             
                  return true if path.nil?
         | 
| 91 89 |  | 
| 92 90 | 
             
                  # Check for path in cache
         | 
| 93 | 
            -
                  if cache. | 
| 91 | 
            +
                  if cache.key? path
         | 
| 94 92 | 
             
                    return cache[path]
         | 
| 95 93 | 
             
                  end
         | 
| 96 94 |  | 
| @@ -117,9 +115,9 @@ module Jekyll | |
| 117 115 | 
             
                #
         | 
| 118 116 | 
             
                # Returns nothing.
         | 
| 119 117 | 
             
                def add_dependency(path, dependency)
         | 
| 120 | 
            -
                  return if  | 
| 118 | 
            +
                  return if metadata[path].nil? || @disabled
         | 
| 121 119 |  | 
| 122 | 
            -
                   | 
| 120 | 
            +
                  unless metadata[path]["deps"].include? dependency
         | 
| 123 121 | 
             
                    metadata[path]["deps"] << dependency
         | 
| 124 122 | 
             
                    add(dependency) unless metadata.include?(dependency)
         | 
| 125 123 | 
             
                  end
         | 
| @@ -157,20 +155,21 @@ module Jekyll | |
| 157 155 | 
             
                #
         | 
| 158 156 | 
             
                # Returns the read metadata.
         | 
| 159 157 | 
             
                def read_metadata
         | 
| 160 | 
            -
                  @metadata = | 
| 161 | 
            -
                     | 
| 162 | 
            -
             | 
| 163 | 
            -
             | 
| 164 | 
            -
                       | 
| 165 | 
            -
             | 
| 166 | 
            -
                       | 
| 167 | 
            -
             | 
| 168 | 
            -
                       | 
| 158 | 
            +
                  @metadata =
         | 
| 159 | 
            +
                    if !disabled? && File.file?(metadata_file)
         | 
| 160 | 
            +
                      content = File.binread(metadata_file)
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                      begin
         | 
| 163 | 
            +
                        Marshal.load(content)
         | 
| 164 | 
            +
                      rescue TypeError
         | 
| 165 | 
            +
                        SafeYAML.load(content)
         | 
| 166 | 
            +
                      rescue ArgumentError => e
         | 
| 167 | 
            +
                        Jekyll.logger.warn("Failed to load #{metadata_file}: #{e}")
         | 
| 168 | 
            +
                        {}
         | 
| 169 | 
            +
                      end
         | 
| 170 | 
            +
                    else
         | 
| 169 171 | 
             
                      {}
         | 
| 170 172 | 
             
                    end
         | 
| 171 | 
            -
                  else
         | 
| 172 | 
            -
                    {}
         | 
| 173 | 
            -
                  end
         | 
| 174 173 | 
             
                end
         | 
| 175 174 | 
             
              end
         | 
| 176 175 | 
             
            end
         | 
    
        data/lib/jekyll/related_posts.rb
    CHANGED
    
    
    
        data/lib/jekyll/renderer.rb
    CHANGED
    
    | @@ -2,7 +2,6 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            module Jekyll
         | 
| 4 4 | 
             
              class Renderer
         | 
| 5 | 
            -
             | 
| 6 5 | 
             
                attr_reader :document, :site, :payload
         | 
| 7 6 |  | 
| 8 7 | 
             
                def initialize(site, document, site_payload = nil)
         | 
| @@ -23,7 +22,11 @@ module Jekyll | |
| 23 22 | 
             
                #
         | 
| 24 23 | 
             
                # Returns the output extname including the leading period.
         | 
| 25 24 | 
             
                def output_ext
         | 
| 26 | 
            -
                  @output_ext ||=  | 
| 25 | 
            +
                  @output_ext ||= if document.permalink
         | 
| 26 | 
            +
                    File.extname(document.permalink)
         | 
| 27 | 
            +
                  else
         | 
| 28 | 
            +
                    converters.first.output_ext(document.extname)
         | 
| 29 | 
            +
                  end
         | 
| 27 30 | 
             
                end
         | 
| 28 31 |  | 
| 29 32 | 
             
                ######################
         | 
| @@ -33,23 +36,23 @@ module Jekyll | |
| 33 36 | 
             
                def run
         | 
| 34 37 | 
             
                  Jekyll.logger.debug "Rendering:", document.relative_path
         | 
| 35 38 |  | 
| 36 | 
            -
                  payload | 
| 39 | 
            +
                  payload["page"] = document.to_liquid
         | 
| 37 40 |  | 
| 38 41 | 
             
                  if document.collection.label == 'posts' && document.is_a?(Document)
         | 
| 39 | 
            -
                    payload | 
| 42 | 
            +
                    payload['site']['related_posts'] = document.related_posts
         | 
| 40 43 | 
             
                  end
         | 
| 41 44 |  | 
| 42 45 | 
             
                  Jekyll.logger.debug "Pre-Render Hooks:", document.relative_path
         | 
| 43 46 | 
             
                  document.trigger_hooks(:pre_render, payload)
         | 
| 44 47 |  | 
| 45 48 | 
             
                  info = {
         | 
| 46 | 
            -
                    filters | 
| 47 | 
            -
                    registers | 
| 49 | 
            +
                    :filters   => [Jekyll::Filters],
         | 
| 50 | 
            +
                    :registers => { :site => site, :page => payload['page'] }
         | 
| 48 51 | 
             
                  }
         | 
| 49 52 |  | 
| 50 53 | 
             
                  # render and transform content (this becomes the final content of the object)
         | 
| 51 | 
            -
                  payload | 
| 52 | 
            -
                  payload | 
| 54 | 
            +
                  payload['highlighter_prefix'] = converters.first.highlighter_prefix
         | 
| 55 | 
            +
                  payload['highlighter_suffix'] = converters.first.highlighter_suffix
         | 
| 53 56 |  | 
| 54 57 | 
             
                  output = document.content
         | 
| 55 58 |  | 
| @@ -133,9 +136,9 @@ module Jekyll | |
| 133 136 | 
             
                  used   = Set.new([layout])
         | 
| 134 137 |  | 
| 135 138 | 
             
                  while layout
         | 
| 136 | 
            -
                    payload | 
| 137 | 
            -
                    payload | 
| 138 | 
            -
                    payload.layout  | 
| 139 | 
            +
                    payload['content'] = output
         | 
| 140 | 
            +
                    payload['page']    = document.to_liquid
         | 
| 141 | 
            +
                    payload['layout']  = Utils.deep_merge_hashes(payload['layout'] || {}, layout.data)
         | 
| 139 142 |  | 
| 140 143 | 
             
                    output = render_liquid(
         | 
| 141 144 | 
             
                      layout.content,
         | 
| @@ -161,6 +164,5 @@ module Jekyll | |
| 161 164 |  | 
| 162 165 | 
             
                  output
         | 
| 163 166 | 
             
                end
         | 
| 164 | 
            -
             | 
| 165 167 | 
             
              end
         | 
| 166 168 | 
             
            end
         | 
    
        data/lib/jekyll/site.rb
    CHANGED
    
    | @@ -19,8 +19,8 @@ module Jekyll | |
| 19 19 | 
             
                def initialize(config)
         | 
| 20 20 | 
             
                  @config = config.clone
         | 
| 21 21 |  | 
| 22 | 
            -
                  %w | 
| 23 | 
            -
                    show_drafts limit_posts keep_files gems | 
| 22 | 
            +
                  %w(safe lsi highlighter baseurl exclude include future unpublished
         | 
| 23 | 
            +
                    show_drafts limit_posts keep_files gems).each do |opt|
         | 
| 24 24 | 
             
                    self.send("#{opt}=", config[opt])
         | 
| 25 25 | 
             
                  end
         | 
| 26 26 |  | 
| @@ -165,7 +165,7 @@ module Jekyll | |
| 165 165 |  | 
| 166 166 | 
             
                  Jekyll::Hooks.trigger :site, :pre_render, self, payload
         | 
| 167 167 |  | 
| 168 | 
            -
                  collections.each do | | 
| 168 | 
            +
                  collections.each do |_, collection|
         | 
| 169 169 | 
             
                    collection.docs.each do |document|
         | 
| 170 170 | 
             
                      if regenerator.regenerate?(document)
         | 
| 171 171 | 
             
                        document.output = Jekyll::Renderer.new(self, document, payload).run
         | 
| @@ -196,9 +196,9 @@ module Jekyll | |
| 196 196 | 
             
                #
         | 
| 197 197 | 
             
                # Returns nothing.
         | 
| 198 198 | 
             
                def write
         | 
| 199 | 
            -
                  each_site_file  | 
| 199 | 
            +
                  each_site_file do |item|
         | 
| 200 200 | 
             
                    item.write(dest) if regenerator.regenerate?(item)
         | 
| 201 | 
            -
                   | 
| 201 | 
            +
                  end
         | 
| 202 202 | 
             
                  regenerator.write_metadata
         | 
| 203 203 | 
             
                  Jekyll::Hooks.trigger :site, :post_write, self
         | 
| 204 204 | 
             
                end
         | 
| @@ -263,25 +263,21 @@ module Jekyll | |
| 263 263 | 
             
                end
         | 
| 264 264 |  | 
| 265 265 | 
             
                # Get the implementation class for the given Converter.
         | 
| 266 | 
            -
                #
         | 
| 267 | 
            -
                # klass - The Class of the Converter to fetch.
         | 
| 268 | 
            -
                #
         | 
| 269 266 | 
             
                # Returns the Converter instance implementing the given Converter.
         | 
| 267 | 
            +
                # klass - The Class of the Converter to fetch.
         | 
| 268 | 
            +
             | 
| 270 269 | 
             
                def find_converter_instance(klass)
         | 
| 271 | 
            -
                  converters.find { | | 
| 270 | 
            +
                  converters.find { |klass_| klass_.instance_of?(klass) } || \
         | 
| 271 | 
            +
                    raise("No Converters found for #{klass}")
         | 
| 272 272 | 
             
                end
         | 
| 273 273 |  | 
| 274 | 
            +
                # klass - class or module containing the subclasses.
         | 
| 275 | 
            +
                # Returns array of instances of subclasses of parameter.
         | 
| 274 276 | 
             
                # Create array of instances of the subclasses of the class or module
         | 
| 275 | 
            -
                # | 
| 276 | 
            -
             | 
| 277 | 
            -
                # klass - class or module containing the subclasses which should be
         | 
| 278 | 
            -
                #         instantiated
         | 
| 279 | 
            -
                #
         | 
| 280 | 
            -
                # Returns array of instances of subclasses of parameter
         | 
| 277 | 
            +
                # passed in as argument.
         | 
| 278 | 
            +
             | 
| 281 279 | 
             
                def instantiate_subclasses(klass)
         | 
| 282 | 
            -
                  klass.descendants.select do |c|
         | 
| 283 | 
            -
                    !safe || c.safe
         | 
| 284 | 
            -
                  end.sort.map do |c|
         | 
| 280 | 
            +
                  klass.descendants.select { |c| !safe || c.safe }.sort.map do |c|
         | 
| 285 281 | 
             
                    c.new(config)
         | 
| 286 282 | 
             
                  end
         | 
| 287 283 | 
             
                end
         | 
| @@ -292,10 +288,10 @@ module Jekyll | |
| 292 288 | 
             
                # Returns
         | 
| 293 289 | 
             
                def relative_permalinks_are_deprecated
         | 
| 294 290 | 
             
                  if config['relative_permalinks']
         | 
| 295 | 
            -
                    Jekyll.logger.abort_with "Since v3.0, permalinks for pages"  | 
| 296 | 
            -
                                            " in subfolders must be relative to the"  | 
| 297 | 
            -
                                            " site source directory, not the parent"  | 
| 298 | 
            -
                                            " directory. Check http://jekyllrb.com/docs/upgrading/" | 
| 291 | 
            +
                    Jekyll.logger.abort_with "Since v3.0, permalinks for pages" \
         | 
| 292 | 
            +
                                            " in subfolders must be relative to the" \
         | 
| 293 | 
            +
                                            " site source directory, not the parent" \
         | 
| 294 | 
            +
                                            " directory. Check http://jekyllrb.com/docs/upgrading/"\
         | 
| 299 295 | 
             
                                            " for more info."
         | 
| 300 296 | 
             
                  end
         | 
| 301 297 | 
             
                end
         |