Class: JekyllLastCommit::Generator
- Inherits:
-
Jekyll::Generator
- Object
- Jekyll::Generator
- JekyllLastCommit::Generator
- Defined in:
- lib/jekyll-last-commit/generator.rb
Instance Method Summary collapse
- #generate(site) ⇒ Object
- #populate_data(source, output = {}, prepend_path = '') ⇒ Object
- #populate_jekyll(files, prepend_path = '') ⇒ Object
Instance Method Details
#generate(site) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/jekyll-last-commit/generator.rb', line 7 def generate(site) @site = site @repo_man = JekyllLastCommit::RepoMan.new(site.source) @repo_man.discover_repo() @date_format = site.config.dig('jekyll-last-commit', 'date_format') @date_format ||= '%B %d, %Y' @should_fall_back_to_mtime = site.config.dig('jekyll-last-commit', 'should_fall_back_to_mtime') @should_fall_back_to_mtime ||= true @repo_man.discover_commits(site.documents.map {|d| d.relative_path }) populate_jekyll(site.documents) @repo_man.discover_commits(site.pages.map {|p| p.relative_path }) populate_jekyll(site.pages) index_static_files = site.config.dig('jekyll-last-commit', 'index_static_files') index_static_files ||= false if index_static_files @repo_man.discover_commits(site.static_files.map {|sf| '.' + sf.relative_path }) populate_jekyll(site.static_files, '.') end index_data_files = site.config.dig('jekyll-last-commit', 'index_data_files') index_data_files ||= false if index_data_files data_file_extensions = ['.yml', '.yaml', '.json', '.tsv', '.csv'] data_files = [] site.data.keys.each do |data_file| data_file_extensions.each do |data_file_extension| data_file_name = data_file + data_file_extension if File.file?('./_data/' + data_file_name) data_files.append(data_file_name) break end end end data_files_key = site.config.dig('jekyll-last-commit', 'data_files_key') data_files_key ||= 'meta' @repo_man.discover_commits(data_files.map {|df| './_data/' + df }) site.data[data_files_key] = {} populate_data(data_files, site.data[data_files_key], './_data/') end end |
#populate_data(source, output = {}, prepend_path = '') ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/jekyll-last-commit/generator.rb', line 82 def populate_data(source, output = {}, prepend_path = '') source.each do |file| output[file] ||= {} relative_path = prepend_path + file commit = @repo_man.find_commit(relative_path) if commit.nil? if @should_fall_back_to_mtime path_file = Jekyll.sanitized_path(@site.source, relative_path) if File.file?(file) raw_time = Time.at(File.mtime(path_file).to_i) output[file]['last_modified_at'] = raw_time output[file]['last_modified_at_formatted'] = raw_time.strftime(@date_format) end end else raw_time = Time.at(commit['time'].to_i) output[file]['last_commit'] = commit output[file]['last_modified_at'] = raw_time output[file]['last_modified_at_formatted'] = raw_time.strftime(@date_format) end end end |
#populate_jekyll(files, prepend_path = '') ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/jekyll-last-commit/generator.rb', line 57 def populate_jekyll(files, prepend_path = '') files.each do |file| commit = @repo_man.find_commit(prepend_path + file.relative_path) if commit.nil? if @should_fall_back_to_mtime path_file = Jekyll.sanitized_path(@site.source, prepend_path + file.relative_path) if File.file?(path_file) raw_time = Time.at(File.mtime(path_file).to_i) file.data['commit'] = prepend_path + file.relative_path file.data['last_modified_at'] = raw_time file.data['last_modified_at_formatted'] = raw_time.strftime(@date_format) end end else raw_time = Time.at(commit["time"].to_i) file.data['last_commit'] = commit file.data['last_modified_at'] = raw_time file.data['last_modified_at_formatted'] = raw_time.strftime(@date_format) end end end |