implement #filter_excluded_tags_regex with regex exclude_tags

This commit is contained in:
Adam 2016-03-24 11:59:20 +00:00
parent 1bae4ea204
commit dd149d7ad9
2 changed files with 29 additions and 4 deletions

View File

@ -131,9 +131,13 @@ module GitHubChangelogGenerator
# @param [Array] all_tags all tags
# @return [Array] filtered tags according :exclude_tags option
def filter_excluded_tags(all_tags)
return all_tags unless @options[:exclude_tags]
apply_exclude_tags(all_tags)
if @options[:exclude_tags]
apply_exclude_tags(all_tags)
elsif @options[:exclude_tags_regex]
apply_exclude_tags_regex(all_tags)
else
all_tags
end
end
private
@ -146,9 +150,20 @@ module GitHubChangelogGenerator
end
end
def apply_exclude_tags_regex(all_tags)
filter_tags_with_regex(all_tags)
end
def filter_tags_with_regex(all_tags)
warn_if_nonmatching_regex(all_tags)
all_tags.reject { |tag| @options[:exclude_tags] =~ tag.name }
if @options[:exclude_tags]
all_tags.reject { |tag| @options[:exclude_tags] =~ tag.name }
elsif @options[:exclude_tags_regex]
regex = Regexp.new(@options[:exclude_tags_regex])
all_tags.reject { |tag| regex =~ tag.name }
end
end
def filter_exact_tags(all_tags)

View File

@ -73,6 +73,16 @@ describe GitHubChangelogGenerator::Generator do
end
end
describe "#filter_excluded_tags_regex" do
subject { generator.filter_excluded_tags(tags_mash_from_strings(%w(v1.2.3+12 v1.2.3))) }
context "with regex exclude_tags" do
let(:generator) { GitHubChangelogGenerator::Generator.new(exclude_tags_regex: '.*\+\d{1,}') }
it { is_expected.to be_a Array }
it { is_expected.to match_array(tags_mash_from_strings(%w(v1.2.3))) }
end
end
describe "#filter_excluded_tags" do
subject { generator.filter_excluded_tags(tags_mash_from_strings(%w(1 2 3))) }