lib/nanoc/data_sources/filesystem.rb in nanoc-3.6.7 vs lib/nanoc/data_sources/filesystem.rb in nanoc-3.6.8
- old
+ new
@@ -41,25 +41,25 @@
def layouts
load_objects('layouts', 'layout', Nanoc::Layout)
end
# See {Nanoc::DataSource#create_item}.
- def create_item(content, attributes, identifier, params={})
+ def create_item(content, attributes, identifier, params = {})
create_object('content', content, attributes, identifier, params)
end
# See {Nanoc::DataSource#create_layout}.
- def create_layout(content, attributes, identifier, params={})
+ def create_layout(content, attributes, identifier, params = {})
create_object('layouts', content, attributes, identifier, params)
end
protected
# Creates a new object (item or layout) on disk in dir_name according to
# the given identifier. The file will have its attributes taken from the
# attributes hash argument and its content from the content argument.
- def create_object(dir_name, content, attributes, identifier, params={})
+ def create_object(dir_name, content, attributes, identifier, params = {})
raise NotImplementedError.new(
"#{self.class} does not implement ##{name}"
)
end
@@ -101,15 +101,15 @@
:file => content_filename ? Nanoc::Extra::FileProxy.new(content_filename) : nil
}.merge(meta)
# Get identifier
if meta_filename
- identifier = identifier_for_filename(meta_filename[(dir_name.length+1)..-1])
+ identifier = identifier_for_filename(meta_filename[(dir_name.length + 1)..-1])
elsif content_filename
- identifier = identifier_for_filename(content_filename[(dir_name.length+1)..-1])
+ identifier = identifier_for_filename(content_filename[(dir_name.length + 1)..-1])
else
- raise RuntimeError, "meta_filename and content_filename are both nil"
+ raise 'meta_filename and content_filename are both nil'
end
# Get modification times
meta_mtime = meta_filename ? File.stat(meta_filename).mtime : nil
content_mtime = content_filename ? File.stat(content_filename).mtime : nil
@@ -118,11 +118,11 @@
elsif meta_mtime
mtime = meta_mtime
elsif content_mtime
mtime = content_mtime
else
- raise RuntimeError, "meta_mtime and content_mtime are both nil"
+ raise 'meta_mtime and content_mtime are both nil'
end
# Create layout object
klass.new(
content_or_filename, attributes, identifier,
@@ -141,37 +141,32 @@
# 'content/foo' => [ 'yaml', 'html' ],
# 'content/bar' => [ 'yaml', nil ],
# 'content/qux' => [ nil, 'html' ]
# }
def all_split_files_in(dir_name)
- # Get all good file names
- filenames = self.all_files_in(dir_name)
- filenames.reject! { |fn| fn =~ /(~|\.orig|\.rej|\.bak)$/ }
+ grouped_filenames = all_files_in(dir_name).
+ reject { |fn| fn =~ /(~|\.orig|\.rej|\.bak)$/ }.
+ group_by { |fn| basename_of(fn) }
- # Group by identifier
- grouped_filenames = filenames.group_by { |fn| basename_of(fn) }
-
- # Convert values into metafile/content file extension tuple
grouped_filenames.each_pair do |key, filenames|
# Divide
meta_filenames = filenames.select { |fn| ext_of(fn) == '.yaml' }
content_filenames = filenames.select { |fn| ext_of(fn) != '.yaml' }
# Check number of files per type
if ![ 0, 1 ].include?(meta_filenames.size)
- raise RuntimeError, "Found #{meta_filenames.size} meta files for #{key}; expected 0 or 1"
+ raise "Found #{meta_filenames.size} meta files for #{key}; expected 0 or 1"
end
if ![ 0, 1 ].include?(content_filenames.size)
- raise RuntimeError, "Found #{content_filenames.size} content files for #{key}; expected 0 or 1"
+ raise "Found #{content_filenames.size} content files for #{key}; expected 0 or 1"
end
# Reorder elements and convert to extnames
filenames[0] = meta_filenames[0] ? 'yaml' : nil
- filenames[1] = content_filenames[0] ? ext_of(content_filenames[0])[1..-1] || '': nil
+ filenames[1] = content_filenames[0] ? ext_of(content_filenames[0])[1..-1] || '' : nil
end
- # Done
grouped_filenames
end
# Returns all files in the given directory and directories below it.
def all_files_in(dir_name)
@@ -290,11 +285,18 @@
data.force_encoding(@config[:encoding])
else
original_encoding = data.encoding
end
- data.encode!('UTF-8') rescue raise_encoding_error(filename, original_encoding)
- raise_encoding_error(filename, original_encoding) if !data.valid_encoding?
+ begin
+ data.encode!('UTF-8')
+ rescue
+ raise_encoding_error(filename, original_encoding)
+ end
+
+ if !data.valid_encoding?
+ raise_encoding_error(filename, original_encoding)
+ end
end
# Remove UTF-8 BOM (ugly)
data.gsub!("\xEF\xBB\xBF", '')