Sha256: b9ee9e96fabacca4c79fbbd280d66fd4eba9869706d32171291ac0e8f8645a1f
Contents?: true
Size: 1.81 KB
Versions: 2
Compression:
Stored size: 1.81 KB
Contents
# frozen_string_literal: true # Released under the MIT License. # Copyright, 2020-2024, by Samuel Williams. require_relative 'document' module Utopia module Project class ReleasesDocument < Document class Summary def initialize(node) @node = node end attr :node def id @node.to_plaintext.chomp.downcase.gsub(/\s+/, "-") end def to_markdown @node.dup.extract_children.to_markdown end def to_html @node.dup.extract_children.to_html end end class Release def initialize(node) @node = node end def changes return to_enum(:changes) unless block_given? node = @node.next while node if node.type == :header if node.header_level <= @node.header_level break end if node.header_level == @node.header_level + 1 yield Summary.new(node) end end node = node.next end end def name @node.to_plaintext.chomp end def href(base = "/", anchor:) "#{base}releases/index##{anchor.downcase.gsub(/\s+/, "-")}" end end def release_names return to_enum(:release_names) unless block_given? self.root.each do |node| if node.type == :header and node.header_level == 2 yield node.to_plaintext.chomp end end end def release(name) self.root.each do |node| if node.type == :header and node.header_level == 2 and node.to_plaintext.chomp == name return Release.new(node) end end end def latest_release if name = release_names.first release(name) end end def releases return to_enum(:releases) unless block_given? release_names.each do |name| yield release(name) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
utopia-project-0.30.1 | lib/utopia/project/releases_document.rb |
utopia-project-0.30.0 | lib/utopia/project/releases_document.rb |