mirror of
https://github.com/jekyll/jekyll.git
synced 2026-04-28 03:01:03 -04:00
Compare commits
1 Commits
max-cache
...
make-jekyl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0e40c74e8a |
@@ -38,4 +38,5 @@ Gem::Specification.new do |s|
|
||||
s.add_runtime_dependency('jekyll-sass-converter', '~> 1.0')
|
||||
s.add_runtime_dependency('jekyll-watch', '~> 1.1')
|
||||
s.add_runtime_dependency("pathutil", "~> 0.9")
|
||||
s.add_runtime_dependency("parallel", "~> 1.9")
|
||||
end
|
||||
|
||||
@@ -32,6 +32,9 @@ require "kramdown"
|
||||
require "colorator"
|
||||
|
||||
SafeYAML::OPTIONS[:suppress_warnings] = true
|
||||
ENV["PARALLEL_UNITS"] ||= Pathutil.new("/proc/cpuinfo").read
|
||||
.scan(/^processor\s+:\s+\d/m).size.to_s
|
||||
|
||||
|
||||
module Jekyll
|
||||
# internal requires
|
||||
|
||||
@@ -32,11 +32,50 @@ module Jekyll
|
||||
categories_from_path(collection.relative_directory)
|
||||
end
|
||||
|
||||
data.default_proc = proc do |_, key|
|
||||
site.frontmatter_defaults.find(relative_path, collection.label, key)
|
||||
data.default_proc = ddp
|
||||
trigger_hooks(:post_init)
|
||||
end
|
||||
|
||||
def ddp
|
||||
return proc do |_, key|
|
||||
@site.frontmatter_defaults.find(
|
||||
relative_path, @collection.label, key
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def restore_state(site, collection)
|
||||
@site = site
|
||||
@collection = collection
|
||||
@data["excerpt"] = Excerpt.new(
|
||||
self
|
||||
)
|
||||
end
|
||||
|
||||
def marshal_dump
|
||||
@data.default_proc = nil; @data["excerpt"] = nil
|
||||
blacklist = [:@site, :@collection, :@to_liquid]
|
||||
Jekyll.logger.debug "Skipping the marshal of vars #{
|
||||
blacklist
|
||||
}."
|
||||
|
||||
(instance_variables - blacklist).each_with_object({}) do |var, obj|
|
||||
Jekyll.logger.debug "Marshaling the variable #{var} in Document"
|
||||
obj[var] = instance_variable_get(
|
||||
var
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def marshal_load(data)
|
||||
data.each do |k, v|
|
||||
instance_variable_set(
|
||||
k, v
|
||||
)
|
||||
end
|
||||
|
||||
trigger_hooks(:post_init)
|
||||
@data.default_proc = ddp
|
||||
self
|
||||
end
|
||||
|
||||
# Fetch the Document's data.
|
||||
|
||||
@@ -44,12 +44,58 @@ module Jekyll
|
||||
|
||||
process(name)
|
||||
read_yaml(File.join(base, dir), name)
|
||||
data.default_proc = ddp
|
||||
|
||||
data.default_proc = proc do |_, key|
|
||||
site.frontmatter_defaults.find(File.join(dir, name), type, key)
|
||||
Jekyll::Hooks.trigger :pages,
|
||||
:post_init, self
|
||||
end
|
||||
|
||||
def ddp
|
||||
proc do |_, key|
|
||||
@site.frontmatter_defaults.find(
|
||||
File.join(@dir, @name), type, key
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def marshal
|
||||
Marshal.dump(
|
||||
self
|
||||
)
|
||||
end
|
||||
|
||||
def restore_state(site)
|
||||
@site = site
|
||||
end
|
||||
|
||||
def marshal_dump
|
||||
@data.default_proc = nil
|
||||
blacklist = [
|
||||
:@site, :@_renderer
|
||||
]
|
||||
|
||||
Jekyll.logger.debug "Skipping the marshal of vars #{
|
||||
blacklist
|
||||
}."
|
||||
|
||||
(instance_variables - blacklist).each_with_object({}) do |var, obj|
|
||||
Jekyll.logger.debug "Marshaling the variable #{var} in Document"
|
||||
obj[var] = instance_variable_get(
|
||||
var
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def marshal_load(data)
|
||||
data.each do |k, v|
|
||||
instance_variable_set(
|
||||
k, v
|
||||
)
|
||||
end
|
||||
|
||||
Jekyll::Hooks.trigger :pages, :post_init, self
|
||||
@data.
|
||||
default_proc = ddp
|
||||
self
|
||||
end
|
||||
|
||||
# The generated directory into which the page will be placed
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# encoding: UTF-8
|
||||
require "parallel"
|
||||
require "csv"
|
||||
|
||||
module Jekyll
|
||||
@@ -162,14 +163,15 @@ module Jekyll
|
||||
def read
|
||||
reader.read
|
||||
limit_posts!
|
||||
Jekyll::Hooks.trigger :site, :post_read, self
|
||||
Jekyll::Hooks.trigger :site,
|
||||
:post_read, self
|
||||
end
|
||||
|
||||
# Run each of the Generators.
|
||||
#
|
||||
# Returns nothing.
|
||||
def generate
|
||||
generators.each do |generator|
|
||||
Parallel.each(generators, :in_processes => ENV["PARALLEL_UNITS"].to_i) do |generator|
|
||||
start = Time.now
|
||||
generator.generate(self)
|
||||
Jekyll.logger.debug "Generating:",
|
||||
@@ -208,11 +210,17 @@ module Jekyll
|
||||
#
|
||||
# Returns nothing.
|
||||
def write
|
||||
each_site_file do |item|
|
||||
item.write(dest) if regenerator.regenerate?(item)
|
||||
Parallel.each(each_site_file, :in_process => ENV["PARALLEL_UNITS"].to_i) do |item|
|
||||
if regenerator.regenerate?(item)
|
||||
item.write(
|
||||
dest
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
regenerator.write_metadata
|
||||
Jekyll::Hooks.trigger :site, :post_write, self
|
||||
Jekyll::Hooks.trigger :site,
|
||||
:post_write, self
|
||||
end
|
||||
|
||||
def posts
|
||||
@@ -328,6 +336,7 @@ module Jekyll
|
||||
end
|
||||
|
||||
def each_site_file
|
||||
return [pages, static_files, docs_to_write].flatten.to_enum unless block_given?
|
||||
%w(pages static_files docs_to_write).each do |type|
|
||||
send(type).each do |item|
|
||||
yield item
|
||||
@@ -451,23 +460,45 @@ module Jekyll
|
||||
private
|
||||
def render_docs(payload)
|
||||
collections.each do |_, collection|
|
||||
collection.docs.each do |document|
|
||||
collection.docs = Parallel.map(collection.docs, :in_processes => ENV["PARALLEL_UNITS"].to_i) do |document|
|
||||
if regenerator.regenerate?(document)
|
||||
document.output = Jekyll::Renderer.new(self, document, payload).run
|
||||
document.trigger_hooks(:post_render)
|
||||
document.trigger_hooks(
|
||||
:post_render
|
||||
)
|
||||
end
|
||||
|
||||
document
|
||||
end
|
||||
|
||||
collection.docs.map do |doc|
|
||||
doc.restore_state(
|
||||
self, collection
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def render_pages(payload)
|
||||
pages.flatten.each do |page|
|
||||
if regenerator.regenerate?(page)
|
||||
page.output = Jekyll::Renderer.new(self, page, payload).run
|
||||
page.trigger_hooks(:post_render)
|
||||
begin
|
||||
@pages = Parallel.map(pages.flatten, :in_processes => ENV["PARALLEL_UNITS"].to_i) do |page|
|
||||
if regenerator.regenerate?(page)
|
||||
page.output = Jekyll::Renderer.new(self, page, payload).run
|
||||
page.trigger_hooks(
|
||||
:post_render
|
||||
)
|
||||
end
|
||||
|
||||
page
|
||||
end
|
||||
end
|
||||
|
||||
pages.map do |page|
|
||||
page.restore_state(
|
||||
self
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user