Sha256: a1a403bf434584c9bceac097da665fae6b8c2125caea562db706d7391bfed585

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

module Klipbook
  module Commands
    module Exporters
      class Exporter
        def initialize(logger=Logger.new)
          @logger = logger
        end

        def run!(books:, force:, output_dir:)
          @logger.info "Using output directory: #{output_dir}"

          books.each do |book|
            export_book(book, output_dir, force)
          end
        end

        private

        def export_book(book, output_dir, force)
          filename = filename_for_book(book)
          filepath = File.join(output_dir, filename)

          if !force && File.exist?(filepath)
            @logger.info "- Skipping #{filename}"
            return
          end

          @logger.info "+ Writing #{filename}"

          File.open(filepath, 'w') do |f|
            f.write render_contents(book)
          end
        end

        def render_contents(book)
          raise "Implement me"
        end

        def extension
          raise "Implement me"
        end

        def filename_for_book(book)
          "#{book.title.gsub(/[:,\/!?]/, "")}.#{extension}"
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
klipbook-4.0.0 lib/klipbook/commands/exporters/exporter.rb
klipbook-3.0.0 lib/klipbook/commands/exporters/exporter.rb