lib/nanoc3/data_sources/filesystem_unified.rb in nanoc3-3.1.0a2 vs lib/nanoc3/data_sources/filesystem_unified.rb in nanoc3-3.1.0a3
- old
+ new
@@ -12,48 +12,48 @@
# the same base name but with the `.yaml` extension. If such a file is
# found, metadata is read from that file. Alternatively, the content file
# itself can start with a metadata section: it can be stored at the top of
# the file, between `---` (three dashes) separators. For example:
#
- # ---
- # title: "Moo!"
- # ---
- # h1. Hello!
+ # ---
+ # title: "Moo!"
+ # ---
+ # h1. Hello!
#
# The metadata section can be omitted. If the file does not start with
# three or five dashes, the entire file will be considered as content.
#
# The identifier of items and layouts is determined as follows. A file with
# an `index.*` filename, such as `index.txt`, will have the filesystem path
# with the `index.*` part stripped as a identifier. For example:
#
- # foo/bar/index.html → /foo/bar/
+ # foo/bar/index.html → /foo/bar/
#
# In other cases, the identifier is calculated by stripping the extension.
# If the `allow_periods_in_identifiers` attribute in the configuration is
# true, only the last extension will be stripped if the file has multiple
# extensions; if it is false or unset, all extensions will be stripped.
# For example:
#
- # (`allow_periods_in_identifiers` set to true)
- # foo.entry.html → /foo.entry/
+ # (`allow_periods_in_identifiers` set to true)
+ # foo.entry.html → /foo.entry/
+ #
+ # (`allow_periods_in_identifiers` set to false)
+ # foo.html.erb → /foo/
#
- # (`allow_periods_in_identifiers` set to false)
- # foo.html.erb → /foo/
- #
# Note that it is possible for two different, separate files to have the
# same identifier. It is recommended to avoid such situations.
#
# Some more examples:
#
- # content/index.html → /
- # content/foo.html → /foo/
- # content/foo/index.html → /foo/
- # content/foo/bar.html → /foo/bar/
- # content/foo/bar.baz.html → /foo/bar/ OR /foo/bar.baz/
- # content/foo/bar/index.html → /foo/bar/
- # content/foo.bar/index.html → /foo.bar/
+ # content/index.html → /
+ # content/foo.html → /foo/
+ # content/foo/index.html → /foo/
+ # content/foo/bar.html → /foo/bar/
+ # content/foo/bar.baz.html → /foo/bar/ OR /foo/bar.baz/
+ # content/foo/bar/index.html → /foo/bar/
+ # content/foo.bar/index.html → /foo.bar/
#
# The file extension does not determine the filters to run on items; the
# Rules file is used to specify processing instructors for each item.
class FilesystemUnified < Nanoc3::DataSource
@@ -78,11 +78,14 @@
Nanoc3::NotificationCenter.post(:file_created, path)
# Write item
FileUtils.mkdir_p(parent_path)
File.open(path, 'w') do |io|
- io.write(YAML.dump(attributes.stringify_keys) + "\n")
- io.write("---\n")
+ meta = attributes.stringify_keys
+ unless meta == {}
+ io.write(YAML.dump(meta).strip + "\n")
+ io.write("---\n\n")
+ end
io.write(content)
end
end
# See {Nanoc3::DataSources::Filesystem#filename_for}.