mirror of
https://github.com/jekyll/jekyll.git
synced 2026-04-28 03:01:03 -04:00
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:
2
test/source/_data/languages.yml
Normal file
2
test/source/_data/languages.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
- java
|
||||
- ruby
|
||||
7
test/source/_data/members.yaml
Normal file
7
test/source/_data/members.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
- name: Jack
|
||||
age: 27
|
||||
blog: http://example.com/jack
|
||||
|
||||
- name: John
|
||||
age: 32
|
||||
blog: http://example.com/john
|
||||
1
test/source/_data/products.yml
Symbolic link
1
test/source/_data/products.yml
Symbolic link
@@ -0,0 +1 @@
|
||||
../products.yml
|
||||
4
test/source/products.yml
Normal file
4
test/source/products.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
- name: sugar
|
||||
price: 5.3
|
||||
- name: salt
|
||||
price: 2.5
|
||||
1
test/source/symlink-test/_data
Symbolic link
1
test/source/symlink-test/_data
Symbolic link
@@ -0,0 +1 @@
|
||||
../_data
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user