Sha256: 2ac9aa63f9167efb73d023873c5356eaf15398a03c78ef24f3059ff659d498ab

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

require 'komic/builder/pdf'
require 'komic/builder/directory'
require 'komic/builder/zip'
require 'komic/builder/douban_album'
require 'uri'

module Komic::Builder
  IMAGE_SUFFIXES = ['png', 'jpg', 'jpeg', 'webp', 'bmp', 'gif']
  FNMATCH_FOR_IMAGE = "**.{#{IMAGE_SUFFIXES.join(',')}}"
  class Factory
    class << self
      def detect_type(string)
        path = File.join(Dir.pwd, string)
        r_douban_album = Regexp.new "www.douban.com/photos/album/"

        if string =~ URI::regexp and string =~ r_douban_album
          return 'douban_album'
        end

        if File.exists?(path)
          file_extname = File.extname(path)
          if file_extname == '.pdf'
            return 'pdf'
          elsif file_extname == '.zip'
            return 'zip'
          elsif File.directory?(path)
            return 'directory'
          end
        end
        raise "Builder can't be found."
      end

      def get_builder(type_string, options)
        case detect_type(type_string)
        when 'pdf' then PDF.new(type_string, options)
        when 'zip' then Zip.new(type_string, options)
        when 'directory' then Directory.new(type_string, options)
        when 'douban_album' then DoubanAlbum.new(type_string, options)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
komic-cli-0.1.7 lib/komic/builder.rb
komic-cli-0.1.6 lib/komic/builder.rb