Sha256: df474aa16394491b09972336d6edc51c46e4d2103a70c212d9837301c514396f

Contents?: true

Size: 961 Bytes

Versions: 1

Compression:

Stored size: 961 Bytes

Contents

module Munge
  class Runner
    def initialize(items:, router:, alterant:, writer:, reporter:, destination:)
      @items    = items
      @router   = router
      @alterant = alterant
      @writer   = writer
      @reporter = reporter
      @write_manager = Munge::WriteManager.new(driver: File)
      @destination   = destination
    end

    def write
      @items
        .reject { |item| item.route.nil? }
        .each   { |item| render_and_write(item) }
    end

    private

    def render_and_write(item)
      relpath = @router.filepath(item)
      abspath = File.join(@destination, relpath)
      content = @alterant.transform(item)

      write_status = @write_manager.status(abspath, content)

      case write_status
      when :different
        @writer.write(abspath, content)
      when :identical, :double_write_error
        # we'll defer all other cases to the reporter
      end

      @reporter.call(item, write_status)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
munge-0.7.0 lib/munge/runner.rb