Class: DocumentGenerator::Commit

Inherits:
Object
  • Object
show all
Defined in:
lib/document_generator/commit.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_url, git_commit) ⇒ Commit

Returns a new instance of Commit.



5
6
7
8
# File 'lib/document_generator/commit.rb', line 5

def initialize(base_url, git_commit)
  @base_url = base_url
  @git_commit = git_commit
end

Instance Attribute Details

#base_urlObject

Returns the value of attribute base_url.



3
4
5
# File 'lib/document_generator/commit.rb', line 3

def base_url
  @base_url
end

#git_commitObject

Returns the value of attribute git_commit.



3
4
5
# File 'lib/document_generator/commit.rb', line 3

def git_commit
  @git_commit
end

Instance Method Details

#additionalObject



47
48
49
50
51
52
53
54
55
# 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_prefixObject



69
70
71
72
73
74
75
76
# 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_linesObject



57
58
59
# File 'lib/document_generator/commit.rb', line 57

def commit_message_lines
  git_commit.message.split("\n")
end

#createObject



22
23
24
25
26
27
28
29
30
31
32
33
# 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_messageObject



65
66
67
# 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_filesObject



10
11
12
13
14
15
16
# 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

#filenameObject



78
79
80
# File 'lib/document_generator/commit.rb', line 78

def filename
  "#{basename_prefix}.md"
end

#first_line_of_commit_messageObject



61
62
63
# File 'lib/document_generator/commit.rb', line 61

def first_line_of_commit_message
  commit_message_lines.first
end

#headerObject



35
36
37
38
39
40
41
42
43
44
45
# 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


82
83
84
# File 'lib/document_generator/commit.rb', line 82

def link
  "<li><a href='#{basename_prefix}.html'>#{first_line_of_commit_message}</a></li>"
end

#relative_filenameObject



18
19
20
# File 'lib/document_generator/commit.rb', line 18

def relative_filename
  filename
end