diff --git a/lib/jekyll/drops/static_file_drop.rb b/lib/jekyll/drops/static_file_drop.rb new file mode 100644 index 00000000..e0af2f09 --- /dev/null +++ b/lib/jekyll/drops/static_file_drop.rb @@ -0,0 +1,11 @@ +module Jekyll + module Drops + class StaticFileDrop < Drop + extend Forwardable + def_delegators :@obj, :name, :extname, :modified_time, :basename + def_delegator :@obj, :relative_path, :path + def_delegator :@obj, :data, :fallback_data + def_delegator :@obj, :type, :collection + end + end +end diff --git a/lib/jekyll/static_file.rb b/lib/jekyll/static_file.rb index 53b945d4..beea9ddf 100644 --- a/lib/jekyll/static_file.rb +++ b/lib/jekyll/static_file.rb @@ -28,6 +28,10 @@ module Jekyll @collection = collection @relative_path = File.join(*[@dir, @name].compact) @extname = File.extname(@name) + + data.default_proc = proc do |_, key| + site.frontmatter_defaults.find(relative_path, type, key) + end end # rubocop: enable ParameterLists @@ -96,13 +100,15 @@ module Jekyll end def to_liquid - { - "basename" => File.basename(name, extname), - "name" => name, - "extname" => extname, - "modified_time" => modified_time, - "path" => File.join("", relative_path), - } + @to_liquid ||= Drops::StaticFileDrop.new(self) + end + + def data + @data ||= {} + end + + def basename + File.basename(name, extname) end def placeholders diff --git a/test/test_static_file.rb b/test/test_static_file.rb index 114885db..b2299ae2 100644 --- a/test/test_static_file.rb +++ b/test/test_static_file.rb @@ -148,8 +148,9 @@ class TestStaticFile < JekyllUnitTest "extname" => ".txt", "modified_time" => @static_file.modified_time, "path" => "/static_file.txt", + "collection" => nil } - assert_equal expected, @static_file.to_liquid + assert_equal expected, @static_file.to_liquid.to_h end end end