lib/nanoc/data_sources/filesystem.rb in nanoc-3.8.0 vs lib/nanoc/data_sources/filesystem.rb in nanoc-4.0.0a1
- old
+ new
@@ -1,20 +1,12 @@
# encoding: utf-8
module Nanoc::DataSources
# Provides functionality common across all filesystem data sources.
+ #
+ # @api private
module Filesystem
- # The VCS that will be called when adding, deleting and moving files. If
- # no VCS has been set, or if the VCS has been set to `nil`, a dummy VCS
- # will be returned.
- #
- # @return [Nanoc::Extra::VCS, nil] The VCS that will be used.
- def vcs
- @vcs ||= Nanoc::Extra::VCSes::Dummy.new
- end
- attr_writer :vcs
-
# See {Nanoc::DataSource#up}.
def up
end
# See {Nanoc::DataSource#down}.
@@ -27,39 +19,20 @@
def layouts_dir_name
config.fetch(:layouts_dir, 'layouts')
end
- # See {Nanoc::DataSource#setup}.
- def setup
- # Create directories
- [content_dir_name, layouts_dir_name].each do |dir|
- FileUtils.mkdir_p(dir)
- vcs.add(dir)
- end
- end
-
# See {Nanoc::DataSource#items}.
def items
- load_objects(content_dir_name, 'item', Nanoc::Item)
+ load_objects(content_dir_name, 'item', Nanoc::Int::Item)
end
# See {Nanoc::DataSource#layouts}.
def layouts
- load_objects(layouts_dir_name, 'layout', Nanoc::Layout)
+ load_objects(layouts_dir_name, 'layout', Nanoc::Int::Layout)
end
- # See {Nanoc::DataSource#create_item}.
- def create_item(content, attributes, identifier, params = {})
- create_object(content_dir_name, content, attributes, identifier, params)
- end
-
- # See {Nanoc::DataSource#create_layout}.
- def create_layout(content, attributes, identifier, params = {})
- create_object(layouts_dir_name, 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.
@@ -86,14 +59,14 @@
meta_filename = filename_for(base_filename, meta_ext)
content_filename = filename_for(base_filename, content_ext)
# Read content and metadata
is_binary = content_filename && !@site.config[:text_extensions].include?(File.extname(content_filename)[1..-1])
- if is_binary && klass == Nanoc::Item
+ if is_binary && klass == Nanoc::Int::Item
meta = (meta_filename && YAML.load_file(meta_filename)) || {}
content_or_filename = content_filename
- elsif is_binary && klass == Nanoc::Layout
+ elsif is_binary && klass == Nanoc::Int::Layout
raise "The layout file '#{content_filename}' is a binary file, but layouts can only be textual"
else
meta, content_or_filename = parse(content_filename, meta_filename, kind)
end
@@ -101,13 +74,9 @@
attributes = {
filename: content_filename,
content_filename: content_filename,
meta_filename: meta_filename,
extension: content_filename ? ext_of(content_filename)[1..-1] : nil,
- # WARNING :file is deprecated; please create a File object manually
- # using the :content_filename or :meta_filename attributes.
- # TODO: [in nanoc 4.0] remove me
- 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])