jekyll 3.3.1 → 3.4.0
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/.rubocop.yml +14 -0
- data/LICENSE +1 -1
- data/README.markdown +1 -2
- data/lib/jekyll.rb +5 -1
- data/lib/jekyll/collection.rb +11 -4
- data/lib/jekyll/commands/doctor.rb +1 -1
- data/lib/jekyll/commands/new.rb +11 -7
- data/lib/jekyll/commands/serve.rb +6 -6
- data/lib/jekyll/commands/serve/servlet.rb +1 -1
- data/lib/jekyll/configuration.rb +5 -5
- data/lib/jekyll/converters/markdown/kramdown_parser.rb +1 -1
- data/lib/jekyll/converters/markdown/redcarpet_parser.rb +1 -1
- data/lib/jekyll/document.rb +4 -4
- data/lib/jekyll/drops/jekyll_drop.rb +1 -1
- data/lib/jekyll/entry_filter.rb +1 -1
- data/lib/jekyll/excerpt.rb +1 -2
- data/lib/jekyll/external.rb +1 -1
- data/lib/jekyll/filters.rb +7 -32
- data/lib/jekyll/filters/grouping_filters.rb +63 -0
- data/lib/jekyll/hooks.rb +7 -7
- data/lib/jekyll/log_adapter.rb +1 -1
- data/lib/jekyll/page.rb +3 -3
- data/lib/jekyll/plugin.rb +1 -1
- data/lib/jekyll/reader.rb +1 -1
- data/lib/jekyll/readers/data_reader.rb +6 -6
- data/lib/jekyll/readers/post_reader.rb +1 -1
- data/lib/jekyll/regenerator.rb +1 -1
- data/lib/jekyll/related_posts.rb +3 -9
- data/lib/jekyll/site.rb +2 -2
- data/lib/jekyll/static_file.rb +3 -3
- data/lib/jekyll/tags/highlight.rb +2 -2
- data/lib/jekyll/tags/include.rb +9 -5
- data/lib/jekyll/tags/post_url.rb +3 -2
- data/lib/jekyll/theme_builder.rb +1 -1
- data/lib/jekyll/url.rb +4 -3
- data/lib/jekyll/utils.rb +3 -1
- data/lib/jekyll/utils/ansi.rb +1 -1
- data/lib/jekyll/utils/exec.rb +25 -0
- data/lib/jekyll/utils/win_tz.rb +73 -0
- data/lib/jekyll/version.rb +1 -1
- data/lib/site_template/_posts/0000-00-00-welcome-to-jekyll.markdown.erb +1 -1
- data/lib/site_template/about.md +1 -1
- data/lib/theme_template/LICENSE.txt.erb +1 -1
- data/lib/theme_template/README.md.erb +2 -2
- metadata +36 -33
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 68e5c34fa249f9c27cbe1c4a0ed36de42d15d715
         | 
| 4 | 
            +
              data.tar.gz: 256fdf447db9bcfc643f895db6454c74cf67b0f5
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ee35404dd5880c76e378d11c8e7fb35cdb426bf8fa51b047bc942c6f008d076bed83caeadd0fc504787cf01ceade697b0f48c2eda20b081e26d6d102a9599db7
         | 
| 7 | 
            +
              data.tar.gz: 07cf83c87ec8567f3d6c03c434991cd35248269401f42c0f11dc061a24c105ebe803f0827b746766e82c2ac4e301709c32e338a857c8948ba1a4a2f3ee13e899
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -22,6 +22,8 @@ Metrics/BlockLength: | |
| 22 22 | 
             
              Exclude:
         | 
| 23 23 | 
             
                - test/**/*.rb
         | 
| 24 24 | 
             
                - lib/jekyll/configuration.rb
         | 
| 25 | 
            +
                - rake/*.rake
         | 
| 26 | 
            +
                - jekyll.gemspec
         | 
| 25 27 | 
             
            Metrics/ClassLength:
         | 
| 26 28 | 
             
              Exclude:
         | 
| 27 29 | 
             
                - !ruby/regexp /features\/.*.rb$/
         | 
| @@ -32,6 +34,8 @@ Metrics/CyclomaticComplexity: | |
| 32 34 | 
             
            Metrics/LineLength:
         | 
| 33 35 | 
             
              Exclude:
         | 
| 34 36 | 
             
                - !ruby/regexp /features\/.*.rb/
         | 
| 37 | 
            +
                - Rakefile
         | 
| 38 | 
            +
                - rake/*.rake
         | 
| 35 39 | 
             
              Max: 90
         | 
| 36 40 | 
             
              Severity: warning
         | 
| 37 41 | 
             
            Metrics/MethodLength:
         | 
| @@ -44,6 +48,14 @@ Metrics/ParameterLists: | |
| 44 48 | 
             
              Max: 4
         | 
| 45 49 | 
             
            Metrics/PerceivedComplexity:
         | 
| 46 50 | 
             
              Max: 8
         | 
| 51 | 
            +
            Security/MarshalLoad:
         | 
| 52 | 
            +
              Exclude:
         | 
| 53 | 
            +
                - !ruby/regexp /test\/.*.rb$/
         | 
| 54 | 
            +
                - lib/jekyll/regenerator.rb
         | 
| 55 | 
            +
            Security/YAMLLoad:
         | 
| 56 | 
            +
              Exclude:
         | 
| 57 | 
            +
                - !ruby/regexp /features\/.*.rb/
         | 
| 58 | 
            +
                - !ruby/regexp /test\/.*.rb$/
         | 
| 47 59 | 
             
            Style/Alias:
         | 
| 48 60 | 
             
              Enabled: false
         | 
| 49 61 | 
             
            Style/AlignArray:
         | 
| @@ -127,5 +139,7 @@ Style/StringLiterals: | |
| 127 139 | 
             
              EnforcedStyle: double_quotes
         | 
| 128 140 | 
             
            Style/StringLiteralsInInterpolation:
         | 
| 129 141 | 
             
              EnforcedStyle: double_quotes
         | 
| 142 | 
            +
            Style/TrailingCommaInLiteral:
         | 
| 143 | 
            +
              EnforcedStyleForMultiline: consistent_comma
         | 
| 130 144 | 
             
            Style/UnneededCapitalW:
         | 
| 131 145 | 
             
              Enabled: false
         | 
    
        data/LICENSE
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            The MIT License (MIT)
         | 
| 2 2 |  | 
| 3 | 
            -
            Copyright (c) 2008- | 
| 3 | 
            +
            Copyright (c) 2008-2017 Tom Preston-Werner and Jekyll contributors
         | 
| 4 4 |  | 
| 5 5 | 
             
            Permission is hereby granted, free of charge, to any person obtaining a copy
         | 
| 6 6 | 
             
            of this software and associated documentation files (the "Software"), to deal
         | 
    
        data/README.markdown
    CHANGED
    
    | @@ -43,8 +43,7 @@ conduct. | |
| 43 43 | 
             
            Please adhere to this code of conduct in any interactions you have in the
         | 
| 44 44 | 
             
            Jekyll community. It is strictly enforced on all official Jekyll
         | 
| 45 45 | 
             
            repositories, websites, and resources. If you encounter someone violating
         | 
| 46 | 
            -
            these terms, please let a maintainer ([@parkr](https://github.com/parkr), [@envygeeks](https://github.com/envygeeks),  | 
| 47 | 
            -
            and we will address it as soon as possible.
         | 
| 46 | 
            +
            these terms, please let a maintainer ([@parkr](https://github.com/parkr), [@envygeeks](https://github.com/envygeeks), [@mattr-](https://github.com/mattr-), or [@alfredxing](https://github.com/alfredxing)) know and we will address it as soon as possible.
         | 
| 48 47 |  | 
| 49 48 | 
             
            ## Diving In
         | 
| 50 49 |  | 
    
        data/lib/jekyll.rb
    CHANGED
    
    | @@ -119,7 +119,11 @@ module Jekyll | |
| 119 119 | 
             
                # Returns nothing
         | 
| 120 120 | 
             
                # rubocop:disable Style/AccessorMethodName
         | 
| 121 121 | 
             
                def set_timezone(timezone)
         | 
| 122 | 
            -
                  ENV["TZ"] =  | 
| 122 | 
            +
                  ENV["TZ"] = if Utils::Platforms.really_windows?
         | 
| 123 | 
            +
                                Utils::WinTZ.calculate(timezone)
         | 
| 124 | 
            +
                              else
         | 
| 125 | 
            +
                                timezone
         | 
| 126 | 
            +
                              end
         | 
| 123 127 | 
             
                end
         | 
| 124 128 | 
             
                # rubocop:enable Style/AccessorMethodName
         | 
| 125 129 |  | 
    
        data/lib/jekyll/collection.rb
    CHANGED
    
    | @@ -32,8 +32,8 @@ module Jekyll | |
| 32 32 | 
             
                # Override of method_missing to check in @data for the key.
         | 
| 33 33 | 
             
                def method_missing(method, *args, &blck)
         | 
| 34 34 | 
             
                  if docs.respond_to?(method.to_sym)
         | 
| 35 | 
            -
                    Jekyll.logger.warn "Deprecation:", | 
| 36 | 
            -
                      "#{label}.docs.#{method}."
         | 
| 35 | 
            +
                    Jekyll.logger.warn "Deprecation:",
         | 
| 36 | 
            +
                      "#{label}.#{method} should be changed to #{label}.docs.#{method}."
         | 
| 37 37 | 
             
                    Jekyll.logger.warn "", "Called by #{caller.first}."
         | 
| 38 38 | 
             
                    docs.public_send(method.to_sym, *args, &blck)
         | 
| 39 39 | 
             
                  else
         | 
| @@ -197,6 +197,7 @@ module Jekyll | |
| 197 197 | 
             
                end
         | 
| 198 198 |  | 
| 199 199 | 
             
                private
         | 
| 200 | 
            +
             | 
| 200 201 | 
             
                def read_document(full_path)
         | 
| 201 202 | 
             
                  doc = Jekyll::Document.new(full_path, :site => site, :collection => self)
         | 
| 202 203 | 
             
                  doc.read
         | 
| @@ -208,14 +209,20 @@ module Jekyll | |
| 208 209 | 
             
                end
         | 
| 209 210 |  | 
| 210 211 | 
             
                private
         | 
| 212 | 
            +
             | 
| 211 213 | 
             
                def read_static_file(file_path, full_path)
         | 
| 212 214 | 
             
                  relative_dir = Jekyll.sanitized_path(
         | 
| 213 215 | 
             
                    relative_directory,
         | 
| 214 216 | 
             
                    File.dirname(file_path)
         | 
| 215 217 | 
             
                  ).chomp("/.")
         | 
| 216 218 |  | 
| 217 | 
            -
                  files << StaticFile.new( | 
| 218 | 
            -
                     | 
| 219 | 
            +
                  files << StaticFile.new(
         | 
| 220 | 
            +
                    site,
         | 
| 221 | 
            +
                    site.source,
         | 
| 222 | 
            +
                    relative_dir,
         | 
| 223 | 
            +
                    File.basename(full_path),
         | 
| 224 | 
            +
                    self
         | 
| 225 | 
            +
                  )
         | 
| 219 226 | 
             
                end
         | 
| 220 227 | 
             
              end
         | 
| 221 228 | 
             
            end
         | 
    
        data/lib/jekyll/commands/new.rb
    CHANGED
    
    | @@ -84,6 +84,10 @@ gem "minima", "~> 2.0" | |
| 84 84 | 
             
            group :jekyll_plugins do
         | 
| 85 85 | 
             
               gem "jekyll-feed", "~> 0.6"
         | 
| 86 86 | 
             
            end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
            # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
         | 
| 89 | 
            +
            gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
         | 
| 90 | 
            +
             | 
| 87 91 | 
             
            RUBY
         | 
| 88 92 | 
             
                    end
         | 
| 89 93 |  | 
| @@ -121,23 +125,23 @@ RUBY | |
| 121 125 | 
             
                    # unless the user opts to generate a blank blog or skip 'bundle install'.
         | 
| 122 126 |  | 
| 123 127 | 
             
                    def after_install(path, options = {})
         | 
| 124 | 
            -
                      Jekyll.logger.info "New jekyll site installed in #{path.cyan}."
         | 
| 125 | 
            -
                      Jekyll.logger.info "Bundle install skipped." if options["skip-bundle"]
         | 
| 126 | 
            -
             | 
| 127 128 | 
             
                      unless options["blank"] || options["skip-bundle"]
         | 
| 128 129 | 
             
                        bundle_install path
         | 
| 129 130 | 
             
                      end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                      Jekyll.logger.info "New jekyll site installed in #{path.cyan}."
         | 
| 133 | 
            +
                      Jekyll.logger.info "Bundle install skipped." if options["skip-bundle"]
         | 
| 130 134 | 
             
                    end
         | 
| 131 135 |  | 
| 132 136 | 
             
                    def bundle_install(path)
         | 
| 133 137 | 
             
                      Jekyll::External.require_with_graceful_fail "bundler"
         | 
| 134 138 | 
             
                      Jekyll.logger.info "Running bundle install in #{path.cyan}..."
         | 
| 135 139 | 
             
                      Dir.chdir(path) do
         | 
| 136 | 
            -
                         | 
| 137 | 
            -
             | 
| 138 | 
            -
             | 
| 139 | 
            -
                          system("bundle", "install")
         | 
| 140 | 
            +
                        process, output = Jekyll::Utils::Exec.run("bundle", "install")
         | 
| 141 | 
            +
                        output.to_s.each_line do |line|
         | 
| 142 | 
            +
                          Jekyll.logger.info("Bundler:".green, line.strip) unless line.to_s.empty?
         | 
| 140 143 | 
             
                        end
         | 
| 144 | 
            +
                        raise SystemExit unless process.success?
         | 
| 141 145 | 
             
                      end
         | 
| 142 146 | 
             
                    end
         | 
| 143 147 | 
             
                  end
         | 
| @@ -10,9 +10,9 @@ module Jekyll | |
| 10 10 | 
             
                      "ssl_key"            => ["--ssl-key [KEY]", "X.509 (SSL) Private Key."],
         | 
| 11 11 | 
             
                      "port"               => ["-P", "--port [PORT]", "Port to listen on"],
         | 
| 12 12 | 
             
                      "show_dir_listing"   => ["--show-dir-listing",
         | 
| 13 | 
            -
                        "Show a directory listing instead of loading your index file."],
         | 
| 13 | 
            +
                        "Show a directory listing instead of loading your index file.",],
         | 
| 14 14 | 
             
                      "skip_initial_build" => ["skip_initial_build", "--skip-initial-build",
         | 
| 15 | 
            -
                        "Skips the initial site build which occurs before the server is started."]
         | 
| 15 | 
            +
                        "Skips the initial site build which occurs before the server is started.",],
         | 
| 16 16 | 
             
                    }.freeze
         | 
| 17 17 |  | 
| 18 18 | 
             
                    #
         | 
| @@ -88,7 +88,7 @@ module Jekyll | |
| 88 88 | 
             
                          index.rhtml
         | 
| 89 89 | 
             
                          index.cgi
         | 
| 90 90 | 
             
                          index.xml
         | 
| 91 | 
            -
                        )
         | 
| 91 | 
            +
                        ),
         | 
| 92 92 | 
             
                      }
         | 
| 93 93 |  | 
| 94 94 | 
             
                      opts[:DirectoryIndex] = [] if opts[:JekyllOptions]["show_dir_listing"]
         | 
| @@ -116,8 +116,8 @@ module Jekyll | |
| 116 116 | 
             
                      WEBrick::Config::FileHandler.merge({
         | 
| 117 117 | 
             
                        :FancyIndexing     => true,
         | 
| 118 118 | 
             
                        :NondisclosureName => [
         | 
| 119 | 
            -
                          ".ht*", "~*"
         | 
| 120 | 
            -
                        ]
         | 
| 119 | 
            +
                          ".ht*", "~*",
         | 
| 120 | 
            +
                        ],
         | 
| 121 121 | 
             
                      })
         | 
| 122 122 | 
             
                    end
         | 
| 123 123 |  | 
| @@ -139,7 +139,7 @@ module Jekyll | |
| 139 139 | 
             
                        :prefix  => ssl_enabled ? "https" : "http",
         | 
| 140 140 | 
             
                        :address => address,
         | 
| 141 141 | 
             
                        :port    => port,
         | 
| 142 | 
            -
                        :baseurl => baseurl ? "#{baseurl}/" : ""
         | 
| 142 | 
            +
                        :baseurl => baseurl ? "#{baseurl}/" : "",
         | 
| 143 143 | 
             
                      })
         | 
| 144 144 | 
             
                    end
         | 
| 145 145 |  | 
| @@ -6,7 +6,7 @@ module Jekyll | |
| 6 6 | 
             
                  class Servlet < WEBrick::HTTPServlet::FileHandler
         | 
| 7 7 | 
             
                    DEFAULTS = {
         | 
| 8 8 | 
             
                      "Cache-Control" => "private, max-age=0, proxy-revalidate, " \
         | 
| 9 | 
            -
                        "no-store, no-cache, must-revalidate"
         | 
| 9 | 
            +
                        "no-store, no-cache, must-revalidate",
         | 
| 10 10 | 
             
                    }.freeze
         | 
| 11 11 |  | 
| 12 12 | 
             
                    def initialize(server, root, callbacks)
         | 
    
        data/lib/jekyll/configuration.rb
    CHANGED
    
    | @@ -58,15 +58,15 @@ module Jekyll | |
| 58 58 | 
             
                  "defaults"          => [],
         | 
| 59 59 |  | 
| 60 60 | 
             
                  "liquid"            => {
         | 
| 61 | 
            -
                    "error_mode" => "warn"
         | 
| 61 | 
            +
                    "error_mode" => "warn",
         | 
| 62 62 | 
             
                  },
         | 
| 63 63 |  | 
| 64 64 | 
             
                  "rdiscount"         => {
         | 
| 65 | 
            -
                    "extensions" => []
         | 
| 65 | 
            +
                    "extensions" => [],
         | 
| 66 66 | 
             
                  },
         | 
| 67 67 |  | 
| 68 68 | 
             
                  "redcarpet"         => {
         | 
| 69 | 
            -
                    "extensions" => []
         | 
| 69 | 
            +
                    "extensions" => [],
         | 
| 70 70 | 
             
                  },
         | 
| 71 71 |  | 
| 72 72 | 
             
                  "kramdown"          => {
         | 
| @@ -76,8 +76,8 @@ module Jekyll | |
| 76 76 | 
             
                    "smart_quotes"  => "lsquo,rsquo,ldquo,rdquo",
         | 
| 77 77 | 
             
                    "input"         => "GFM",
         | 
| 78 78 | 
             
                    "hard_wrap"     => false,
         | 
| 79 | 
            -
                    "footnote_nr"   => 1
         | 
| 80 | 
            -
                  }
         | 
| 79 | 
            +
                    "footnote_nr"   => 1,
         | 
| 80 | 
            +
                  },
         | 
| 81 81 | 
             
                }.map { |k, v| [k, v.freeze] }].freeze
         | 
| 82 82 |  | 
| 83 83 | 
             
                class << self
         | 
    
        data/lib/jekyll/document.rb
    CHANGED
    
    | @@ -9,7 +9,7 @@ module Jekyll | |
| 9 9 |  | 
| 10 10 | 
             
                YAML_FRONT_MATTER_REGEXP = %r!\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)!m
         | 
| 11 11 | 
             
                DATELESS_FILENAME_MATCHER = %r!^(?:.+/)*(.*)(\.[^.]+)$!
         | 
| 12 | 
            -
                DATE_FILENAME_MATCHER = %r!^(?:.+/)*(\d | 
| 12 | 
            +
                DATE_FILENAME_MATCHER = %r!^(?:.+/)*(\d{4}-\d{2}-\d{2})-(.*)(\.[^.]+)$!
         | 
| 13 13 |  | 
| 14 14 | 
             
                # Create a new Document.
         | 
| 15 15 | 
             
                #
         | 
| @@ -196,7 +196,7 @@ module Jekyll | |
| 196 196 | 
             
                  @url = URL.new({
         | 
| 197 197 | 
             
                    :template     => url_template,
         | 
| 198 198 | 
             
                    :placeholders => url_placeholders,
         | 
| 199 | 
            -
                    :permalink    => permalink
         | 
| 199 | 
            +
                    :permalink    => permalink,
         | 
| 200 200 | 
             
                  }).to_s
         | 
| 201 201 | 
             
                end
         | 
| 202 202 |  | 
| @@ -469,14 +469,14 @@ module Jekyll | |
| 469 469 | 
             
                      "category",
         | 
| 470 470 | 
             
                      "categories"
         | 
| 471 471 | 
             
                    )
         | 
| 472 | 
            -
                    ).map(&:to_s).flatten.uniq
         | 
| 472 | 
            +
                    ).map(&:to_s).flatten.uniq,
         | 
| 473 473 | 
             
                  })
         | 
| 474 474 | 
             
                end
         | 
| 475 475 |  | 
| 476 476 | 
             
                private
         | 
| 477 477 | 
             
                def populate_tags
         | 
| 478 478 | 
             
                  merge_data!({
         | 
| 479 | 
            -
                    "tags" => Utils.pluralized_array_from_hash(data, "tag", "tags").flatten
         | 
| 479 | 
            +
                    "tags" => Utils.pluralized_array_from_hash(data, "tag", "tags").flatten,
         | 
| 480 480 | 
             
                  })
         | 
| 481 481 | 
             
                end
         | 
| 482 482 |  | 
    
        data/lib/jekyll/entry_filter.rb
    CHANGED
    
    
    
        data/lib/jekyll/excerpt.rb
    CHANGED
    
    
    
        data/lib/jekyll/external.rb
    CHANGED
    
    | @@ -48,7 +48,7 @@ In order to use Jekyll as currently configured, you'll need to install this gem. | |
| 48 48 |  | 
| 49 49 | 
             
            The full error message from Ruby is: '#{e.message}'
         | 
| 50 50 |  | 
| 51 | 
            -
            If you run into trouble, you can find helpful resources at  | 
| 51 | 
            +
            If you run into trouble, you can find helpful resources at https://jekyllrb.com/help/!
         | 
| 52 52 | 
             
                        MSG
         | 
| 53 53 | 
             
                        raise Jekyll::Errors::MissingDependencyException, name
         | 
| 54 54 | 
             
                      end
         | 
    
        data/lib/jekyll/filters.rb
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            require "uri"
         | 
| 1 | 
            +
            require "addressable/uri"
         | 
| 2 2 | 
             
            require "json"
         | 
| 3 3 | 
             
            require "date"
         | 
| 4 4 | 
             
            require "liquid"
         | 
| @@ -8,6 +8,8 @@ require_all "jekyll/filters" | |
| 8 8 | 
             
            module Jekyll
         | 
| 9 9 | 
             
              module Filters
         | 
| 10 10 | 
             
                include URLFilters
         | 
| 11 | 
            +
                include GroupingFilters
         | 
| 12 | 
            +
             | 
| 11 13 | 
             
                # Convert a Markdown string into HTML output.
         | 
| 12 14 | 
             
                #
         | 
| 13 15 | 
             
                # input - The Markdown String to convert.
         | 
| @@ -150,7 +152,7 @@ module Jekyll | |
| 150 152 | 
             
                #
         | 
| 151 153 | 
             
                # Returns the escaped String.
         | 
| 152 154 | 
             
                def uri_escape(input)
         | 
| 153 | 
            -
                  URI. | 
| 155 | 
            +
                  Addressable::URI.encode(input)
         | 
| 154 156 | 
             
                end
         | 
| 155 157 |  | 
| 156 158 | 
             
                # Replace any whitespace in the input string with a single space
         | 
| @@ -175,6 +177,7 @@ module Jekyll | |
| 175 177 | 
             
                # word "and" for the last one.
         | 
| 176 178 | 
             
                #
         | 
| 177 179 | 
             
                # array - The Array of Strings to join.
         | 
| 180 | 
            +
                # connector - Word used to connect the last 2 items in the array
         | 
| 178 181 | 
             
                #
         | 
| 179 182 | 
             
                # Examples
         | 
| 180 183 | 
             
                #
         | 
| @@ -182,8 +185,7 @@ module Jekyll | |
| 182 185 | 
             
                #   # => "apples, oranges, and grapes"
         | 
| 183 186 | 
             
                #
         | 
| 184 187 | 
             
                # Returns the formatted String.
         | 
| 185 | 
            -
                def array_to_sentence_string(array)
         | 
| 186 | 
            -
                  connector = "and"
         | 
| 188 | 
            +
                def array_to_sentence_string(array, connector = "and")
         | 
| 187 189 | 
             
                  case array.length
         | 
| 188 190 | 
             
                  when 0
         | 
| 189 191 | 
             
                    ""
         | 
| @@ -205,29 +207,6 @@ module Jekyll | |
| 205 207 | 
             
                  as_liquid(input).to_json
         | 
| 206 208 | 
             
                end
         | 
| 207 209 |  | 
| 208 | 
            -
                # Group an array of items by a property
         | 
| 209 | 
            -
                #
         | 
| 210 | 
            -
                # input - the inputted Enumerable
         | 
| 211 | 
            -
                # property - the property
         | 
| 212 | 
            -
                #
         | 
| 213 | 
            -
                # Returns an array of Hashes, each looking something like this:
         | 
| 214 | 
            -
                #  {"name"  => "larry"
         | 
| 215 | 
            -
                #   "items" => [...] } # all the items where `property` == "larry"
         | 
| 216 | 
            -
                def group_by(input, property)
         | 
| 217 | 
            -
                  if groupable?(input)
         | 
| 218 | 
            -
                    input.group_by { |item| item_property(item, property).to_s }
         | 
| 219 | 
            -
                      .each_with_object([]) do |item, array|
         | 
| 220 | 
            -
                        array << {
         | 
| 221 | 
            -
                          "name"  => item.first,
         | 
| 222 | 
            -
                          "items" => item.last,
         | 
| 223 | 
            -
                          "size"  => item.last.size
         | 
| 224 | 
            -
                        }
         | 
| 225 | 
            -
                      end
         | 
| 226 | 
            -
                  else
         | 
| 227 | 
            -
                    input
         | 
| 228 | 
            -
                  end
         | 
| 229 | 
            -
                end
         | 
| 230 | 
            -
             | 
| 231 210 | 
             
                # Filter an array of objects
         | 
| 232 211 | 
             
                #
         | 
| 233 212 | 
             
                # input - the object array
         | 
| @@ -381,11 +360,6 @@ module Jekyll | |
| 381 360 | 
             
                  end.localtime
         | 
| 382 361 | 
             
                end
         | 
| 383 362 |  | 
| 384 | 
            -
                private
         | 
| 385 | 
            -
                def groupable?(element)
         | 
| 386 | 
            -
                  element.respond_to?(:group_by)
         | 
| 387 | 
            -
                end
         | 
| 388 | 
            -
             | 
| 389 363 | 
             
                private
         | 
| 390 364 | 
             
                def item_property(item, property)
         | 
| 391 365 | 
             
                  if item.respond_to?(:to_liquid)
         | 
| @@ -436,6 +410,7 @@ module Jekyll | |
| 436 410 |  | 
| 437 411 | 
             
                  condition
         | 
| 438 412 | 
             
                end
         | 
| 413 | 
            +
             | 
| 439 414 | 
             
              end
         | 
| 440 415 | 
             
            end
         | 
| 441 416 |  | 
| @@ -0,0 +1,63 @@ | |
| 1 | 
            +
            module Jekyll
         | 
| 2 | 
            +
              module Filters
         | 
| 3 | 
            +
                module GroupingFilters
         | 
| 4 | 
            +
                  # Group an array of items by a property
         | 
| 5 | 
            +
                  #
         | 
| 6 | 
            +
                  # input - the inputted Enumerable
         | 
| 7 | 
            +
                  # property - the property
         | 
| 8 | 
            +
                  #
         | 
| 9 | 
            +
                  # Returns an array of Hashes, each looking something like this:
         | 
| 10 | 
            +
                  #  {"name"  => "larry"
         | 
| 11 | 
            +
                  #   "items" => [...] } # all the items where `property` == "larry"
         | 
| 12 | 
            +
                  def group_by(input, property)
         | 
| 13 | 
            +
                    if groupable?(input)
         | 
| 14 | 
            +
                      groups = input.group_by { |item| item_property(item, property).to_s }
         | 
| 15 | 
            +
                      grouped_array(groups)
         | 
| 16 | 
            +
                    else
         | 
| 17 | 
            +
                      input
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  # Group an array of items by an expression
         | 
| 22 | 
            +
                  #
         | 
| 23 | 
            +
                  # input - the object array
         | 
| 24 | 
            +
                  # variable - the variable to assign each item to in the expression
         | 
| 25 | 
            +
                  # expression -a Liquid comparison expression passed in as a string
         | 
| 26 | 
            +
                  #
         | 
| 27 | 
            +
                  # Returns the filtered array of objects
         | 
| 28 | 
            +
                  def group_by_exp(input, variable, expression)
         | 
| 29 | 
            +
                    return input unless groupable?(input)
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                    parsed_expr = parse_expression(expression)
         | 
| 32 | 
            +
                    @context.stack do
         | 
| 33 | 
            +
                      groups = input.group_by do |item|
         | 
| 34 | 
            +
                        @context[variable] = item
         | 
| 35 | 
            +
                        parsed_expr.render(@context)
         | 
| 36 | 
            +
                      end
         | 
| 37 | 
            +
                      grouped_array(groups)
         | 
| 38 | 
            +
                    end
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  private
         | 
| 42 | 
            +
                  def parse_expression(str)
         | 
| 43 | 
            +
                    Liquid::Variable.new(str, {})
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  private
         | 
| 47 | 
            +
                  def groupable?(element)
         | 
| 48 | 
            +
                    element.respond_to?(:group_by)
         | 
| 49 | 
            +
                  end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                  private
         | 
| 52 | 
            +
                  def grouped_array(groups)
         | 
| 53 | 
            +
                    groups.each_with_object([]) do |item, array|
         | 
| 54 | 
            +
                      array << {
         | 
| 55 | 
            +
                        "name"  => item.first,
         | 
| 56 | 
            +
                        "items" => item.last,
         | 
| 57 | 
            +
                        "size"  => item.last.size,
         | 
| 58 | 
            +
                      }
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
            end
         | 
    
        data/lib/jekyll/hooks.rb
    CHANGED
    
    | @@ -6,7 +6,7 @@ module Jekyll | |
| 6 6 | 
             
                PRIORITY_MAP = {
         | 
| 7 7 | 
             
                  :low    => 10,
         | 
| 8 8 | 
             
                  :normal => 20,
         | 
| 9 | 
            -
                  :high   => 30
         | 
| 9 | 
            +
                  :high   => 30,
         | 
| 10 10 | 
             
                }.freeze
         | 
| 11 11 |  | 
| 12 12 | 
             
                # initial empty hooks
         | 
| @@ -17,26 +17,26 @@ module Jekyll | |
| 17 17 | 
             
                    :post_read   => [],
         | 
| 18 18 | 
             
                    :pre_render  => [],
         | 
| 19 19 | 
             
                    :post_render => [],
         | 
| 20 | 
            -
                    :post_write  => []
         | 
| 20 | 
            +
                    :post_write  => [],
         | 
| 21 21 | 
             
                  },
         | 
| 22 22 | 
             
                  :pages     => {
         | 
| 23 23 | 
             
                    :post_init   => [],
         | 
| 24 24 | 
             
                    :pre_render  => [],
         | 
| 25 25 | 
             
                    :post_render => [],
         | 
| 26 | 
            -
                    :post_write  => []
         | 
| 26 | 
            +
                    :post_write  => [],
         | 
| 27 27 | 
             
                  },
         | 
| 28 28 | 
             
                  :posts     => {
         | 
| 29 29 | 
             
                    :post_init   => [],
         | 
| 30 30 | 
             
                    :pre_render  => [],
         | 
| 31 31 | 
             
                    :post_render => [],
         | 
| 32 | 
            -
                    :post_write  => []
         | 
| 32 | 
            +
                    :post_write  => [],
         | 
| 33 33 | 
             
                  },
         | 
| 34 34 | 
             
                  :documents => {
         | 
| 35 35 | 
             
                    :post_init   => [],
         | 
| 36 36 | 
             
                    :pre_render  => [],
         | 
| 37 37 | 
             
                    :post_render => [],
         | 
| 38 | 
            -
                    :post_write  => []
         | 
| 39 | 
            -
                  }
         | 
| 38 | 
            +
                    :post_write  => [],
         | 
| 39 | 
            +
                  },
         | 
| 40 40 | 
             
                }
         | 
| 41 41 |  | 
| 42 42 | 
             
                # map of all hooks and their priorities
         | 
| @@ -64,7 +64,7 @@ module Jekyll | |
| 64 64 | 
             
                    :post_init   => [],
         | 
| 65 65 | 
             
                    :pre_render  => [],
         | 
| 66 66 | 
             
                    :post_render => [],
         | 
| 67 | 
            -
                    :post_write  => []
         | 
| 67 | 
            +
                    :post_write  => [],
         | 
| 68 68 | 
             
                  }
         | 
| 69 69 |  | 
| 70 70 | 
             
                  unless @registry[owner][event]
         | 
    
        data/lib/jekyll/log_adapter.rb
    CHANGED
    
    
    
        data/lib/jekyll/page.rb
    CHANGED
    
    | @@ -58,7 +58,7 @@ module Jekyll | |
| 58 58 |  | 
| 59 59 | 
             
                # The generated directory into which the page will be placed
         | 
| 60 60 | 
             
                # upon generation. This is derived from the permalink or, if
         | 
| 61 | 
            -
                # permalink is absent,  | 
| 61 | 
            +
                # permalink is absent, will be '/'
         | 
| 62 62 | 
             
                #
         | 
| 63 63 | 
             
                # Returns the String destination directory.
         | 
| 64 64 | 
             
                def dir
         | 
| @@ -98,7 +98,7 @@ module Jekyll | |
| 98 98 | 
             
                  @url ||= URL.new({
         | 
| 99 99 | 
             
                    :template     => template,
         | 
| 100 100 | 
             
                    :placeholders => url_placeholders,
         | 
| 101 | 
            -
                    :permalink    => permalink
         | 
| 101 | 
            +
                    :permalink    => permalink,
         | 
| 102 102 | 
             
                  }).to_s
         | 
| 103 103 | 
             
                end
         | 
| 104 104 |  | 
| @@ -108,7 +108,7 @@ module Jekyll | |
| 108 108 | 
             
                  {
         | 
| 109 109 | 
             
                    :path       => @dir,
         | 
| 110 110 | 
             
                    :basename   => basename,
         | 
| 111 | 
            -
                    :output_ext => output_ext
         | 
| 111 | 
            +
                    :output_ext => output_ext,
         | 
| 112 112 | 
             
                  }
         | 
| 113 113 | 
             
                end
         | 
| 114 114 |  | 
    
        data/lib/jekyll/plugin.rb
    CHANGED
    
    
    
        data/lib/jekyll/reader.rb
    CHANGED
    
    | @@ -71,7 +71,7 @@ module Jekyll | |
| 71 71 | 
             
                #
         | 
| 72 72 | 
             
                # Returns nothing.
         | 
| 73 73 | 
             
                def retrieve_dirs(_base, dir, dot_dirs)
         | 
| 74 | 
            -
                  dot_dirs. | 
| 74 | 
            +
                  dot_dirs.each do |file|
         | 
| 75 75 | 
             
                    dir_path = site.in_source_dir(dir, file)
         | 
| 76 76 | 
             
                    rel_path = File.join(dir, file)
         | 
| 77 77 | 
             
                    unless @site.dest.sub(%r!/$!, "") == dir_path
         | 
| @@ -7,20 +7,20 @@ module Jekyll | |
| 7 7 | 
             
                  @entry_filter = EntryFilter.new(site)
         | 
| 8 8 | 
             
                end
         | 
| 9 9 |  | 
| 10 | 
            -
                # Read all the files in < | 
| 11 | 
            -
                # object with each one.
         | 
| 10 | 
            +
                # Read all the files in <dir> and adds them to @content
         | 
| 12 11 | 
             
                #
         | 
| 13 12 | 
             
                # dir - The String relative path of the directory to read.
         | 
| 14 13 | 
             
                #
         | 
| 15 | 
            -
                # Returns  | 
| 14 | 
            +
                # Returns @content, a Hash of the .yaml, .yml,
         | 
| 15 | 
            +
                # .json, and .csv files in the base directory
         | 
| 16 16 | 
             
                def read(dir)
         | 
| 17 17 | 
             
                  base = site.in_source_dir(dir)
         | 
| 18 18 | 
             
                  read_data_to(base, @content)
         | 
| 19 19 | 
             
                  @content
         | 
| 20 20 | 
             
                end
         | 
| 21 21 |  | 
| 22 | 
            -
                # Read and parse all yaml  | 
| 23 | 
            -
                # <data> variable.
         | 
| 22 | 
            +
                # Read and parse all .yaml, .yml, .json, and .csv
         | 
| 23 | 
            +
                # files under <dir> and add them to the <data> variable.
         | 
| 24 24 | 
             
                #
         | 
| 25 25 | 
             
                # dir - The string absolute path of the directory to read.
         | 
| 26 26 | 
             
                # data - The variable to which data will be added.
         | 
| @@ -54,7 +54,7 @@ module Jekyll | |
| 54 54 | 
             
                  when ".csv"
         | 
| 55 55 | 
             
                    CSV.read(path, {
         | 
| 56 56 | 
             
                      :headers  => true,
         | 
| 57 | 
            -
                      :encoding => site.config["encoding"]
         | 
| 57 | 
            +
                      :encoding => site.config["encoding"],
         | 
| 58 58 | 
             
                    }).map(&:to_hash)
         | 
| 59 59 | 
             
                  else
         | 
| 60 60 | 
             
                    SafeYAML.load_file(path)
         | 
    
        data/lib/jekyll/regenerator.rb
    CHANGED
    
    
    
        data/lib/jekyll/related_posts.rb
    CHANGED
    
    | @@ -26,15 +26,15 @@ module Jekyll | |
| 26 26 | 
             
                def build_index
         | 
| 27 27 | 
             
                  self.class.lsi ||= begin
         | 
| 28 28 | 
             
                    lsi = ClassifierReborn::LSI.new(:auto_rebuild => false)
         | 
| 29 | 
            -
                     | 
| 29 | 
            +
                    Jekyll.logger.info("Populating LSI...")
         | 
| 30 30 |  | 
| 31 31 | 
             
                    site.posts.docs.each do |x|
         | 
| 32 32 | 
             
                      lsi.add_item(x)
         | 
| 33 33 | 
             
                    end
         | 
| 34 34 |  | 
| 35 | 
            -
                     | 
| 35 | 
            +
                    Jekyll.logger.info("Rebuilding index...")
         | 
| 36 36 | 
             
                    lsi.build_index
         | 
| 37 | 
            -
                     | 
| 37 | 
            +
                    Jekyll.logger.info("")
         | 
| 38 38 | 
             
                    lsi
         | 
| 39 39 | 
             
                  end
         | 
| 40 40 | 
             
                end
         | 
| @@ -46,11 +46,5 @@ module Jekyll | |
| 46 46 | 
             
                def most_recent_posts
         | 
| 47 47 | 
             
                  @most_recent_posts ||= (site.posts.docs.reverse - [post]).first(10)
         | 
| 48 48 | 
             
                end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                def display(output)
         | 
| 51 | 
            -
                  $stdout.print("\n")
         | 
| 52 | 
            -
                  $stdout.print(Jekyll.logger.formatted_topic(output))
         | 
| 53 | 
            -
                  $stdout.flush
         | 
| 54 | 
            -
                end
         | 
| 55 49 | 
             
              end
         | 
| 56 50 | 
             
            end
         | 
    
        data/lib/jekyll/site.rb
    CHANGED
    
    | @@ -302,7 +302,7 @@ module Jekyll | |
| 302 302 | 
             
                    Jekyll.logger.abort_with "Since v3.0, permalinks for pages" \
         | 
| 303 303 | 
             
                                            " in subfolders must be relative to the" \
         | 
| 304 304 | 
             
                                            " site source directory, not the parent" \
         | 
| 305 | 
            -
                                            " directory. Check  | 
| 305 | 
            +
                                            " directory. Check https://jekyllrb.com/docs/upgrading/"\
         | 
| 306 306 | 
             
                                            " for more info."
         | 
| 307 307 | 
             
                  end
         | 
| 308 308 | 
             
                end
         | 
| @@ -435,7 +435,7 @@ module Jekyll | |
| 435 435 | 
             
                private
         | 
| 436 436 | 
             
                def configure_include_paths
         | 
| 437 437 | 
             
                  @includes_load_paths = Array(in_source_dir(config["includes_dir"].to_s))
         | 
| 438 | 
            -
                  @includes_load_paths << theme.includes_path if  | 
| 438 | 
            +
                  @includes_load_paths << theme.includes_path if theme && theme.includes_path
         | 
| 439 439 | 
             
                end
         | 
| 440 440 |  | 
| 441 441 | 
             
                private
         | 
    
        data/lib/jekyll/static_file.rb
    CHANGED
    
    | @@ -101,7 +101,7 @@ module Jekyll | |
| 101 101 | 
             
                    "name"          => name,
         | 
| 102 102 | 
             
                    "extname"       => extname,
         | 
| 103 103 | 
             
                    "modified_time" => modified_time,
         | 
| 104 | 
            -
                    "path"          => File.join("", relative_path)
         | 
| 104 | 
            +
                    "path"          => File.join("", relative_path),
         | 
| 105 105 | 
             
                  }
         | 
| 106 106 | 
             
                end
         | 
| 107 107 |  | 
| @@ -112,7 +112,7 @@ module Jekyll | |
| 112 112 | 
             
                      @collection.relative_directory.size..relative_path.size],
         | 
| 113 113 | 
             
                    :output_ext => "",
         | 
| 114 114 | 
             
                    :name       => "",
         | 
| 115 | 
            -
                    :title      => ""
         | 
| 115 | 
            +
                    :title      => "",
         | 
| 116 116 | 
             
                  }
         | 
| 117 117 | 
             
                end
         | 
| 118 118 |  | 
| @@ -125,7 +125,7 @@ module Jekyll | |
| 125 125 | 
             
                           else
         | 
| 126 126 | 
             
                             ::Jekyll::URL.new({
         | 
| 127 127 | 
             
                               :template     => @collection.url_template,
         | 
| 128 | 
            -
                               :placeholders => placeholders
         | 
| 128 | 
            +
                               :placeholders => placeholders,
         | 
| 129 129 | 
             
                             })
         | 
| 130 130 | 
             
                           end.to_s.gsub(%r!/$!, "")
         | 
| 131 131 | 
             
                end
         | 
| @@ -54,7 +54,7 @@ eos | |
| 54 54 | 
             
                        [:hl_lines,    opts.fetch(:hl_lines, nil)],
         | 
| 55 55 | 
             
                        [:linenos,     opts.fetch(:linenos, nil)],
         | 
| 56 56 | 
             
                        [:encoding,    opts.fetch(:encoding, "utf-8")],
         | 
| 57 | 
            -
                        [:cssclass,    opts.fetch(:cssclass, nil)]
         | 
| 57 | 
            +
                        [:cssclass,    opts.fetch(:cssclass, nil)],
         | 
| 58 58 | 
             
                      ].reject { |f| f.last.nil? }]
         | 
| 59 59 | 
             
                    else
         | 
| 60 60 | 
             
                      opts
         | 
| @@ -125,7 +125,7 @@ eos | |
| 125 125 | 
             
                  def add_code_tag(code)
         | 
| 126 126 | 
             
                    code_attributes = [
         | 
| 127 127 | 
             
                      "class=\"language-#{@lang.to_s.tr("+", "-")}\"",
         | 
| 128 | 
            -
                      "data-lang=\"#{@lang}\""
         | 
| 128 | 
            +
                      "data-lang=\"#{@lang}\"",
         | 
| 129 129 | 
             
                    ].join(" ")
         | 
| 130 130 | 
             
                    "<figure class=\"highlight\"><pre><code #{code_attributes}>"\
         | 
| 131 131 | 
             
                    "#{code.chomp}</code></pre></figure>"
         | 
    
        data/lib/jekyll/tags/include.rb
    CHANGED
    
    | @@ -112,8 +112,8 @@ eos | |
| 112 112 | 
             
                  def locate_include_file(context, file, safe)
         | 
| 113 113 | 
             
                    includes_dirs = tag_includes_dirs(context)
         | 
| 114 114 | 
             
                    includes_dirs.each do |dir|
         | 
| 115 | 
            -
                      path = File.join(dir, file)
         | 
| 116 | 
            -
                      return path if valid_include_file?(path, dir, safe)
         | 
| 115 | 
            +
                      path = File.join(dir.to_s, file.to_s)
         | 
| 116 | 
            +
                      return path if valid_include_file?(path, dir.to_s, safe)
         | 
| 117 117 | 
             
                    end
         | 
| 118 118 | 
             
                    raise IOError, "Could not locate the included file '#{file}' in any of "\
         | 
| 119 119 | 
             
                      "#{includes_dirs}. Ensure it exists in one of those directories and, "\
         | 
| @@ -155,15 +155,19 @@ eos | |
| 155 155 | 
             
                    if cached_partial.key?(path)
         | 
| 156 156 | 
             
                      cached_partial[path]
         | 
| 157 157 | 
             
                    else
         | 
| 158 | 
            -
                       | 
| 158 | 
            +
                      unparsed_file = context.registers[:site]
         | 
| 159 159 | 
             
                        .liquid_renderer
         | 
| 160 160 | 
             
                        .file(path)
         | 
| 161 | 
            -
             | 
| 161 | 
            +
                      begin
         | 
| 162 | 
            +
                        cached_partial[path] = unparsed_file.parse(read_file(path, context))
         | 
| 163 | 
            +
                      rescue Liquid::SyntaxError => ex
         | 
| 164 | 
            +
                        raise IncludeTagError.new(ex.message, path)
         | 
| 165 | 
            +
                      end
         | 
| 162 166 | 
             
                    end
         | 
| 163 167 | 
             
                  end
         | 
| 164 168 |  | 
| 165 169 | 
             
                  def valid_include_file?(path, dir, safe)
         | 
| 166 | 
            -
                    ! | 
| 170 | 
            +
                    !outside_site_source?(path, dir, safe) && File.file?(path)
         | 
| 167 171 | 
             
                  end
         | 
| 168 172 |  | 
| 169 173 | 
             
                  def outside_site_source?(path, dir, safe)
         | 
    
        data/lib/jekyll/tags/post_url.rb
    CHANGED
    
    | @@ -14,8 +14,9 @@ module Jekyll | |
| 14 14 | 
             
                        "'#{name}' does not contain valid date and/or title."
         | 
| 15 15 | 
             
                    end
         | 
| 16 16 |  | 
| 17 | 
            -
                     | 
| 18 | 
            -
             | 
| 17 | 
            +
                    escaped_slug = Regexp.escape(slug)
         | 
| 18 | 
            +
                    @name_regex = %r!^_posts/#{path}#{date}-#{escaped_slug}\.[^.]+|
         | 
| 19 | 
            +
                      ^#{path}_posts/?#{date}-#{escaped_slug}\.[^.]+!x
         | 
| 19 20 | 
             
                  end
         | 
| 20 21 |  | 
| 21 22 | 
             
                  def post_date
         | 
    
        data/lib/jekyll/theme_builder.rb
    CHANGED
    
    
    
        data/lib/jekyll/url.rb
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            require "uri"
         | 
| 1 | 
            +
            require "addressable/uri"
         | 
| 2 2 |  | 
| 3 3 | 
             
            # Public: Methods that generate a URL for a resource such as a Post or a Page.
         | 
| 4 4 | 
             
            #
         | 
| @@ -145,7 +145,8 @@ module Jekyll | |
| 145 145 | 
             
                  #   pct-encoded   = "%" HEXDIG HEXDIG
         | 
| 146 146 | 
             
                  #   sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
         | 
| 147 147 | 
             
                  #                 / "*" / "+" / "," / ";" / "="
         | 
| 148 | 
            -
                   | 
| 148 | 
            +
                  path = Addressable::URI.encode(path)
         | 
| 149 | 
            +
                  path.encode("utf-8").sub("#", "%23")
         | 
| 149 150 | 
             
                end
         | 
| 150 151 |  | 
| 151 152 | 
             
                # Unescapes a URL path segment
         | 
| @@ -159,7 +160,7 @@ module Jekyll | |
| 159 160 | 
             
                #
         | 
| 160 161 | 
             
                # Returns the unescaped path.
         | 
| 161 162 | 
             
                def self.unescape_path(path)
         | 
| 162 | 
            -
                  URI. | 
| 163 | 
            +
                  Addressable::URI.unencode(path.encode("utf-8"))
         | 
| 163 164 | 
             
                end
         | 
| 164 165 | 
             
              end
         | 
| 165 166 | 
             
            end
         | 
    
        data/lib/jekyll/utils.rb
    CHANGED
    
    | @@ -2,8 +2,10 @@ | |
| 2 2 | 
             
            module Jekyll
         | 
| 3 3 | 
             
              module Utils
         | 
| 4 4 | 
             
                extend self
         | 
| 5 | 
            -
                autoload :Platforms, "jekyll/utils/platforms"
         | 
| 6 5 | 
             
                autoload :Ansi, "jekyll/utils/ansi"
         | 
| 6 | 
            +
                autoload :Exec, "jekyll/utils/exec"
         | 
| 7 | 
            +
                autoload :Platforms, "jekyll/utils/platforms"
         | 
| 8 | 
            +
                autoload :WinTZ, "jekyll/utils/win_tz"
         | 
| 7 9 |  | 
| 8 10 | 
             
                # Constants for use in #slugify
         | 
| 9 11 | 
             
                SLUGIFY_MODES = %w(raw default pretty ascii).freeze
         | 
    
        data/lib/jekyll/utils/ansi.rb
    CHANGED
    
    
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            require "open3"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Jekyll
         | 
| 4 | 
            +
              module Utils
         | 
| 5 | 
            +
                module Exec
         | 
| 6 | 
            +
                  extend self
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  # Runs a program in a sub-shell.
         | 
| 9 | 
            +
                  #
         | 
| 10 | 
            +
                  # *args - a list of strings containing the program name and arguments
         | 
| 11 | 
            +
                  #
         | 
| 12 | 
            +
                  # Returns a Process::Status and a String of output in an array in
         | 
| 13 | 
            +
                  # that order.
         | 
| 14 | 
            +
                  def run(*args)
         | 
| 15 | 
            +
                    stdin, stdout, stderr, process = Open3.popen3(*args)
         | 
| 16 | 
            +
                    out = stdout.read.strip
         | 
| 17 | 
            +
                    err = stderr.read.strip
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    [stdin, stdout, stderr].each(&:close)
         | 
| 20 | 
            +
                    [process.value, out + err]
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| @@ -0,0 +1,73 @@ | |
| 1 | 
            +
            module Jekyll
         | 
| 2 | 
            +
              module Utils
         | 
| 3 | 
            +
                module WinTZ
         | 
| 4 | 
            +
                  extend self
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  # Public: Calculate the Timezone for Windows when the config file has a defined
         | 
| 7 | 
            +
                  #         'timezone' key.
         | 
| 8 | 
            +
                  #
         | 
| 9 | 
            +
                  # timezone - the IANA Time Zone specified in "_config.yml"
         | 
| 10 | 
            +
                  #
         | 
| 11 | 
            +
                  # Returns a string that ultimately re-defines ENV["TZ"] in Windows
         | 
| 12 | 
            +
                  def calculate(timezone)
         | 
| 13 | 
            +
                    External.require_with_graceful_fail("tzinfo")
         | 
| 14 | 
            +
                    tz = TZInfo::Timezone.get(timezone)
         | 
| 15 | 
            +
                    difference = Time.now.to_i - tz.now.to_i
         | 
| 16 | 
            +
                    #
         | 
| 17 | 
            +
                    # POSIX style definition reverses the offset sign.
         | 
| 18 | 
            +
                    #   e.g. Eastern Standard Time (EST) that is 5Hrs. to the 'west' of Prime Meridian
         | 
| 19 | 
            +
                    #   is denoted as:
         | 
| 20 | 
            +
                    #     EST+5 (or) EST+05:00
         | 
| 21 | 
            +
                    # Reference: http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
         | 
| 22 | 
            +
                    sign = difference < 0 ? "-" : "+"
         | 
| 23 | 
            +
                    offset = sign == "-" ? "+" : "-" unless difference.zero?
         | 
| 24 | 
            +
                    #
         | 
| 25 | 
            +
                    # convert the difference (in seconds) to hours, as a rational number, and perform
         | 
| 26 | 
            +
                    # a modulo operation on it.
         | 
| 27 | 
            +
                    modulo = modulo_of(rational_hour(difference))
         | 
| 28 | 
            +
                    #
         | 
| 29 | 
            +
                    # Format the hour as a two-digit number.
         | 
| 30 | 
            +
                    # Establish the minutes based on modulo expression.
         | 
| 31 | 
            +
                    hh = format("%02d", absolute_hour(difference).ceil)
         | 
| 32 | 
            +
                    mm = modulo.zero? ? "00" : "30"
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    Jekyll.logger.debug "Timezone:", "#{timezone} #{offset}#{hh}:#{mm}"
         | 
| 35 | 
            +
                    #
         | 
| 36 | 
            +
                    # Note: The 3-letter-word below doesn't have a particular significance.
         | 
| 37 | 
            +
                    "WTZ#{sign}#{hh}:#{mm}"
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  private
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  # Private: Convert given seconds to an hour as a rational number.
         | 
| 43 | 
            +
                  #
         | 
| 44 | 
            +
                  # seconds - supplied as an integer, it is converted to a rational number.
         | 
| 45 | 
            +
                  # 3600 - no. of seconds in an hour.
         | 
| 46 | 
            +
                  #
         | 
| 47 | 
            +
                  # Returns a rational number.
         | 
| 48 | 
            +
                  def rational_hour(seconds)
         | 
| 49 | 
            +
                    seconds.to_r/3600
         | 
| 50 | 
            +
                  end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  # Private: Convert given seconds to an hour as an absolute number.
         | 
| 53 | 
            +
                  #
         | 
| 54 | 
            +
                  # seconds - supplied as an integer, it is converted to its absolute.
         | 
| 55 | 
            +
                  # 3600 - no. of seconds in an hour.
         | 
| 56 | 
            +
                  #
         | 
| 57 | 
            +
                  # Returns an integer.
         | 
| 58 | 
            +
                  def absolute_hour(seconds)
         | 
| 59 | 
            +
                    seconds.abs/3600
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  # Private: Perform a modulo operation on a given fraction.
         | 
| 63 | 
            +
                  #
         | 
| 64 | 
            +
                  # fraction - supplied as a rational number, its numerator is divided
         | 
| 65 | 
            +
                  #            by its denominator and the remainder returned.
         | 
| 66 | 
            +
                  #
         | 
| 67 | 
            +
                  # Returns an integer.
         | 
| 68 | 
            +
                  def modulo_of(fraction)
         | 
| 69 | 
            +
                    fraction.numerator % fraction.denominator
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
                end
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
            end
         | 
    
        data/lib/jekyll/version.rb
    CHANGED
    
    
| @@ -20,6 +20,6 @@ print_hi('Tom') | |
| 20 20 |  | 
| 21 21 | 
             
            Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
         | 
| 22 22 |  | 
| 23 | 
            -
            [jekyll-docs]:  | 
| 23 | 
            +
            [jekyll-docs]: https://jekyllrb.com/docs/home
         | 
| 24 24 | 
             
            [jekyll-gh]:   https://github.com/jekyll/jekyll
         | 
| 25 25 | 
             
            [jekyll-talk]: https://talk.jekyllrb.com/
         | 
    
        data/lib/site_template/about.md
    CHANGED
    
    | @@ -4,7 +4,7 @@ title: About | |
| 4 4 | 
             
            permalink: /about/
         | 
| 5 5 | 
             
            ---
         | 
| 6 6 |  | 
| 7 | 
            -
            This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com]( | 
| 7 | 
            +
            This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/)
         | 
| 8 8 |  | 
| 9 9 | 
             
            You can find the source code for the Jekyll new theme at:
         | 
| 10 10 | 
             
            {% include icon-github.html username="jekyll" %} /
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            The MIT License (MIT)
         | 
| 2 2 |  | 
| 3 | 
            -
            Copyright (c)  | 
| 3 | 
            +
            Copyright (c) <%= Time.now.year %> <%= user_name %>
         | 
| 4 4 |  | 
| 5 5 | 
             
            Permission is hereby granted, free of charge, to any person obtaining a copy
         | 
| 6 6 | 
             
            of this software and associated documentation files (the "Software"), to deal
         | 
| @@ -6,7 +6,7 @@ TODO: Delete this and the text above, and describe your gem | |
| 6 6 |  | 
| 7 7 | 
             
            ## Installation
         | 
| 8 8 |  | 
| 9 | 
            -
            Add this line to your Jekyll site's Gemfile | 
| 9 | 
            +
            Add this line to your Jekyll site's `Gemfile`:
         | 
| 10 10 |  | 
| 11 11 | 
             
            ```ruby
         | 
| 12 12 | 
             
            gem <%= theme_name.inspect %>
         | 
| @@ -44,5 +44,5 @@ When your theme is released, only the files in `_layouts`, `_includes`, and `_sa | |
| 44 44 |  | 
| 45 45 | 
             
            ## License
         | 
| 46 46 |  | 
| 47 | 
            -
            The theme is available as open source under the terms of the [MIT License]( | 
| 47 | 
            +
            The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
         | 
| 48 48 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,155 +1,155 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: jekyll
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3. | 
| 4 | 
            +
              version: 3.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Tom Preston-Werner
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2017-01-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 14 | 
            +
              name: addressable
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: ' | 
| 19 | 
            +
                    version: '2.4'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 24 | 
             
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: ' | 
| 26 | 
            +
                    version: '2.4'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name:  | 
| 28 | 
            +
              name: colorator
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 31 | 
             
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '1. | 
| 33 | 
            +
                    version: '1.0'
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 38 | 
             
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '1. | 
| 40 | 
            +
                    version: '1.0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name:  | 
| 42 | 
            +
              name: jekyll-sass-converter
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: 0 | 
| 47 | 
            +
                    version: '1.0'
         | 
| 48 48 | 
             
              type: :runtime
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: 0 | 
| 54 | 
            +
                    version: '1.0'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            -
              name:  | 
| 56 | 
            +
              name: jekyll-watch
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '1. | 
| 61 | 
            +
                    version: '1.1'
         | 
| 62 62 | 
             
              type: :runtime
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 66 | 
             
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '1. | 
| 68 | 
            +
                    version: '1.1'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            -
              name:  | 
| 70 | 
            +
              name: kramdown
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 73 | 
             
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: '1. | 
| 75 | 
            +
                    version: '1.3'
         | 
| 76 76 | 
             
              type: :runtime
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 80 | 
             
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: '1. | 
| 82 | 
            +
                    version: '1.3'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            -
              name:  | 
| 84 | 
            +
              name: liquid
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 87 | 
             
                - - "~>"
         | 
| 88 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: ' | 
| 89 | 
            +
                    version: '3.0'
         | 
| 90 90 | 
             
              type: :runtime
         | 
| 91 91 | 
             
              prerelease: false
         | 
| 92 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 93 | 
             
                requirements:
         | 
| 94 94 | 
             
                - - "~>"
         | 
| 95 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: ' | 
| 96 | 
            +
                    version: '3.0'
         | 
| 97 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name:  | 
| 98 | 
            +
              name: mercenary
         | 
| 99 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 100 | 
             
                requirements:
         | 
| 101 101 | 
             
                - - "~>"
         | 
| 102 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version:  | 
| 103 | 
            +
                    version: 0.3.3
         | 
| 104 104 | 
             
              type: :runtime
         | 
| 105 105 | 
             
              prerelease: false
         | 
| 106 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 107 | 
             
                requirements:
         | 
| 108 108 | 
             
                - - "~>"
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version:  | 
| 110 | 
            +
                    version: 0.3.3
         | 
| 111 111 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 | 
            -
              name:  | 
| 112 | 
            +
              name: pathutil
         | 
| 113 113 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 114 114 | 
             
                requirements:
         | 
| 115 115 | 
             
                - - "~>"
         | 
| 116 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: ' | 
| 117 | 
            +
                    version: '0.9'
         | 
| 118 118 | 
             
              type: :runtime
         | 
| 119 119 | 
             
              prerelease: false
         | 
| 120 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 121 | 
             
                requirements:
         | 
| 122 122 | 
             
                - - "~>"
         | 
| 123 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version: ' | 
| 124 | 
            +
                    version: '0.9'
         | 
| 125 125 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 126 | 
            -
              name:  | 
| 126 | 
            +
              name: rouge
         | 
| 127 127 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 128 | 
             
                requirements:
         | 
| 129 129 | 
             
                - - "~>"
         | 
| 130 130 | 
             
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            -
                    version: ' | 
| 131 | 
            +
                    version: '1.7'
         | 
| 132 132 | 
             
              type: :runtime
         | 
| 133 133 | 
             
              prerelease: false
         | 
| 134 134 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 135 | 
             
                requirements:
         | 
| 136 136 | 
             
                - - "~>"
         | 
| 137 137 | 
             
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            -
                    version: ' | 
| 138 | 
            +
                    version: '1.7'
         | 
| 139 139 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 140 | 
            -
              name:  | 
| 140 | 
            +
              name: safe_yaml
         | 
| 141 141 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 142 142 | 
             
                requirements:
         | 
| 143 143 | 
             
                - - "~>"
         | 
| 144 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 145 | 
            -
                    version: ' | 
| 145 | 
            +
                    version: '1.0'
         | 
| 146 146 | 
             
              type: :runtime
         | 
| 147 147 | 
             
              prerelease: false
         | 
| 148 148 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 149 149 | 
             
                requirements:
         | 
| 150 150 | 
             
                - - "~>"
         | 
| 151 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            -
                    version: ' | 
| 152 | 
            +
                    version: '1.0'
         | 
| 153 153 | 
             
            description: Jekyll is a simple, blog aware, static site generator.
         | 
| 154 154 | 
             
            email: tom@mojombo.com
         | 
| 155 155 | 
             
            executables:
         | 
| @@ -199,6 +199,7 @@ files: | |
| 199 199 | 
             
            - lib/jekyll/excerpt.rb
         | 
| 200 200 | 
             
            - lib/jekyll/external.rb
         | 
| 201 201 | 
             
            - lib/jekyll/filters.rb
         | 
| 202 | 
            +
            - lib/jekyll/filters/grouping_filters.rb
         | 
| 202 203 | 
             
            - lib/jekyll/filters/url_filters.rb
         | 
| 203 204 | 
             
            - lib/jekyll/frontmatter_defaults.rb
         | 
| 204 205 | 
             
            - lib/jekyll/generator.rb
         | 
| @@ -237,7 +238,9 @@ files: | |
| 237 238 | 
             
            - lib/jekyll/url.rb
         | 
| 238 239 | 
             
            - lib/jekyll/utils.rb
         | 
| 239 240 | 
             
            - lib/jekyll/utils/ansi.rb
         | 
| 241 | 
            +
            - lib/jekyll/utils/exec.rb
         | 
| 240 242 | 
             
            - lib/jekyll/utils/platforms.rb
         | 
| 243 | 
            +
            - lib/jekyll/utils/win_tz.rb
         | 
| 241 244 | 
             
            - lib/jekyll/version.rb
         | 
| 242 245 | 
             
            - lib/site_template/.gitignore
         | 
| 243 246 | 
             
            - lib/site_template/_config.yml
         | 
| @@ -278,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 278 281 | 
             
                  version: '0'
         | 
| 279 282 | 
             
            requirements: []
         | 
| 280 283 | 
             
            rubyforge_project: 
         | 
| 281 | 
            -
            rubygems_version: 2. | 
| 284 | 
            +
            rubygems_version: 2.6.10
         | 
| 282 285 | 
             
            signing_key: 
         | 
| 283 286 | 
             
            specification_version: 2
         | 
| 284 287 | 
             
            summary: A simple, blog aware, static site generator.
         |