Class: Jekyll::Load::Loader

Inherits:
Generator
  • Object
show all
Defined in:
lib/jekyll/load/loader.rb

Instance Method Summary collapse

Instance Method Details

#add_to_index(data_file, data) ⇒ Object



35
36
37
38
39
# File 'lib/jekyll/load/loader.rb', line 35

def add_to_index(data_file, data)
  page = find_corresponding_index data_file
  page.data['items'] = [] if page.data['items'].nil?
  page.data['items'].push data
end

#find_corresponding_index(data_file) ⇒ Object



41
42
43
44
45
46
# File 'lib/jekyll/load/loader.rb', line 41

def find_corresponding_index(data_file)
  path = 'index.md'
  nesting = data_file.match(/_data\/(?<resource>.+)\//)
  path = File.join nesting[1], path unless nesting.nil?
  page = @site.pages.detect { |page| page.path == path }
end

#find_page(data_file) ⇒ Object



30
31
32
33
# File 'lib/jekyll/load/loader.rb', line 30

def find_page(data_file)
  path = data_file.gsub("_data#{File::SEPARATOR}", '').gsub('.yml', '.md')
  @site.pages.detect { |page| page.path == path }
end

#generate(site) ⇒ Object



9
10
11
12
# File 'lib/jekyll/load/loader.rb', line 9

def generate(site)
  @site = site
  Dir.chdir(@site.source) { load_pages }
end

#is_index(data_file) ⇒ Object



48
49
50
# File 'lib/jekyll/load/loader.rb', line 48

def is_index(data_file)
  data_file.end_with? 'index.yml'
end

#load_pagesObject



14
15
16
17
18
19
20
21
# File 'lib/jekyll/load/loader.rb', line 14

def load_pages
  data_files = Dir[File.join('_data', '**', '*.yml')]
  data_files.each do |data_file|
    data = YAML.load_file(data_file)
    data = merge_data data_file, data
    add_to_index data_file, data unless is_index data_file
  end
end

#merge_data(data_file, data) ⇒ Object



23
24
25
26
27
28
# File 'lib/jekyll/load/loader.rb', line 23

def merge_data(data_file, data)
  page = find_page(data_file)
  page.data.merge! data
  page.data['url'] = page.url
  page.data
end