Skip to content

Commit

Permalink
Improve VCS::GIT#format_changelog addessing [ci skip]
Browse files Browse the repository at this point in the history
  • Loading branch information
nobu committed Sep 23, 2023
1 parent 1da9729 commit d80002c
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions tool/lib/vcs.rb
Expand Up @@ -698,15 +698,22 @@ def format_changelog(path, arg, base_url = nil)
fix = $1
s = s.lines
fix.each_line do |x|
next unless x.sub!(/^(\s+)(?:(\d+)|\$(?:-\d+)?)/, '')
b = ($2&.to_i || (s.size - 1 + $3.to_i))
sp = $1
if x.sub!(/^,(?:(\d+)|\$(?:-\d+)?)/, '')
range = b..($1&.to_i || (s.size - 1 + $2.to_i))
else
range = b..b
end
case x
when %r[^ +(\d+)s([#{LOG_FIX_REGEXP_SEPARATORS}])(.+)\2(.*)\2]o
n = $1.to_i
wrong = $3
correct = $4
begin
when %r[^s([#{LOG_FIX_REGEXP_SEPARATORS}])(.+)\1(.*)\1]o
wrong = $2
correct = $3
range.each do |n|
s[n][wrong] = correct
rescue IndexError
message = ["format_changelog failed to replace #{wrong.dump} with #{correct.dump} at #$1\n"]
message = ["format_changelog failed to replace #{wrong.dump} with #{correct.dump} at #{n}\n"]
from = [1, n-2].max
to = [s.size-1, n+2].min
s.each_with_index do |e, i|
Expand All @@ -716,12 +723,13 @@ def format_changelog(path, arg, base_url = nil)
end
raise message.join('')
end
when %r[^( +)(\d+)i([#{LOG_FIX_REGEXP_SEPARATORS}])(.*)\3]o
s[$2.to_i, 0] = "#{$1}#{$4}\n"
when %r[^ +(\d+)(?:,(\d+))?d]
n = $1.to_i
e = $2
s[n..(e ? e.to_i : n)] = []
when %r[^i([#{LOG_FIX_REGEXP_SEPARATORS}])(.*)\1]o
insert = "#{sp}#{$2}\n"
range.reverse_each do |n|
s[n, 0] = insert
end
when %r[^d]
s[range] = []
end
end
s = s.join('')
Expand Down

0 comments on commit d80002c

Please sign in to comment.