Autoload yaml files under _data directory

The jekyll engine will autoload all yaml files(ends with .yml or .yaml)
under _data. If there's a file members.yml under the directory, then user
can access contents of the file through site.members.
This commit is contained in:
liufengyun
2013-10-01 11:18:31 +08:00
parent 92907c9545
commit 760cbc7f91
12 changed files with 201 additions and 2 deletions

View File

@@ -0,0 +1,2 @@
- java
- ruby

View File

@@ -0,0 +1,7 @@
- name: Jack
age: 27
blog: http://example.com/jack
- name: John
age: 32
blog: http://example.com/john

View File

@@ -0,0 +1 @@
../products.yml

4
test/source/products.yml Normal file
View File

@@ -0,0 +1,4 @@
- name: sugar
price: 5.3
- name: salt
price: 2.5

View File

@@ -0,0 +1 @@
../_data

View File

@@ -335,5 +335,62 @@ class TestSite < Test::Unit::TestCase
end
end
context 'data directory' do
should 'auto load yaml files' do
site = Site.new(Jekyll.configuration)
site.process
file_content = YAML.safe_load_file(File.join(source_dir, '_data', 'members.yaml'))
assert_equal site.data['members'], file_content
assert_equal site.site_payload['site']['data']['members'], file_content
end
should 'auto load yml files' do
site = Site.new(Jekyll.configuration)
site.process
file_content = YAML.safe_load_file(File.join(source_dir, '_data', 'languages.yml'))
assert_equal site.data['languages'], file_content
assert_equal site.site_payload['site']['data']['languages'], file_content
end
should "load symlink files in unsafe mode" do
site = Site.new(Jekyll.configuration.merge({'safe' => false}))
site.process
file_content = YAML.safe_load_file(File.join(source_dir, '_data', 'products.yml'))
assert_equal site.data['products'], file_content
assert_equal site.site_payload['site']['data']['products'], file_content
end
should "not load symlink files in safe mode" do
site = Site.new(Jekyll.configuration.merge({'safe' => true}))
site.process
assert_nil site.data['products']
assert_nil site.site_payload['site']['data']['products']
end
should "load symlink directory in unsafe mode" do
site = Site.new(Jekyll.configuration.merge({'safe' => false, 'data_source' => File.join('symlink-test', '_data')}))
site.process
assert_not_nil site.data['products']
assert_not_nil site.data['languages']
assert_not_nil site.data['members']
end
should "not load symlink directory in safe mode" do
site = Site.new(Jekyll.configuration.merge({'safe' => true, 'data_source' => File.join('symlink-test', '_data')}))
site.process
assert_nil site.data['products']
assert_nil site.data['languages']
assert_nil site.data['members']
end
end
end
end