diff --git a/History.markdown b/History.markdown index 8dbe1ccf..9a19a1cc 100644 --- a/History.markdown +++ b/History.markdown @@ -2,13 +2,38 @@ ### Major Enhancements ### Minor Enhancements + * Move the building of related posts into their own class (#1057) + * Removed trailing spaces in several places throughout the code (#1116) + * Add a `--force` option to `jekyll new` (#1115) ### Bug Fixes + * Rename Jekyll::Logger to Jekyll::Stevenson to fix inheritance issue (#1106) + * Exit with a non-zero exit code when dealing with a Liquid error (#1121) + * Make the `exclude` and `include` options backwards compatible with + versions of Jekyll prior to 1.0 (#1114) + * Fix pagination on Windows (#1063) + * Fix the application of Pygments' Generic Output style to Go code + (#1156) ### Site Enhancements + * Documentation for `date_to_rfc822` and `uri_escape` (#1142) + * Documentation highlight boxes shouldn't show scrollbars if not necessary (#1123) + * Add link to jekyll-minibundle in the doc's plugins list (#1035) + * Quick patch for importers documentation + * Fix prefix for WordpressDotCom importer in docs (#1107) + * Add jekyll-contentblocks plugin to docs (#1068) + * Make code bits in notes look more natural, more readable (#1089) + * Fix logic for `relative_permalinks` instructions on Upgrading page (#1101) + * Add docs for post excerpt (#1072) * Add docs for gist tag (#1072) + * Add docs indicating that Pygments does not need to be installed + separately (#1099, #1119) + * Update the migrator docs to be current (#1136) + * Add the Jekyll Gallery Plugin to the plugin list (#1143) ### Development Fixes + * Fix pesky Cucumber infinite loop (#1139) + * Do not write posts with timezones in Cucumber tests (#1124) ## 1.0.2 / 2013-05-12 diff --git a/bin/jekyll b/bin/jekyll index 2e631bbb..b2c6fab9 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -37,8 +37,10 @@ command :new do |c| c.syntax = 'jekyll new PATH' c.description = 'Creates a new Jekyll site scaffold in PATH' + c.option '--force', 'Force creation even if PATH already exists' + c.action do |args, options| - Jekyll::Commands::New.process(args) + Jekyll::Commands::New.process(args, options.__hash__) end end diff --git a/features/drafts.feature b/features/drafts.feature index 27832fc4..27b3f074 100644 --- a/features/drafts.feature +++ b/features/drafts.feature @@ -2,7 +2,7 @@ Feature: Draft Posts As a hacker who likes to blog I want to be able to preview drafts locally In order to see if they look alright before publishing - + Scenario: Preview a draft Given I have a configuration file with "permalink" set to "none" And I have a _drafts directory diff --git a/features/post_data.feature b/features/post_data.feature index 5ed7e862..3ba37062 100644 --- a/features/post_data.feature +++ b/features/post_data.feature @@ -117,7 +117,7 @@ Feature: Post data When I run jekyll Then the _site directory should exist And I should see "Post category: movies" in "_site/movies/2009/03/27/star-wars.html" - + Scenario: Use post.categories variable when category is in YAML and is mixed-case Given I have a _posts directory And I have a _layouts directory @@ -128,7 +128,7 @@ Feature: Post data When I run jekyll Then the _site directory should exist And I should see "Post category: movies" in "_site/movies/2009/03/27/star-wars.html" - + Scenario: Use post.categories variable when category is in YAML Given I have a _posts directory And I have a _layouts directory diff --git a/features/step_definitions/jekyll_steps.rb b/features/step_definitions/jekyll_steps.rb index 75330738..696ddcb8 100644 --- a/features/step_definitions/jekyll_steps.rb +++ b/features/step_definitions/jekyll_steps.rb @@ -47,44 +47,38 @@ Given /^I have an? (.*) directory$/ do |dir| FileUtils.mkdir_p(dir) end -Given /^I have the following (draft|post)s?(?: (.*) "(.*)")?:$/ do |status, direction, folder, table| +Given /^I have the following (draft|post)s?(?: (in|under) "([^"]+)")?:$/ do |status, direction, folder, table| table.hashes.each do |post| - title = post['title'].downcase.gsub(/[^\w]/, " ").strip.gsub(/\s+/, '-') - - if direction && direction == "in" - before = folder || '.' - elsif direction && direction == "under" - after = folder || '.' - end - + title = slug(post['title']) ext = post['type'] || 'textile' + before, after = location(folder, direction) + + if post['date'] + in_format, out_format = time_format(post['date']) + parsed_date = DateTime.strptime(post['date'], in_format) + post['date'] = parsed_date.strftime(out_format) + end if "draft" == status - path = File.join(before || '.', '_drafts', after || '.', "#{title}.#{ext}") - else - format = if has_time_component?(post['date']) - '%Y-%m-%d %H:%M %z' - else - '%m/%d/%Y' # why even - end - parsed_date = DateTime.strptime(post['date'], format) - post['date'] = parsed_date.to_s - date = parsed_date.strftime('%Y-%m-%d') - path = File.join(before || '.', '_posts', after || '.', "#{date}-#{title}.#{ext}") + folder_post = '_drafts' + filename = "#{title}.#{ext}" + elsif "post" == status + folder_post = '_posts' + filename = "#{parsed_date.strftime('%Y-%m-%d')}-#{title}.#{ext}" end + path = File.join(before, folder_post, after, filename) + matter_hash = {} - %w(title layout tag tags category categories published author path).each do |key| + %w(title layout tag tags category categories published author path date).each do |key| matter_hash[key] = post[key] if post[key] end - if "post" == status - matter_hash["date"] = post["date"] if post["date"] - end matter = matter_hash.map { |k, v| "#{k}: #{v}\n" }.join.chomp - content = post['content'] - if post['input'] && post['filter'] - content = "{{ #{post['input']} | #{post['filter']} }}" + content = if post['input'] && post['filter'] + "{{ #{post['input']} | #{post['filter']} }}" + else + post['content'] end File.open(path, 'w') do |f| diff --git a/features/support/env.rb b/features/support/env.rb index 38bab950..f21d61c3 100644 --- a/features/support/env.rb +++ b/features/support/env.rb @@ -2,10 +2,6 @@ require 'fileutils' require 'rr' require 'test/unit' -World do - include Test::Unit::Assertions -end - TEST_DIR = File.join('/', 'tmp', 'jekyll') JEKYLL_PATH = File.join(File.dirname(__FILE__), '..', '..', 'bin', 'jekyll') @@ -17,9 +13,29 @@ def run_jekyll(opts = {}) system command end +def time_format(date) + if has_time_component?(date) + ['%Y-%m-%d %H:%M %z'] * 2 + else + ['%m/%d/%Y', '%Y-%m-%d %H:%M'] + end +end + def has_time_component?(date_string) date_string.split(" ").size > 1 end +def slug(title) + title.downcase.gsub(/[^\w]/, " ").strip.gsub(/\s+/, '-') +end + +def location(folder, direction) + if folder + before = folder if direction == "in" + after = folder if direction == "under" + end + [before || '.', after || '.'] +end + # work around "invalid option: --format" cucumber bug (see #296) Test::Unit.run = true if RUBY_VERSION < '1.9' diff --git a/jekyll.gemspec b/jekyll.gemspec index 08274bf3..d02134b8 100644 --- a/jekyll.gemspec +++ b/jekyll.gemspec @@ -37,7 +37,7 @@ Gem::Specification.new do |s| s.add_development_dependency('rdoc', "~> 3.11") s.add_development_dependency('redgreen', "~> 1.2") s.add_development_dependency('shoulda', "~> 3.3.2") - s.add_development_dependency('rr', "~> 1.0") + s.add_development_dependency('rr', "~> 1.0.0") s.add_development_dependency('cucumber', "~> 1.2.1", '!= 1.2.4') s.add_development_dependency('RedCloth', "~> 4.2") s.add_development_dependency('rdiscount', "~> 1.6") @@ -92,13 +92,14 @@ Gem::Specification.new do |s| lib/jekyll/generator.rb lib/jekyll/generators/pagination.rb lib/jekyll/layout.rb - lib/jekyll/logger.rb lib/jekyll/mime.types lib/jekyll/page.rb lib/jekyll/plugin.rb lib/jekyll/post.rb + lib/jekyll/related_posts.rb lib/jekyll/site.rb lib/jekyll/static_file.rb + lib/jekyll/stevenson.rb lib/jekyll/tags/gist.rb lib/jekyll/tags/highlight.rb lib/jekyll/tags/include.rb @@ -236,6 +237,7 @@ Gem::Specification.new do |s| test/test_rdiscount.rb test/test_redcarpet.rb test/test_redcloth.rb + test/test_related_posts.rb test/test_site.rb test/test_tags.rb ] diff --git a/lib/jekyll.rb b/lib/jekyll.rb index d909373b..d466397c 100644 --- a/lib/jekyll.rb +++ b/lib/jekyll.rb @@ -28,7 +28,7 @@ require 'colorator' # internal requires require 'jekyll/core_ext' -require 'jekyll/logger' +require 'jekyll/stevenson' require 'jekyll/deprecator' require 'jekyll/configuration' require 'jekyll/site' @@ -40,6 +40,7 @@ require 'jekyll/draft' require 'jekyll/filters' require 'jekyll/static_file' require 'jekyll/errors' +require 'jekyll/related_posts' # extensions require 'jekyll/plugin' diff --git a/lib/jekyll/command.rb b/lib/jekyll/command.rb index a352028b..b9d1b841 100644 --- a/lib/jekyll/command.rb +++ b/lib/jekyll/command.rb @@ -18,9 +18,9 @@ module Jekyll site.process rescue Jekyll::FatalException => e puts - Jekyll::Logger.error "ERROR:", "YOUR SITE COULD NOT BE BUILT:" - Jekyll::Logger.error "", "------------------------------------" - Jekyll::Logger.error "", e.message + Jekyll::Stevenson.error "ERROR:", "YOUR SITE COULD NOT BE BUILT:" + Jekyll::Stevenson.error "", "------------------------------------" + Jekyll::Stevenson.error "", e.message exit(1) end end diff --git a/lib/jekyll/commands/build.rb b/lib/jekyll/commands/build.rb index 148869df..3c1c5f62 100644 --- a/lib/jekyll/commands/build.rb +++ b/lib/jekyll/commands/build.rb @@ -17,9 +17,9 @@ module Jekyll def self.build(site, options) source = options['source'] destination = options['destination'] - Jekyll::Logger.info "Source:", source - Jekyll::Logger.info "Destination:", destination - print Jekyll::Logger.formatted_topic "Generating..." + Jekyll::Stevenson.info "Source:", source + Jekyll::Stevenson.info "Destination:", destination + print Jekyll::Stevenson.formatted_topic "Generating..." self.process_site(site) puts "done." end @@ -36,14 +36,14 @@ module Jekyll source = options['source'] destination = options['destination'] - Jekyll::Logger.info "Auto-regeneration:", "enabled" + Jekyll::Stevenson.info "Auto-regeneration:", "enabled" dw = DirectoryWatcher.new(source, :glob => self.globs(source, destination), :pre_load => true) dw.interval = 1 dw.add_observer do |*args| t = Time.now.strftime("%Y-%m-%d %H:%M:%S") - print Jekyll::Logger.formatted_topic("Regenerating:") + "#{args.size} files at #{t} " + print Jekyll::Stevenson.formatted_topic("Regenerating:") + "#{args.size} files at #{t} " self.process_site(site) puts "...done." end diff --git a/lib/jekyll/commands/doctor.rb b/lib/jekyll/commands/doctor.rb index 1819e0c7..d6648a2b 100644 --- a/lib/jekyll/commands/doctor.rb +++ b/lib/jekyll/commands/doctor.rb @@ -7,7 +7,7 @@ module Jekyll site.read unless deprecated_relative_permalinks(site) - Jekyll::Logger.info "Your test results", "are in. Everything looks fine." + Jekyll::Stevenson.info "Your test results", "are in. Everything looks fine." end end @@ -15,7 +15,7 @@ module Jekyll contains_deprecated_pages = false site.pages.each do |page| if page.uses_relative_permalinks - Jekyll::Logger.warn "Deprecation:", "'#{page.path}' uses relative" + + Jekyll::Stevenson.warn "Deprecation:", "'#{page.path}' uses relative" + " permalinks which will be deprecated in" + " Jekyll v1.1 and beyond." contains_deprecated_pages = true diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index c5219e13..ea35ef40 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -3,13 +3,13 @@ require 'erb' module Jekyll module Commands class New < Command - def self.process(args) + def self.process(args, options = {}) raise ArgumentError.new('You must specify a path.') if args.empty? new_blog_path = File.expand_path(args.join(" "), Dir.pwd) FileUtils.mkdir_p new_blog_path - unless Dir["#{new_blog_path}/**/*"].empty? - Jekyll::Logger.error "Conflict:", "#{new_blog_path} exists and is not empty." + if preserve_source_location?(new_blog_path, options) + Jekyll::Stevenson.error "Conflict:", "#{new_blog_path} exists and is not empty." exit(1) end @@ -33,6 +33,11 @@ module Jekyll end private + + def self.preserve_source_location?(path, options) + !options[:force] && !Dir["#{path}/**/*"].empty? + end + def self.create_sample_files(path) FileUtils.cp_r site_template + '/.', path FileUtils.rm File.expand_path(scaffold_path, path) diff --git a/lib/jekyll/configuration.rb b/lib/jekyll/configuration.rb index 0db188d3..0bb52096 100644 --- a/lib/jekyll/configuration.rb +++ b/lib/jekyll/configuration.rb @@ -115,7 +115,7 @@ module Jekyll def read_config_file(file) next_config = YAML.safe_load_file(file) raise "Configuration file: (INVALID) #{file}".yellow if !next_config.is_a?(Hash) - Jekyll::Logger.info "Configuration file:", file + Jekyll::Stevenson.info "Configuration file:", file next_config end @@ -135,9 +135,9 @@ module Jekyll end rescue SystemCallError # Errno:ENOENT = file not found - Jekyll::Logger.warn "Configuration file:", "none" + Jekyll::Stevenson.warn "Configuration file:", "none" rescue => err - Jekyll::Logger.warn "WARNING:", "Error reading configuration. " + + Jekyll::Stevenson.warn "WARNING:", "Error reading configuration. " + "Using defaults (and options)." $stderr.puts "#{err}" end @@ -145,6 +145,15 @@ module Jekyll configuration.backwards_compatibilize end + # Public: Split a CSV string into an array containing its values + # + # csv - the string of comma-separated values + # + # Returns an array of the values contained in the CSV + def csv_to_array(csv) + csv.split(",").map(&:strip) + end + # Public: Ensure the proper options are set in the configuration to allow for # backwards-compatibility with Jekyll pre-1.0 # @@ -153,7 +162,7 @@ module Jekyll config = clone # Provide backwards-compatibility if config.has_key?('auto') || config.has_key?('watch') - Jekyll::Logger.warn "Deprecation:", "Auto-regeneration can no longer" + + Jekyll::Stevenson.warn "Deprecation:", "Auto-regeneration can no longer" + " be set from your configuration file(s). Use the"+ " --watch/-w command-line option instead." config.delete('auto') @@ -161,14 +170,14 @@ module Jekyll end if config.has_key? 'server' - Jekyll::Logger.warn "Deprecation:", "The 'server' configuration option" + + Jekyll::Stevenson.warn "Deprecation:", "The 'server' configuration option" + " is no longer accepted. Use the 'jekyll serve'" + " subcommand to serve your site with WEBrick." config.delete('server') end if config.has_key? 'server_port' - Jekyll::Logger.warn "Deprecation:", "The 'server_port' configuration option" + + Jekyll::Stevenson.warn "Deprecation:", "The 'server_port' configuration option" + " has been renamed to 'port'. Please update your config" + " file accordingly." # copy but don't overwrite: @@ -176,6 +185,22 @@ module Jekyll config.delete('server_port') end + if config.has_key?('exclude') && config['exclude'].is_a?(String) + Jekyll::Stevenson.warn "Deprecation:", "The 'exclude' configuration option" + + " must now be specified as an array, but you specified" + + " a string. For now, we've treated the string you provided" + + " as a list of comma-separated values." + config['exclude'] = csv_to_array(config['exclude']) + end + + if config.has_key?('include') && config['include'].is_a?(String) + Jekyll::Stevenson.warn "Deprecation:", "The 'include' configuration option" + + " must now be specified as an array, but you specified" + + " a string. For now, we've treated the string you provided" + + " as a list of comma-separated values." + config['include'] = csv_to_array(config['include']) + end + config end diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb index acdb0be0..fcfac9e9 100644 --- a/lib/jekyll/convertible.rb +++ b/lib/jekyll/convertible.rb @@ -35,7 +35,7 @@ module Jekyll self.data = YAML.safe_load($1) end rescue SyntaxError => e - puts "YAML Exception reading #{File.join(base, name)}: #{e.message}" + puts "YAML Exception reading #{File.join(base, name)}: #{e.message}" rescue Exception => e puts "Error reading file #{File.join(base, name)}: #{e.message}" end @@ -76,11 +76,8 @@ module Jekyll def render_liquid(content, payload, info) Liquid::Template.parse(content).render!(payload, info) rescue Exception => e - Jekyll::Logger.error "Liquid Exception:", "#{e.message} in #{payload[:file]}" - e.backtrace.each do |backtrace| - puts backtrace - end - abort("Build Failed") + Jekyll::Stevenson.error "Liquid Exception:", "#{e.message} in #{payload[:file]}" + raise e end # Recursively render layouts @@ -99,7 +96,7 @@ module Jekyll payload = payload.deep_merge({"content" => self.output, "page" => layout.data}) self.output = self.render_liquid(layout.content, - payload.merge({:file => self.data["layout"]}), + payload.merge({:file => layout.name}), info) if layout = layouts[layout.data["layout"]] diff --git a/lib/jekyll/deprecator.rb b/lib/jekyll/deprecator.rb index 5b88fbf0..bd189e0f 100644 --- a/lib/jekyll/deprecator.rb +++ b/lib/jekyll/deprecator.rb @@ -18,14 +18,14 @@ module Jekyll def self.no_subcommand(args) if args.size > 0 && args.first =~ /^--/ && !%w[--help --version].include?(args.first) - Jekyll::Logger.error "Deprecation:", "Jekyll now uses subcommands instead of just \ + Jekyll::Stevenson.error "Deprecation:", "Jekyll now uses subcommands instead of just \ switches. Run `jekyll help' to find out more." end end def self.deprecation_message(args, deprecated_argument, message) if args.include?(deprecated_argument) - Jekyll::Logger.error "Deprecation:", message + Jekyll::Stevenson.error "Deprecation:", message end end end diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 1886194b..45c123b4 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -99,7 +99,17 @@ module Jekyll def cgi_escape(input) CGI::escape(input) end - + + # URI escape a string. + # + # input - The String to escape. + # + # Examples + # + # uri_escape('foo, bar \\baz?') + # # => "foo,%20bar%20%5Cbaz?" + # + # Returns the escaped String. def uri_escape(input) URI.escape(input) end @@ -146,7 +156,7 @@ module Jekyll when String Time.parse(input) else - Jekyll::Logger.error "Invalid Date:", "'#{input}' is not a valid datetime." + Jekyll::Stevenson.error "Invalid Date:", "'#{input}' is not a valid datetime." exit(1) end end diff --git a/lib/jekyll/generators/pagination.rb b/lib/jekyll/generators/pagination.rb index 0cd934c5..cfcd9c30 100644 --- a/lib/jekyll/generators/pagination.rb +++ b/lib/jekyll/generators/pagination.rb @@ -92,8 +92,9 @@ module Jekyll # Returns the pagination path as a string def self.paginate_path(site_config, num_page) return nil if num_page.nil? || num_page <= 1 - format = File.basename(site_config['paginate_path']) - format.sub(':num', num_page.to_s) + format = site_config['paginate_path'] + format = format.sub(':num', num_page.to_s) + File.basename(format) end # Initialize a new Pager. diff --git a/lib/jekyll/layout.rb b/lib/jekyll/layout.rb index 1db6fe94..f75a4780 100644 --- a/lib/jekyll/layout.rb +++ b/lib/jekyll/layout.rb @@ -5,6 +5,9 @@ module Jekyll # Gets the Site object. attr_reader :site + # Gets the name of this layout. + attr_reader :name + # Gets/Sets the extension of this layout. attr_accessor :ext diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index 9d10a5cb..c478adb5 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -244,29 +244,7 @@ module Jekyll # # Returns an Array of related Posts. def related_posts(posts) - return [] unless posts.size > 1 - - if self.site.lsi - build_index - - related = self.class.lsi.find_related(self.content, 11) - related - [self] - else - (posts - [self])[0..9] - end - end - - def build_index - self.class.lsi ||= begin - puts "Starting the classifier..." - lsi = Classifier::LSI.new(:auto_rebuild => false) - $stdout.print(" Populating LSI... "); $stdout.flush - self.site.posts.each { |x| $stdout.print("."); $stdout.flush; lsi.add_item(x) } - $stdout.print("\n Rebuilding LSI index... ") - lsi.build_index - puts "" - lsi - end + Jekyll::RelatedPosts.new(self).build end # Add any necessary layouts to this post. diff --git a/lib/jekyll/related_posts.rb b/lib/jekyll/related_posts.rb new file mode 100644 index 00000000..8de5dc78 --- /dev/null +++ b/lib/jekyll/related_posts.rb @@ -0,0 +1,58 @@ +module Jekyll + class RelatedPosts + + class << self + attr_accessor :lsi + end + + attr_reader :post, :site + + def initialize(post) + @post = post + @site = post.site + require 'classifier' if site.lsi + end + + def build + return [] unless self.site.posts.size > 1 + + if self.site.lsi + build_index + lsi_related_posts + else + most_recent_posts + end + end + + + def build_index + self.class.lsi ||= begin + lsi = Classifier::LSI.new(:auto_rebuild => false) + display("Populating LSI...") + + self.site.posts.each do |x| + lsi.add_item(x) + end + + display("Rebuilding index...") + lsi.build_index + display("") + lsi + end + end + + def lsi_related_posts + self.class.lsi.find_related(post.content, 11) - [self.post] + end + + def most_recent_posts + (self.site.posts - [self.post])[0..9] + end + + def display(output) + $stdout.print("\n") + $stdout.print(Jekyll::Stevenson.formatted_topic(output)) + $stdout.flush + end + end +end diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 16ccd7e9..e8b65135 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -71,8 +71,6 @@ module Jekyll # # Returns nothing. def setup - require 'classifier' if self.lsi - # Check that the destination dir isn't the source dir or a directory # parent to the source dir. if self.source =~ /^#{self.dest}/ @@ -423,12 +421,12 @@ module Jekyll def relative_permalinks_deprecation_method if config['relative_permalinks'] && !@deprecated_relative_permalinks $stderr.puts # Places newline after "Generating..." - Jekyll::Logger.warn "Deprecation:", "Starting in 1.1, permalinks for pages" + + Jekyll::Stevenson.warn "Deprecation:", "Starting in 1.1, permalinks for pages" + " in subfolders must be relative to the" + " site source directory, not the parent" + " directory. Check http://jekyllrb.com/docs/upgrading/"+ " for more info." - $stderr.print Jekyll::Logger.formatted_topic("") + "..." # for "done." + $stderr.print Jekyll::Stevenson.formatted_topic("") + "..." # for "done." @deprecated_relative_permalinks = true end end diff --git a/lib/jekyll/logger.rb b/lib/jekyll/stevenson.rb similarity index 98% rename from lib/jekyll/logger.rb rename to lib/jekyll/stevenson.rb index ffe1954f..75a6471b 100644 --- a/lib/jekyll/logger.rb +++ b/lib/jekyll/stevenson.rb @@ -1,7 +1,7 @@ require 'logger' module Jekyll - class Logger < Logger + class Stevenson # Public: Print a jekyll message to stdout # # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc. diff --git a/lib/site_template/_layouts/default.html b/lib/site_template/_layouts/default.html index 46ebc109..364e27ee 100644 --- a/lib/site_template/_layouts/default.html +++ b/lib/site_template/_layouts/default.html @@ -21,7 +21,7 @@