class DocumentGenerator::Commit

Attributes

base_url[RW]
git_commit[RW]

Public Class Methods

new(base_url, git_commit) click to toggle source
# File lib/document_generator/commit.rb, line 5
def initialize(base_url, git_commit)
  @base_url = base_url
  @git_commit = git_commit
end

Public Instance Methods

additional() click to toggle source
# File lib/document_generator/commit.rb, line 47
    def additional
      <<-ADDITIONAL

### Additional Resources

* [Changes in this step in `diff` format](#{URI.join(base_url, 'commit/', git_commit.sha)})

ADDITIONAL
    end
basename_prefix() click to toggle source
# File lib/document_generator/commit.rb, line 69
def basename_prefix
  message = first_line_of_commit_message
  message = message.split.join('-')
  message.gsub!(%r{[^\w-]}, '')
  message.downcase!
  message.tr!('_', '-')
  message
end
commit_message_lines() click to toggle source
# File lib/document_generator/commit.rb, line 57
def commit_message_lines
  git_commit.message.split("\n")
end
create() click to toggle source
# File lib/document_generator/commit.rb, line 22
def create
  File.open(relative_filename, 'w') do |writer|
    writer.write(header)
    writer.write(details_of_commit_message) if details_of_commit_message

    diff_files.each do |diff_file|
      writer.write(diff_file.content)
    end

    writer.write(additional)
  end
end
details_of_commit_message() click to toggle source
# File lib/document_generator/commit.rb, line 65
def details_of_commit_message
  commit_message_lines[1..-1].join("\n") if commit_message_lines.length > 1
end
diff_files() click to toggle source
# File lib/document_generator/commit.rb, line 10
def diff_files
  return [] unless git_commit.parent

  git_commit.parent.diff(git_commit).map do |git_diff_file|
    DiffFile.new(git_diff_file)
  end
end
filename() click to toggle source
# File lib/document_generator/commit.rb, line 78
def filename
  "#{basename_prefix}.md"
end
first_line_of_commit_message() click to toggle source
# File lib/document_generator/commit.rb, line 61
def first_line_of_commit_message
  commit_message_lines.first
end
header() click to toggle source
# File lib/document_generator/commit.rb, line 35
    def header
      <<-HEADER
---
layout: default
title: #{first_line_of_commit_message}
---

<h1 id="main">#{first_line_of_commit_message}</h1>

HEADER
    end
relative_filename() click to toggle source
# File lib/document_generator/commit.rb, line 18
def relative_filename
  filename
end