28 lines
723 B
Ruby
28 lines
723 B
Ruby
# This is basically the default filesystem_combined datasource
|
|
# But items without a metadata header don't get an error.
|
|
class BetterFilesystemCombined < Nanoc3::DataSources::FilesystemCombined
|
|
identifier :better_combined
|
|
|
|
def parse_file(filename, kind)
|
|
contents = File.read(filename)
|
|
if contents =~ /^(-{5}|-{3})/
|
|
# Split file
|
|
pieces = contents.split(/^(-{5}|-{3})/).compact
|
|
if pieces.size < 4
|
|
raise RuntimeError.new(
|
|
"The file '#{filename}' does not seem to be a nanoc #{kind}"
|
|
)
|
|
end
|
|
|
|
# Parse
|
|
meta = YAML.load(pieces[2]) || {}
|
|
content = pieces[4..-1].join.strip
|
|
|
|
[ meta, content ]
|
|
else
|
|
[{}, contents]
|
|
end
|
|
end
|
|
|
|
end
|
|
|