class Milestoner::Builders::Web

Builds web output (i.e. HTML and CSS).

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/web.rb, line 14
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/web.rb, line 20
def call
  tagger.call
        .fmap { |tags| build tags }
        .alt_map { |message| failure message }
end

Private Instance Methods

build(tags) click to toggle source
# File lib/milestoner/builders/web.rb, line 30
def build tags
  make_root
  copy_stylesheet
  tags.each { |tag| write tag }
  settings.build_root
end
copy_stylesheet() click to toggle source
# File lib/milestoner/builders/web.rb, line 39
def copy_stylesheet
  return unless settings.build_stylesheet

  stylesheet_template.copy stylesheet_path
  logger.info { "Built: #{stylesheet_path}." }
end
failure(message) click to toggle source
# File lib/milestoner/builders/web.rb, line 70
def failure message
  logger.error { message }
  message
end
make_path(tag) click to toggle source
# File lib/milestoner/builders/web.rb, line 65
def make_path tag
  version = settings.build_max == 1 ? "" : tag.version
  settings.build_root.join(version, settings.build_basename).make_ancestors.sub_ext ".html"
end
make_root(= settings.build_root.make_path) click to toggle source
# File lib/milestoner/builders/web.rb, line 37
  def make_root = settings.build_root.make_path

  def copy_stylesheet
    return unless settings.build_stylesheet

    stylesheet_template.copy stylesheet_path
    logger.info { "Built: #{stylesheet_path}." }
  end

  def stylesheet_template
    settings.build_template_paths
            .map { |path| path.join "public/page.css.erb" }
            .find(&:exist?)
            .copy settings.build_root.make_path.join stylesheet_path
  end

  def stylesheet_path
    settings.build_root.join "#{Pathname(settings.build_stylesheet).name}.css"
  end

  def write tag
    path = make_path tag
    settings.project_version = tag.version

    path.write view.call(tag:, layout: settings.build_layout)
    logger.info { "Built: #{path}." }
  end

  def make_path tag
    version = settings.build_max == 1 ? "" : tag.version
    settings.build_root.join(version, settings.build_basename).make_ancestors.sub_ext ".html"
  end

  def failure message
    logger.error { message }
    message
  end
end
stylesheet_path() click to toggle source
# File lib/milestoner/builders/web.rb, line 53
def stylesheet_path
  settings.build_root.join "#{Pathname(settings.build_stylesheet).name}.css"
end
stylesheet_template() click to toggle source
# File lib/milestoner/builders/web.rb, line 46
def stylesheet_template
  settings.build_template_paths
          .map { |path| path.join "public/page.css.erb" }
          .find(&:exist?)
          .copy settings.build_root.make_path.join stylesheet_path
end
write(tag) click to toggle source
# File lib/milestoner/builders/web.rb, line 57
def write tag
  path = make_path tag
  settings.project_version = tag.version

  path.write view.call(tag:, layout: settings.build_layout)
  logger.info { "Built: #{path}." }
end