Skip to content

Commit 9b0a3db

Browse files
committed
Preserve gem sub-bullets in NEWS.md
1 parent 7c75335 commit 9b0a3db

1 file changed

Lines changed: 21 additions & 5 deletions

File tree

tool/update-NEWS-gemlist.rb

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,29 @@
55
prevs = [prev, prev.sub(/\.\d+\z/, '')]
66

77
update = ->(list, type, desc = "updated") do
8-
item = ->(mark = "* ") do
8+
item = ->(mark = "* ", sub_bullets = {}) do
99
"### The following #{type} gem#{list.size == 1 ? ' is' : 's are'} #{desc}.\n\n" +
10-
list.map {|g, v|"#{mark}#{g} #{v}\n"}.join("") + "\n"
10+
list.map {|g, v|
11+
s = "#{mark}#{g} #{v}\n"
12+
s += sub_bullets[g].join("") if sub_bullets[g]
13+
s
14+
}.join("") + "\n"
1115
end
12-
news.sub!(/^(?:\*( +)|#+ *)?The following #{type} gems? (?:are|is) #{desc}\.\n+(?:(?(1) \1)\*( *).*\n)*\n*/) do
13-
item["#{$1&.<< " "}*#{$2 || ' '}"]
14-
end or news.sub!(/^## Stdlib updates(?:\n+The following.*(?:\n+( *\* *).*)*)*\n+\K/) do
16+
news.sub!(/^(?:\*( +)|#+ *)?The following #{type} gems? (?:are|is) #{desc}\.\n+(?:(?:(?(1) \1)\*( *).*\n)(?:[ \t]+\*.*\n)*)*\n*/) do
17+
mark = "#{$1&.dup&.<< " "}*#{$2 || ' '}"
18+
# Parse existing sub-bullets from matched section
19+
sb = {}; cg = nil
20+
$~.to_s.each_line do |l|
21+
if l =~ /^\* ([A-Za-z0-9_\-]+)\s/
22+
cg = $1
23+
elsif cg && l =~ /^\s+\*/
24+
(sb[cg] ||= []) << l
25+
else
26+
cg = nil
27+
end
28+
end
29+
item[mark, sb]
30+
end or news.sub!(/^## Stdlib updates(?:\n+The following.*(?:\n+(?:( *\* *).*|[ \t]+\*.*))*)* *\n+\K/) do
1531
item[$1 || "* "]
1632
end
1733
end

0 commit comments

Comments
 (0)