add a class `FrontmatterDefaults` for handling of frontmatter defaults
This commit is contained in:
parent
3ccd8dad31
commit
b3fdaa9792
|
@ -31,6 +31,7 @@ require 'jekyll/core_ext'
|
|||
require 'jekyll/stevenson'
|
||||
require 'jekyll/deprecator'
|
||||
require 'jekyll/configuration'
|
||||
require 'jekyll/frontmatter_defaults.rb'
|
||||
require 'jekyll/site'
|
||||
require 'jekyll/convertible'
|
||||
require 'jekyll/url'
|
||||
|
|
|
@ -40,6 +40,8 @@ module Jekyll
|
|||
|
||||
'excerpt_separator' => "\n\n",
|
||||
|
||||
'defaults' => [],
|
||||
|
||||
'maruku' => {
|
||||
'use_tex' => false,
|
||||
'use_divs' => false,
|
||||
|
@ -217,6 +219,5 @@ module Jekyll
|
|||
|
||||
config
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
module Jekyll
|
||||
class Configuration
|
||||
class FrontmatterDefaults
|
||||
def initialize(site)
|
||||
@site = site
|
||||
end
|
||||
|
||||
def find(path, type, setting)
|
||||
value = nil
|
||||
matching_sets(path, type).each do |set|
|
||||
value = set['values'][setting] if set['values'].has_key?(setting)
|
||||
end
|
||||
value
|
||||
end
|
||||
|
||||
def all(path, type)
|
||||
defaults = {}
|
||||
matching_sets(path, type).each do |set|
|
||||
defaults.merge! set['values']
|
||||
end
|
||||
defaults
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def applies?(scope, path, type)
|
||||
(scope['path'].empty? || path.starts_with?(scope['path'])) && (!scope.has_key?('type') || scope['type'] == type.to_s)
|
||||
end
|
||||
|
||||
def valid?(set)
|
||||
set['scope'].is_a?(Hash) && set['scope'].has_key?('path') && set['values'].is_a?(Hash)
|
||||
end
|
||||
|
||||
def matching_sets(path, type)
|
||||
valid_sets.select do |set|
|
||||
applies?(set['scope'], path, type)
|
||||
end
|
||||
end
|
||||
|
||||
def valid_sets
|
||||
sets = @site.config['defaults']
|
||||
return [] unless sets.is_a?(Array)
|
||||
|
||||
sets.select do |set|
|
||||
unless valid?(set)
|
||||
Jekyll.logger.warn "Default:", "An invalid default set was found"
|
||||
end
|
||||
valid?(set)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -369,6 +369,10 @@ module Jekyll
|
|||
end
|
||||
end
|
||||
|
||||
def frontmatter_defaults
|
||||
@frontmatter_defaults ||= Configuration::FrontmatterDefaults.new(self)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def has_yaml_header?(file)
|
||||
|
|
Loading…
Reference in New Issue