diff --git a/History.markdown b/History.markdown index 02f4091d..84a1b586 100644 --- a/History.markdown +++ b/History.markdown @@ -1,3 +1,15 @@ +## HEAD + +### Site Enhancements + + * Enable site excerpts (#5150) + * Initial 404 page (#5143) + * Remove the "this feature is unreleased" warning from the theme docs (#5158) + +### Bug Fixes + + * Include theme directories in default gemspec (#5152) + ## 3.2.0 / 2016-07-26 ### Minor Enhancements diff --git a/lib/jekyll/static_file.rb b/lib/jekyll/static_file.rb index 6126820c..0f8544ee 100644 --- a/lib/jekyll/static_file.rb +++ b/lib/jekyll/static_file.rb @@ -3,9 +3,7 @@ module Jekyll attr_reader :relative_path, :extname class << self - # - # The cache of last modification times - # [path] -> mtime. + # The cache of last modification times [path] -> mtime. def mtimes @mtimes ||= {} end @@ -31,29 +29,25 @@ module Jekyll @relative_path = File.join(*[@dir, @name].compact) @extname = File.extname(@name) end - # rubocop: enable ParameterLists + # Returns source file path. def path - File.join( - *[@base, @dir, @name].compact - ) + File.join(*[@base, @dir, @name].compact) end # Obtain destination path. + # # dest - The String path to the destination dir. + # # Returns destination file path. def destination(dest) - @site.in_dest_dir( - *[dest, destination_rel_dir, @name].compact - ) + @site.in_dest_dir(*[dest, destination_rel_dir, @name].compact) end def destination_rel_dir if @collection - File.dirname( - url - ) + File.dirname(url) else @dir end @@ -69,12 +63,14 @@ module Jekyll end # Is source path modified? + # # Returns true if modified since last write. def modified? self.class.mtimes[path] != mtime end # Whether to write the file to the filesystem + # # Returns true unless the defaults for the destination path from # _config.yml contain `published: false`. def write? @@ -82,18 +78,20 @@ module Jekyll end # Write the static file to the destination directory (if modified). - # Returns false if the file was not modified since last time (no-op). + # # dest - The String path to the destination dir. + # + # Returns false if the file was not modified since last time (no-op). def write(dest) dest_path = destination(dest) - if File.exist?(dest_path) && !modified? - return false - end + return false if File.exist?(dest_path) && !modified? self.class.mtimes[path] = mtime + FileUtils.mkdir_p(File.dirname(dest_path)) FileUtils.rm(dest_path) if File.exist?(dest_path) copy_file(dest_path) + true end @@ -108,12 +106,11 @@ module Jekyll def placeholders { :collection => @collection.label, + :path => relative_path[ + @collection.relative_directory.size..relative_path.size], :output_ext => "", :name => "", - :title => "", - :path => relative_path[ - @collection.relative_directory.size..relative_path.size - ] + :title => "" } end @@ -121,16 +118,14 @@ module Jekyll # the collection's URL template into account. The default URL template can # be overriden in the collection's configuration in _config.yml. def url - @url ||= - if @collection.nil? - relative_path - else - ::Jekyll::URL.new({ - :template => @collection.url_template, - :placeholders => placeholders - }) - end - .to_s.gsub(%r!/$!, "") + @url ||= if @collection.nil? + relative_path + else + ::Jekyll::URL.new({ + :template => @collection.url_template, + :placeholders => placeholders + }) + end.to_s.gsub(%r!/$!, "") end # Returns the type of the collection if present, nil otherwise. @@ -141,28 +136,17 @@ module Jekyll # Returns the front matter defaults defined for the file's URL and/or type # as defined in _config.yml. def defaults - @defaults ||= @site.frontmatter_defaults.all( - url, type - ) + @defaults ||= @site.frontmatter_defaults.all url, type end private def copy_file(dest_path) if @site.safe || Jekyll.env == "production" - FileUtils.cp( - path, dest_path - ) + FileUtils.cp(path, dest_path) else - FileUtils.copy_entry( - path, dest_path - ) + FileUtils.copy_entry(path, dest_path) end - - File.utime( - self.class.mtimes[path], - self.class.mtimes[path], - dest_path - ) + File.utime(self.class.mtimes[path], self.class.mtimes[path], dest_path) end end end diff --git a/lib/theme_template/theme.gemspec.erb b/lib/theme_template/theme.gemspec.erb index dac6ed39..d403d674 100644 --- a/lib/theme_template/theme.gemspec.erb +++ b/lib/theme_template/theme.gemspec.erb @@ -10,7 +10,7 @@ Gem::Specification.new do |spec| spec.homepage = "TODO: Put your gem's website or public repo URL here." spec.license = "MIT" - spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(<%= theme_directories.join("|") %>)/}) } + spec.files = `git ls-files -z`.split("\x0").select { |f| f.match(%r{^(<%= theme_directories.join("|") %>|LICENSE|README)/i}) } spec.add_development_dependency "jekyll", "~> <%= jekyll_version_with_minor %>" spec.add_development_dependency "bundler", "~> 1.12" diff --git a/site/404.html b/site/404.html new file mode 100644 index 00000000..e21f2323 --- /dev/null +++ b/site/404.html @@ -0,0 +1,40 @@ +--- +layout: error +permalink: /404.html +sitemap: false +--- + +
+
+
+

Huh. It seems that page is
Hyde-ing...

+
+
+
+ +
+
+
+

The resource you requested was not found. Here are some links to help you find your way:

+ +
+
+
diff --git a/site/_config.yml b/site/_config.yml index 0b69dc98..0c1e3245 100644 --- a/site/_config.yml +++ b/site/_config.yml @@ -1,7 +1,6 @@ markdown: kramdown highlighter: rouge permalink: /news/:year/:month/:day/:title/ -excerpt_separator: "" gauges_id: 503c5af6613f5d0f19000027 google_analytics_id: UA-50755011-1 diff --git a/site/_docs/themes.md b/site/_docs/themes.md index 02e1ebf5..2b7155bb 100644 --- a/site/_docs/themes.md +++ b/site/_docs/themes.md @@ -4,15 +4,6 @@ title: Themes permalink: /docs/themes/ --- -
-
This feature is unreleased!
-

- Jekyll 3.0 and 3.1 do NOT have the ability to add themes in this way. - The documentation below is for an unreleased version of Jekyll and - cannot be used at the moment. -

-
- Jekyll has an extensive theme system, which allows you to leverage community-maintained templates and styles to customize your site's presentation. Jekyll themes package layouts, includes, and stylesheets in a way that can be overridden by your site's content. ## Installing a theme diff --git a/site/_layouts/error.html b/site/_layouts/error.html new file mode 100644 index 00000000..f5bc5c9b --- /dev/null +++ b/site/_layouts/error.html @@ -0,0 +1,23 @@ +{% include top.html %} + + +
+
+ +
+
+ + {{ content }} + + {% include anchor_links.html %} + {% include analytics.html %} + + +