Class: NextcloudReleaseAgent::ChangelogRenderer
- Inherits:
-
Object
- Object
- NextcloudReleaseAgent::ChangelogRenderer
- Defined in:
- lib/nextcloud_release_agent/changelog_renderer.rb
Instance Method Summary collapse
-
#initialize(repository_link) ⇒ ChangelogRenderer
constructor
A new instance of ChangelogRenderer.
- #render_document(data, entries) ⇒ Object
- #render_entry(entry) ⇒ Object
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 |