commit
83178031d2
|
@ -196,19 +196,25 @@ module Middleman::Cli
|
||||||
sort_order = %w(.png .jpeg .jpg .gif .bmp .svg .svgz .ico .woff .otf .ttf .eot .js .css)
|
sort_order = %w(.png .jpeg .jpg .gif .bmp .svg .svgz .ico .woff .otf .ttf .eot .js .css)
|
||||||
|
|
||||||
# Pre-request CSS to give Compass a chance to build sprites
|
# Pre-request CSS to give Compass a chance to build sprites
|
||||||
|
puts "== Prerendering CSS" if @app.logging?
|
||||||
|
|
||||||
@app.sitemap.resources.select do |resource|
|
@app.sitemap.resources.select do |resource|
|
||||||
resource.ext == ".css"
|
resource.ext == ".css"
|
||||||
end.each do |resource|
|
end.each do |resource|
|
||||||
Middleman::Cli::Build.shared_rack.get(resource.destination_path.gsub(/\s/, "%20"))
|
Middleman::Cli::Build.shared_rack.get(resource.destination_path.gsub(/\s/, "%20"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
puts "== Checking for Compass sprites" if @app.logging?
|
||||||
|
|
||||||
# Double-check for compass sprites
|
# Double-check for compass sprites
|
||||||
@app.files.reload_path(File.join(@app.source_dir, @app.images_dir))
|
@app.files.find_new_files(File.join(@app.source_dir, @app.images_dir))
|
||||||
|
|
||||||
# Sort paths to be built by the above order. This is primarily so Compass can
|
# Sort paths to be built by the above order. This is primarily so Compass can
|
||||||
# find files in the build folder when it needs to generate sprites for the
|
# find files in the build folder when it needs to generate sprites for the
|
||||||
# css files
|
# css files
|
||||||
|
|
||||||
|
puts "== Building files" if @app.logging?
|
||||||
|
|
||||||
resources = @app.sitemap.resources.sort do |a, b|
|
resources = @app.sitemap.resources.sort do |a, b|
|
||||||
a_idx = sort_order.index(a.ext) || 100
|
a_idx = sort_order.index(a.ext) || 100
|
||||||
b_idx = sort_order.index(b.ext) || 100
|
b_idx = sort_order.index(b.ext) || 100
|
||||||
|
|
|
@ -103,12 +103,14 @@ module Middleman::CoreExtensions::FileWatcher
|
||||||
# @param [String] path The path to reload
|
# @param [String] path The path to reload
|
||||||
# @return [void]
|
# @return [void]
|
||||||
def reload_path(path)
|
def reload_path(path)
|
||||||
subset = self.known_paths.select { |p| p.match(%r{^#{path}}) }
|
relative_path = path.sub("#{self.instance.root}/", "")
|
||||||
|
subset = self.known_paths.select { |p| p.match(%r{^#{relative_path}}) }
|
||||||
|
|
||||||
Find.find(path) do |path|
|
Find.find(path) do |path|
|
||||||
next if File.directory?(path)
|
next if File.directory?(path)
|
||||||
|
next if Middleman::Watcher.ignore_list.any? { |r| path.match(r) }
|
||||||
relative_path = path.sub("#{self.instance.root}/", "")
|
relative_path = path.sub("#{self.instance.root}/", "")
|
||||||
subset.delete(relative_path) if subset.include?(relative_path)
|
subset.delete(relative_path)
|
||||||
self.did_change(relative_path)
|
self.did_change(relative_path)
|
||||||
end if File.exists?(path)
|
end if File.exists?(path)
|
||||||
|
|
||||||
|
@ -116,6 +118,22 @@ module Middleman::CoreExtensions::FileWatcher
|
||||||
self.did_delete(removed_path)
|
self.did_delete(removed_path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Like reload_path, but only triggers events on new files
|
||||||
|
#
|
||||||
|
# @param [String] path The path to reload
|
||||||
|
# @return [void]
|
||||||
|
def find_new_files(path)
|
||||||
|
relative_path = path.sub("#{self.instance.root}/", "")
|
||||||
|
subset = self.known_paths.select { |p| p.match(%r{^#{relative_path}}) }
|
||||||
|
|
||||||
|
Find.find(path) do |file|
|
||||||
|
next if File.directory?(file)
|
||||||
|
next if Middleman::Watcher.ignore_list.any? { |r| path.match(r) }
|
||||||
|
relative_path = file.sub("#{self.instance.root}/", "")
|
||||||
|
self.did_change(relative_path) unless subset.include?(relative_path)
|
||||||
|
end if File.exists?(path)
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
# Notify callbacks for a file given an array of callbacks
|
# Notify callbacks for a file given an array of callbacks
|
||||||
|
|
|
@ -112,10 +112,22 @@ module Middleman::Sitemap
|
||||||
|
|
||||||
# Register a handler to provide metadata on a url path
|
# Register a handler to provide metadata on a url path
|
||||||
# @param [Regexp] matcher
|
# @param [Regexp] matcher
|
||||||
|
# @param [Symbol] origin an indicator of where this metadata came from - only one
|
||||||
|
# block per [matcher, origin] pair may exist.
|
||||||
# @return [Array<Array<Proc, Regexp>>]
|
# @return [Array<Array<Proc, Regexp>>]
|
||||||
def provides_metadata_for_path(matcher=nil, &block)
|
def provides_metadata_for_path(matcher=nil, origin=nil, &block)
|
||||||
@_provides_metadata_for_path ||= []
|
@_provides_metadata_for_path ||= []
|
||||||
@_provides_metadata_for_path << [block, matcher] if block_given?
|
if block_given?
|
||||||
|
if origin
|
||||||
|
existing_provider = @_provides_metadata_for_path.find {|b,m,o| o == origin && m == matcher}
|
||||||
|
end
|
||||||
|
|
||||||
|
if existing_provider
|
||||||
|
existing_provider[0] = block
|
||||||
|
else
|
||||||
|
@_provides_metadata_for_path << [block, matcher, origin]
|
||||||
|
end
|
||||||
|
end
|
||||||
@_provides_metadata_for_path
|
@_provides_metadata_for_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue