Add target config setting and front matter variables so one could create multiple outputs from a single site codebase with various target site included files
This commit is contained in:
parent
40ac06ed3e
commit
176fd9425c
|
@ -185,7 +185,8 @@ module Jekyll
|
|||
#
|
||||
# Returns true if the 'write' metadata is true, false otherwise.
|
||||
def write?
|
||||
!!metadata.fetch("output", false)
|
||||
!!metadata.fetch("output", false) &&
|
||||
(site.target == metadata.fetch("target", site.target))
|
||||
end
|
||||
|
||||
# The URL template to render collection's documents at.
|
||||
|
|
|
@ -30,6 +30,7 @@ module Jekyll
|
|||
"limit_posts" => 0,
|
||||
"future" => false,
|
||||
"unpublished" => false,
|
||||
"target" => "default",
|
||||
|
||||
# Plugins
|
||||
"whitelist" => [],
|
||||
|
|
|
@ -348,17 +348,20 @@ module Jekyll
|
|||
end
|
||||
|
||||
# Determine whether this document should be written.
|
||||
# Based on the Collection to which it belongs.
|
||||
# Based on the Collection to which it belongs
|
||||
# and site and document target.
|
||||
#
|
||||
# True if the document has a collection and if that collection's #write?
|
||||
# method returns true, and if the site's Publisher will publish the document.
|
||||
# method returns true, and if the site's Publisher will publish the document,
|
||||
# and if the document's target matches the site target or is undefined.
|
||||
# False otherwise.
|
||||
#
|
||||
# rubocop:disable Naming/MemoizedInstanceVariableName
|
||||
def write?
|
||||
return @write_p if defined?(@write_p)
|
||||
|
||||
@write_p = collection&.write? && site.publisher.publish?(self)
|
||||
@write_p = collection&.write? && site.publisher.publish?(self) &&
|
||||
(site.target == data.fetch("target", site.target))
|
||||
end
|
||||
# rubocop:enable Naming/MemoizedInstanceVariableName
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ module Jekyll
|
|||
private delegate_method_as :data, :fallback_data
|
||||
|
||||
delegate_methods :id, :output, :content, :to_s, :relative_path, :url, :date
|
||||
data_delegators "title", "categories", "tags"
|
||||
data_delegators "title", "categories", "tags", :target
|
||||
|
||||
def collection
|
||||
@obj.collection.label
|
||||
|
|
|
@ -180,7 +180,7 @@ module Jekyll
|
|||
end
|
||||
|
||||
def write?
|
||||
true
|
||||
site.config["target"] == data.fetch("target", site.config["target"])
|
||||
end
|
||||
|
||||
def excerpt_separator
|
||||
|
|
|
@ -6,7 +6,7 @@ module Jekyll
|
|||
:file_read_opts, :future, :gems, :generators, :highlighter,
|
||||
:include, :inclusions, :keep_files, :layouts, :limit_posts,
|
||||
:lsi, :pages, :permalink_style, :plugin_manager, :plugins,
|
||||
:reader, :safe, :show_drafts, :static_files, :theme, :time,
|
||||
:reader, :safe, :target, :show_drafts, :static_files, :theme, :time,
|
||||
:unpublished
|
||||
|
||||
attr_reader :cache_dir, :config, :dest, :filter_cache, :includes_load_paths,
|
||||
|
@ -47,7 +47,7 @@ module Jekyll
|
|||
def config=(config)
|
||||
@config = config.clone
|
||||
|
||||
%w(safe lsi highlighter baseurl exclude include future unpublished
|
||||
%w(safe lsi highlighter baseurl exclude include future unpublished target
|
||||
show_drafts limit_posts keep_files).each do |opt|
|
||||
send(:"#{opt}=", config[opt])
|
||||
end
|
||||
|
@ -360,7 +360,7 @@ module Jekyll
|
|||
end
|
||||
|
||||
def each_site_file
|
||||
pages.each { |page| yield page }
|
||||
pages.each { |page| yield (page) if page.write? }
|
||||
static_files.each { |file| yield(file) if file.write? }
|
||||
collections.each_value { |coll| coll.docs.each { |doc| yield(doc) if doc.write? } }
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue