lib/milestoner/builders/md/indexer.rb



# frozen_string_literal: true

module Milestoner
  module Builders
    module MD
      # Builds Markdown index.
      class Indexer
        include Milestoner::Dependencies[:settings, :logger]

        def initialize(path_resolver: PathResolver, view: Views::Milestones::Index.new, **)
          super(**)
          @path_resolver = path_resolver
          @view = view
        end

        def call tags
          path_resolver.call settings.build_output.join("index.md"), logger: do |path|
            path.write view.call(tags:, layout: settings.build_layout, format: :md)
          end
        end

        private

        attr_reader :path_resolver, :view
      end
    end
  end
end