Class: GitHack::CommitLineBuilder
- Inherits:
-
LineBuilder
- Object
- LineBuilder
- GitHack::CommitLineBuilder
- Defined in:
- lib/git-hack/commit_line_builder.rb
Instance Attribute Summary collapse
-
#commit ⇒ Object
Returns the value of attribute commit.
Attributes inherited from LineBuilder
Instance Method Summary collapse
-
#initialize(data, index) ⇒ CommitLineBuilder
constructor
A new instance of CommitLineBuilder.
-
#line_to_commit(line) ⇒ Object
将每行的数据信息转换成Commit的信息.
- #out? ⇒ Boolean
-
#process_line ⇒ Object
重写#process_line.
Methods inherited from LineBuilder
#all_objects, #find_all, #get_next, #in?, #is_over?, #object, #parse, #rest
Constructor Details
#initialize(data, index) ⇒ CommitLineBuilder
Returns a new instance of CommitLineBuilder.
21 22 23 24 25 26 |
# File 'lib/git-hack/commit_line_builder.rb', line 21 def initialize(data,index) super(data,index) @is_message = false @commit = { 'sha'=>nil, 'message' => '', 'parent' => [] } @is_next_commit = false end |
Instance Attribute Details
#commit ⇒ Object
Returns the value of attribute commit.
20 21 22 |
# File 'lib/git-hack/commit_line_builder.rb', line 20 def commit @commit end |
Instance Method Details
#line_to_commit(line) ⇒ Object
将每行的数据信息转换成Commit的信息
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/git-hack/commit_line_builder.rb', line 40 def line_to_commit(line) data = line.split key = data.shift value = data.join(" ") if key == "commit" if @commit['sha'] # key第二次是commit时 设置是否下条信息的标志,见 #out? @is_next_commit = true else @commit['sha'] = value end elsif key == 'parent' @commit[key] << value else @commit[key] = value end end |
#out? ⇒ Boolean
57 58 59 60 61 |
# File 'lib/git-hack/commit_line_builder.rb', line 57 def out? # 如果已经到下一条commit,则为结束标志,并指针并不再移动 @index += 1 unless @is_next_commit return @is_next_commit end |
#process_line ⇒ Object
重写#process_line
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/git-hack/commit_line_builder.rb', line 28 def process_line line = @data[@index].chomp.uncolorize if line == "" # msg信息以上下两个"" 分隔 @is_message = !@is_message elsif @is_message @commit['message'] << line+"\n" else line_to_commit(line) end @object = @commit.to_class(Commit) end |