Class: NextcloudReleaseAgent::ChangelogRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/nextcloud_release_agent/changelog_renderer.rb

Instance Method Summary collapse

Constructor Details

#initialize(repository_link) ⇒ ChangelogRenderer

Returns a new instance of ChangelogRenderer.



3
4
5
# File 'lib/nextcloud_release_agent/changelog_renderer.rb', line 3

def initialize(repository_link)
  @repository_link = repository_link&.sub(%r{/$}, "")
end

Instance Method Details

#render_document(data, entries) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/nextcloud_release_agent/changelog_renderer.rb', line 7

def render_document(data, entries)
  preamble = data["markdown_preamble"]
  document_lines = []
  if preamble && !preamble.empty?
    document_lines << preamble.rstrip
  end

  rendered_entries = entries.map { |entry| render_entry(entry) }
  entry_separator = "\n\n\n"

  if document_lines.empty?
    rendered_entries.join(entry_separator) + "\n"
  else
    document_lines.join("\n") + "\n\n" + rendered_entries.join(entry_separator) + "\n"
  end
end

#render_entry(entry) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/nextcloud_release_agent/changelog_renderer.rb', line 24

def render_entry(entry)
  lines = []
  lines << "## #{entry.fetch("version")} - #{entry.fetch("release_date")}"

  notes = entry["notes"]
  if notes && !notes.empty?
    lines << ""
    lines.concat(notes.split("\n"))
  end

  entry.fetch("sections", []).each do |section|
    lines << "" unless lines.last == ""
    lines << "### #{section.fetch("name")}"
    section.fetch("items", []).each do |item|
      lines << "- #{format_item(item)}"
    end
  end

  lines.join("\n")
end