Don't look for frontmatter on binary files. Fixes #728

This commit is contained in:
Thomas Reynolds 2013-01-11 16:58:02 -08:00
parent 0bedb36f3f
commit 2e2516b95a
3 changed files with 29 additions and 17 deletions

View file

@ -128,8 +128,11 @@ module Middleman::CoreExtensions
# @return [Array<Thor::CoreExt::HashWithIndifferentAccess, String>] # @return [Array<Thor::CoreExt::HashWithIndifferentAccess, String>]
def frontmatter_and_content(path) def frontmatter_and_content(path)
full_path = File.expand_path(File.join(@app.source_dir, path)) full_path = File.expand_path(File.join(@app.source_dir, path))
content = File.read(full_path)
data = {} data = {}
content = nil
if !::Middleman::Util.binary?(full_path)
content = File.read(full_path)
begin begin
if content =~ /\A.*coding:/ if content =~ /\A.*coding:/
@ -146,6 +149,7 @@ module Middleman::CoreExtensions
rescue => e rescue => e
# Probably a binary file, move on # Probably a binary file, move on
end end
end
[::Middleman::Util.recursively_enhance(data).freeze, content] [::Middleman::Util.recursively_enhance(data).freeze, content]
end end

View file

@ -1,7 +1,5 @@
require "middleman-core/sitemap/extensions/traversal" require "middleman-core/sitemap/extensions/traversal"
require 'win32/file' if File::ALT_SEPARATOR
module Middleman module Middleman
# Sitemap namespace # Sitemap namespace
@ -153,8 +151,7 @@ module Middleman
# #
# @retrun [Boolean] # @retrun [Boolean]
def binary? def binary?
s = (File.read(source_file, File.stat(source_file).blksize) || "").split(//) ::Middleman::Util.binary?(source_file)
((s.size - s.grep(" ".."~").size) / s.size.to_f) > 0.30
end end
end end
end end

View file

@ -10,10 +10,21 @@ require "thor"
# Core Pathname library used for traversal # Core Pathname library used for traversal
require "pathname" require "pathname"
require 'win32/file' if File::ALT_SEPARATOR
module Middleman module Middleman
module Util module Util
# Whether the source file is binary.
#
# @param [String] filename The file to check.
# @return [Boolean]
def self.binary?(filename)
s = (File.read(filename, File.stat(filename).blksize) || "").split(//)
((s.size - s.grep(" ".."~").size) / s.size.to_f) > 0.30
end
# The logger # The logger
# #
# @return [Middleman::Logger] The logger # @return [Middleman::Logger] The logger