diff options
Diffstat (limited to 'tool/update-NEWS-refs.rb')
-rw-r--r-- | tool/update-NEWS-refs.rb | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/tool/update-NEWS-refs.rb b/tool/update-NEWS-refs.rb index 5076c6ec0a..2b19f0fdaa 100644 --- a/tool/update-NEWS-refs.rb +++ b/tool/update-NEWS-refs.rb @@ -4,8 +4,9 @@ orig_src = File.read(File.join(__dir__, "../NEWS.md")) lines = orig_src.lines(chomp: true) links = {} -while lines.last =~ %r{\A\[(.*?)\]:\s+(?:.*)\z} - links[$1] = lines.pop +while lines.last =~ %r{\A\[(.*?)\]:\s+(.*)\z} + links[$1] = $2 + lines.pop end if links.empty? || lines.last != "" @@ -14,20 +15,17 @@ end labels = links.keys.select {|k| !(k.start_with?("Feature") || k.start_with?("Bug"))} new_src = lines.join("\n").gsub(/\[?\[((?:Feature|Bug)\s+#(\d+))\]\]?/) do - links[$1] ||= "[#$1]: ".ljust(18) + "https://bugs.ruby-lang.org/issues/#$2" + links[$1] ||= "https://bugs.ruby-lang.org/issues/#$2" "[[#$1]]" end.gsub(/\[\[#{Regexp.union(labels)}\]\]?/) do "[#$1]" end.chomp + "\n\n" +label_width = links.max_by {|k, _| k.size}.first.size + 4 redmine_links, non_redmine_links = links.partition {|k,| k =~ /\A(Feature|Bug)\s+#\d+\z/ } -redmine_links.sort_by {|k,| k[/\d+/].to_i }.each do |_k, v| - new_src << v << "\n" -end - -non_redmine_links.reverse_each do |_k, v| - new_src << v << "\n" +(redmine_links.sort_by {|k,| k[/\d+/].to_i } + non_redmine_links.reverse).each do |k, v| + new_src << "[#{k}]:".ljust(label_width) << v << "\n" end if orig_src != new_src |