class Milestoner::Builders::Stream

Builds I/O stream output.

Attributes

tagger[R]
view[R]

Public Class Methods

new(tagger: Commits::Tagger.new, view: Views::Milestones::Show.new, **) click to toggle source
Calls superclass method
# File lib/milestoner/builders/stream.rb, line 9
def initialize(tagger: Commits::Tagger.new, view: Views::Milestones::Show.new, **)
  @tagger = tagger
  @view = view
  super(**)
end

Public Instance Methods

call() click to toggle source
# File lib/milestoner/builders/stream.rb, line 15
def call
  tagger.call
        .fmap { |tags| write tags }
        .alt_map { |message| failure message }
end

Private Instance Methods

build(tags) click to toggle source
# File lib/milestoner/builders/stream.rb, line 27
def build tags
  tags.reduce([]) { |content, tag| content.append render(tag) }
      .join(%(\n#{"-" * 80}\n\n))
end
failure(message) click to toggle source
# File lib/milestoner/builders/stream.rb, line 34
def failure message
  logger.error { message }
  message
end
render(tag) click to toggle source
# File lib/milestoner/builders/stream.rb, line 32
  def render(tag) = view.call tag:, layout: settings.build_layout, format: :stream

  def failure message
    logger.error { message }
    message
  end
end
write(tags) click to toggle source
# File lib/milestoner/builders/stream.rb, line 25
    def write(tags) = build(tags).tap { |content| io.write content }

    def build tags
      tags.reduce([]) { |content, tag| content.append render(tag) }
          .join(%(\n#{"-" * 80}\n\n))
    end

    def render(tag) = view.call tag:, layout: settings.build_layout, format: :stream

    def failure message
      logger.error { message }
      message
    end
  end
end