refacktoring. move separation logic in funciton

This commit is contained in:
Petr Korolev
2015-05-22 13:34:01 +03:00
parent 3fc3e3e143
commit 944adc92cd
2 changed files with 49 additions and 35 deletions
+40 -26
View File
@@ -161,12 +161,15 @@ module GitHubChangelogGenerator
# @param [Array] issues to filter
# @return [Array] filtered array of issues
def include_issues_by_labels(issues)
filtered_issues = @options[:include_labels].nil? ? issues : issues.select { |issue| (issue.labels.map(&:name) & @options[:include_labels]).any? }
filtered_issues = @options[:include_labels].nil? ? issues : issues.select do |issue|
labels = issue.labels.map(&:name) & @options[:include_labels]
(labels).any?
end
if @options[:add_issues_wo_labels]
issues_wo_labels = issues.select { |issue|
issues_wo_labels = issues.select do |issue|
!issue.labels.map(&:name).any?
}
end
filtered_issues |= issues_wo_labels
end
filtered_issues
@@ -178,7 +181,8 @@ module GitHubChangelogGenerator
def exclude_issues_by_labels(issues)
unless @options[:exclude_labels].nil?
issues = issues.select { |issue|
!(issue.labels.map(&:name) & @options[:exclude_labels]).any?
var = issue.labels.map(&:name) & @options[:exclude_labels]
!(var).any?
}
end
issues
@@ -405,28 +409,7 @@ module GitHubChangelogGenerator
if @options[:issues]
# Generate issues:
issues_a = []
enhancement_a = []
bugs_a = []
issues.each { |dict|
added = false
dict.labels.each { |label|
if label.name == "bug"
bugs_a.push dict
added = true
next
end
if label.name == "enhancement"
enhancement_a.push dict
added = true
next
end
}
unless added
issues_a.push dict
end
}
bugs_a, enhancement_a, issues_a = parse_by_sections(issues)
log += generate_sub_section(enhancement_a, @options[:enhancement_prefix])
log += generate_sub_section(bugs_a, @options[:bug_prefix])
@@ -441,6 +424,37 @@ module GitHubChangelogGenerator
log
end
# This method sort issues by types
# (bugs, features, or just closed issues) by labels
#
# @param [Array] issues
# @return [Array] tuple of filtered arrays: (Bugs, Enhancements Issues)
def parse_by_sections(issues)
issues_a = []
enhancement_a = []
bugs_a = []
issues.each { |dict|
added = false
dict.labels.each { |label|
if label.name == "bug"
bugs_a.push dict
added = true
next
end
if label.name == "enhancement"
enhancement_a.push dict
added = true
next
end
}
unless added
issues_a.push dict
end
}
[bugs_a, enhancement_a, issues_a]
end
# @param [Array] issues List of issues on sub-section
# @param [String] prefix Nae of sub-section
# @return [String] Generate ready-to-go sub-section