Commit da219897 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Extract Img::Writer class from Img::DirSet.

parent 9ea256b6
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
require 'jsduck/img/dir_set'
require 'jsduck/img/writer'
require 'jsduck/welcome'
require 'jsduck/guides'
require 'jsduck/videos'
@@ -43,7 +44,7 @@ module JsDuck
    # Welcome page and categories are written in JsDuck::IndexHtml
    def write
      @guides.write(@opts.output_dir+"/guides")
      @images.copy(@opts.output_dir+"/images")
      Img::Writer.copy(@images.all_used, @opts.output_dir+"/images")
    end

  end
+7 −17
Original line number Diff line number Diff line
@@ -5,7 +5,13 @@ require "fileutils"
module JsDuck
  module Img

    # Looks up images from directories specified through --images option.
    # A collection if Img::Dir objects.
    #
    # Looks up images from directories specified through --images
    # option.
    #
    # This class provides the same interface as Img::Dir, except that
    # the constructor takes array of full_paths not just one.
    class DirSet
      def initialize(full_paths, relative_path)
        @dirs = full_paths.map {|path| Img::Dir.new(path, relative_path) }
@@ -27,22 +33,6 @@ module JsDuck
      def report_unused
        @dirs.each {|dir| dir.report_unused }
      end

      # Copys over images to given output dir
      def copy(output_dir)
        all_used.each {|img| copy_img(img, output_dir) }
      end

      private

      # Copy a single image
      def copy_img(img, output_dir)
        dest = File.join(output_dir, img[:filename])
        Logger.log("Copying image", dest)
        FileUtils.makedirs(File.dirname(dest))
        FileUtils.cp(img[:full_path], dest)
      end

    end

  end
+23 −0
Original line number Diff line number Diff line
require "jsduck/logger"
require "fileutils"

module JsDuck
  module Img

    # Copies images to destination directory.
    class Writer
      # Takes an array of image records retrieved from
      # Img::Dir#all_used or Img::DirSet#all_used and copies all of
      # them to given output directory.
      def self.copy(images, output_dir)
        images.each do |img|
          dest = File.join(output_dir, img[:filename])
          Logger.log("Copying image", dest)
          FileUtils.makedirs(File.dirname(dest))
          FileUtils.cp(img[:full_path], dest)
        end
      end
    end

  end
end