module Mangdown::CBZ

Package manga or chapter directories into .cbz archive files

Public Class Methods

all(main_dir) click to toggle source
# File lib/mangdown/support/cbz.rb, line 9
def all(main_dir)
  main_dir = String(main_dir)
  main_dir = validate_file_or_dir_names(main_dir, false)
  each_dir_or_page(main_dir) { |dir| validate_file_or_dir_names(dir) }
  cbz_sub_dirs(main_dir)
end
one(dir, validate_main_dir = true) click to toggle source
# File lib/mangdown/support/cbz.rb, line 16
def one(dir, validate_main_dir = true)
  dir = String(dir)
  dir = validate_file_or_dir_names(dir, validate_main_dir)
  cbz_dir(dir)
end

Private Class Methods

cbz_dir(dir) click to toggle source
# File lib/mangdown/support/cbz.rb, line 24
def cbz_dir(dir)
  dir = dir.to_s.sub(%r{/*$}, '')

  zip_filename = dir + '.cbz'
  return if File.exist?(zip_filename)

  ::Zip::File.open(zip_filename, ::Zip::File::CREATE) do |zip|
    file_matcher = File.join(dir, '**', '**')

    Dir.glob(file_matcher).each do |file|
      filename = file.sub("#{dir}/", '')
      zip.add(filename, file)
    end
  end
end
cbz_sub_dirs(dir) click to toggle source
# File lib/mangdown/support/cbz.rb, line 40
def cbz_sub_dirs(dir)
  each_dir_or_page(dir) do |sub_dir|
    cbz_dir(sub_dir)
  end
end
each_dir_or_page(dir) { |filename| ... } click to toggle source
# File lib/mangdown/support/cbz.rb, line 46
def each_dir_or_page(dir)
  Dir.glob(dir + '/*').each do |filename|
    next if filename.include?('.cbz')

    yield(filename)
  end
end
rename_with_valid_name(filename) click to toggle source
# File lib/mangdown/support/cbz.rb, line 61
def rename_with_valid_name(filename)
  checked_name = Tools.valid_path_name(filename)
  File.rename(filename, checked_name)
  checked_name
end
validate_file_or_dir_names(dir, validate_main_dir = true) click to toggle source
# File lib/mangdown/support/cbz.rb, line 54
def validate_file_or_dir_names(dir, validate_main_dir = true)
  each_dir_or_page(dir) do |filename|
    rename_with_valid_name(filename)
  end
  validate_main_dir ? rename_with_valid_name(dir) : dir
end