Class: Dolt::Git::Commit
- Inherits:
-
Object
- Object
- Dolt::Git::Commit
- Defined in:
- lib/libdolt/git/commit.rb
Class Method Summary collapse
- .commit_end?(line) ⇒ Boolean
- .extract_commit(lines) ⇒ Object
- .extract_commit_message(lines) ⇒ Object
- .extract_commit_summary(lines) ⇒ Object
- .extract_property(hash, name, value) ⇒ Object
- .parse_log(log) ⇒ Object
Class Method Details
.commit_end?(line) ⇒ Boolean
76 77 78 79 |
# File 'lib/libdolt/git/commit.rb', line 76 def self.commit_end?(line) return true unless line line =~ /^commit [a-z0-9]{40}$/ end |
.extract_commit(lines) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/libdolt/git/commit.rb', line 30 def self.extract_commit(lines) commit = { :oid => lines.shift.split(" ")[1] } while (line = lines.shift) && line != "" pieces = line.split(": ") extract_property(commit, pieces[0], pieces[1]) end commit[:summary] = extract_commit_summary(lines) commit[:message] = (lines) commit end |
.extract_commit_message(lines) ⇒ Object
66 67 68 69 70 71 72 73 74 |
# File 'lib/libdolt/git/commit.rb', line 66 def self.(lines) = "" while !lines.first.nil? && !commit_end?(lines.first) << lines.shift end HTMLEscape.entityfy() end |
.extract_commit_summary(lines) ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/libdolt/git/commit.rb', line 58 def self.extract_commit_summary(lines) return "" if commit_end?(lines.first) summary = lines.shift lines.shift if lines.first == "" summary = summary.sub(/^ /, "") HTMLEscape.entityfy(summary) end |
.extract_property(hash, name, value) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/libdolt/git/commit.rb', line 42 def self.extract_property(hash, name, value) key = name.downcase.to_sym case key when :author pieces = value.match(/(.*)\s<(.*)>/) name = HTMLEscape.entityfy(pieces[1]) email = HTMLEscape.entityfy(pieces[2]) value = { :name => name, :email => email } when :date value = Time.parse(value) end hash[key] = value end |
.parse_log(log) ⇒ Object
23 24 25 26 27 28 |
# File 'lib/libdolt/git/commit.rb', line 23 def self.parse_log(log) commits = [] lines = log.split("\n") commits << extract_commit(lines) while lines.length > 0 commits end |