From cff8f2994ceb727e465a6b2425625af89a63ef93 Mon Sep 17 00:00:00 2001 From: Anatoliy Yastreb Date: Sat, 1 Oct 2016 13:09:50 +0100 Subject: [PATCH 1/2] Fix loading data from subdir with a period in name #5429 --- lib/jekyll/readers/data_reader.rb | 4 ++-- test/source/_data/categories.01/dairy.yaml | 6 ++++++ test/test_site.rb | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 test/source/_data/categories.01/dairy.yaml diff --git a/lib/jekyll/readers/data_reader.rb b/lib/jekyll/readers/data_reader.rb index 4c6495fd..20474011 100644 --- a/lib/jekyll/readers/data_reader.rb +++ b/lib/jekyll/readers/data_reader.rb @@ -37,10 +37,10 @@ module Jekyll path = @site.in_source_dir(dir, entry) next if @entry_filter.symlink?(path) - key = sanitize_filename(File.basename(entry, ".*")) if File.directory?(path) - read_data_to(path, data[key] = {}) + read_data_to(path, data[entry] = {}) else + key = sanitize_filename(File.basename(entry, ".*")) data[key] = read_data_file(path) end end diff --git a/test/source/_data/categories.01/dairy.yaml b/test/source/_data/categories.01/dairy.yaml new file mode 100644 index 00000000..30a09ba3 --- /dev/null +++ b/test/source/_data/categories.01/dairy.yaml @@ -0,0 +1,6 @@ +name: Dairy +products: +- name: cheese + price: 5.5 +- name: milk + price: 2.75 diff --git a/test/test_site.rb b/test/test_site.rb index 1f0d30a1..5cd20b64 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -438,6 +438,21 @@ class TestSite < JekyllUnitTest ) end + should "auto load yaml files in subdirectory with a period in the name" do + site = Site.new(site_configuration) + site.process + + file_content = SafeYAML.load_file(File.join( + source_dir, "_data", "categories.01", "dairy.yaml" + )) + + assert_equal site.data["categories.01"]["dairy"], file_content + assert_equal( + site.site_payload["site"]["data"]["categories.01"]["dairy"], + file_content + ) + end + should "load symlink files in unsafe mode" do site = Site.new(site_configuration("safe" => false)) site.process From e27a65d9e3ef674592e4584093f3445d2e0d8d37 Mon Sep 17 00:00:00 2001 From: Anatoliy Yastreb Date: Tue, 4 Oct 2016 19:39:41 +0100 Subject: [PATCH 2/2] Sanitize directory name as a key --- lib/jekyll/readers/data_reader.rb | 2 +- test/test_site.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/jekyll/readers/data_reader.rb b/lib/jekyll/readers/data_reader.rb index 20474011..370a6893 100644 --- a/lib/jekyll/readers/data_reader.rb +++ b/lib/jekyll/readers/data_reader.rb @@ -38,7 +38,7 @@ module Jekyll next if @entry_filter.symlink?(path) if File.directory?(path) - read_data_to(path, data[entry] = {}) + read_data_to(path, data[sanitize_filename(entry)] = {}) else key = sanitize_filename(File.basename(entry, ".*")) data[key] = read_data_file(path) diff --git a/test/test_site.rb b/test/test_site.rb index 5cd20b64..4f527281 100644 --- a/test/test_site.rb +++ b/test/test_site.rb @@ -446,9 +446,9 @@ class TestSite < JekyllUnitTest source_dir, "_data", "categories.01", "dairy.yaml" )) - assert_equal site.data["categories.01"]["dairy"], file_content + assert_equal site.data["categories01"]["dairy"], file_content assert_equal( - site.site_payload["site"]["data"]["categories.01"]["dairy"], + site.site_payload["site"]["data"]["categories01"]["dairy"], file_content ) end