Class: IssueBeaver::Models::Merger

Inherits:
Object
  • Object
show all
Defined in:
lib/issue_beaver/models/merger.rb

Instance Method Summary collapse

Constructor Details

#initialize(issues, todos) ⇒ Merger

Returns a new instance of Merger.



7
8
9
10
# File 'lib/issue_beaver/models/merger.rb', line 7

def initialize(issues, todos)
  @issues = issues
  @matcher = Matcher.new(@issues, todos)
end

Instance Method Details

#addedObject



13
14
15
# File 'lib/issue_beaver/models/merger.rb', line 13

def added
  @added ||= merged_issues.select(&:new?)
end

#changedObject



23
24
25
# File 'lib/issue_beaver/models/merger.rb', line 23

def changed
  @changed ||= merged_issues.select{|e| e.must_update? || e.new? }
end

#merged_issuesObject

TODO: Detect removed TODO comments and close Issue on Github Can probably be done by looking up the git history of a file.



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/issue_beaver/models/merger.rb', line 31

def merged_issues
  @merged_issues ||=
  @matcher.matches.map do |todo, issue|
    if issue
      if todo.updated_at > issue.updated_at
        issue.update_attributes(todo.attributes)
      end
    else
      issue = todo
    end
    issue
  end
end

#modifiedObject



18
19
20
# File 'lib/issue_beaver/models/merger.rb', line 18

def modified
  @modified ||= merged_issues.select(&:must_update?)
end