lib/usps_flags/generate.rb in usps_flags-0.2.5 vs lib/usps_flags/generate.rb in usps_flags-0.2.6
- old
+ new
@@ -77,31 +77,21 @@
# Generate zip archives of current static image files.
#
# @param [Boolean] svg Generate zip archive of SVG images.
# @param [Boolean] png Generate zip archive of PNG images.
def zips(svg: true, png: true)
- ["svg", "png"].each do |format|
- begin
- if binding.local_variable_get(format)
- zip = "#{USPSFlags::Config.flags_dir}/ZIP/USPS_Flags.#{format}.zip"
- ::File.delete(zip) if ::File.exist?(zip)
- Zip::File.open(zip, Zip::File::CREATE) do |z|
- Dir.glob("#{USPSFlags::Config.flags_dir}/#{format.upcase}/**/*").each do |f|
- if f.split("/").last(2).first == "insignia"
- filename = "insignia/#{f.split("/").last}"
- z.add(filename, f)
- else
- z.add(f.split("/").last, f)
- end
- end
- end
- puts "Generated #{format.upcase} Zip"
- end
- rescue Errno::EACCES => e
- puts "Error: Failed to generate #{format.upcase} Zip -> #{e.message}"
- end
+ begin
+ generate_zip("svg") if svg
+ rescue Errno::EACCES => e
+ puts "Error: Failed to generate SVG Zip -> #{e.message}"
end
+
+ begin
+ generate_zip("png") if png
+ rescue Errno::EACCES => e
+ puts "Error: Failed to generate SVG Zip -> #{e.message}"
+ end
end
# Generate trident spec sheet as an SVG image.
#
# @param [String] outfile The path to save the SVG file to. If not set, prints to console.
@@ -132,10 +122,30 @@
@svg_ins_file = @svg_file.gsub("/SVG/", "/SVG/insignia/")
@png_ins_file = @svg_file.gsub("/SVG/", "/PNG/insignia/").gsub(".svg", ".png")
[@svg_file, @png_file, @svg_ins_file, @png_ins_file]
end
+ def generate_zip(type)
+ raise "Error: Flags directory not found." unless ::Dir.exist?("#{USPSFlags::Config.flags_dir}/ZIP")
+
+ zip = "#{USPSFlags::Config.flags_dir}/ZIP/USPS_Flags.#{type}.zip"
+ ::File.delete(zip) if ::File.exist?(zip)
+
+ ::Zip::File.open(zip, Zip::File::CREATE) do |z|
+ ::Dir.glob("#{USPSFlags::Config.flags_dir}/#{type.upcase}/**/*").each do |f|
+ add_to_zip(z, f)
+ end
+ end
+ puts "Generated #{type.upcase} Zip"
+ end
+
+ def add_to_zip(z, f)
+ filename = f.split("/").last
+ filename = "insignia/#{filename}" if f.split("/").last(2).first == "insignia"
+ z.add(filename, f)
+ end
+
def generate_static_images_for(flag, svg: true, png: true)
start_time = Time.now
# USPSFlags::Helpers.log " | | _ _ _ _ _ | \r".rjust(USPSFlags::Helpers.max_flag_name_length+31, " ")
flag = flag.upcase
USPSFlags::Helpers.log "#{flag.rjust(USPSFlags::Helpers.max_flag_name_length)} |"
@@ -157,58 +167,69 @@
run_time = (Time.now - start_time).round(4).to_s[(0..5)].ljust(6, "0")
USPSFlags::Helpers.log " | #{run_time} s\n"
end
def generate_static_svg(flag)
- begin
- USPSFlags::Helpers.log " "
- svg flag, outfile: @svg_file, scale: 1
- USPSFlags::Helpers.log "S"
- if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
- USPSFlags::Helpers.log "-"
- else
- svg flag, field: false, outfile: @svg_ins_file, scale: 1
- USPSFlags::Helpers.log "I"
- end
- rescue => e
- USPSFlags::Helpers.log "x -> #{e.message}"
+ USPSFlags::Helpers.log " "
+ svg flag, outfile: @svg_file, scale: 1
+ USPSFlags::Helpers.log "S"
+ if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
+ USPSFlags::Helpers.log "-"
+ else
+ svg flag, field: false, outfile: @svg_ins_file, scale: 1
+ USPSFlags::Helpers.log "I"
end
+ rescue => e
+ USPSFlags::Helpers.log "x -> #{e.message}"
end
def generate_static_png(flag)
USPSFlags::Helpers.log " | "
- begin
- USPSFlags::Helpers.log "…\b"
- png(File.read(@svg_file), outfile: @png_file) unless ::File.exist?(@png_file)
- USPSFlags::Helpers.log "F"
- if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
- USPSFlags::Helpers.log "-"
- else
- USPSFlags::Helpers.log "…\b"
- png(File.read(@svg_ins_file), outfile: @png_ins_file, trim: true) unless ::File.exist?(@png_ins_file)
- USPSFlags::Helpers.log "I"
- end
- USPSFlags::Helpers.png_sizes.keys.each do |size|
- USPSFlags::Helpers.log(".") and next if ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/#{flag}.#{size}.png")
+ generate_fullsize_png
+ generate_fullsize_png_insignia(flag)
+ generate_reduced_size_pngs
+ rescue => e
+ USPSFlags::Helpers.log "x -> #{e.message}"
+ end
- USPSFlags::Helpers.log "…\b"
- size, size_key = USPSFlags::Helpers.size_and_key(size: size, flag: flag)
- USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key) if USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
- USPSFlags::Helpers.log USPSFlags::Helpers.png_sizes[size_key]
- if ::File.exist?(@png_ins_file) && ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/insignia/#{flag}.#{size}.png")
- USPSFlags::Helpers.log "."
- elsif ::File.exist?(@png_ins_file) && MiniMagick::Image.open(@png_ins_file)[:width] > size && USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
- USPSFlags::Helpers.log "…\b"
- USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key)
- USPSFlags::Helpers.log "i"
- elsif ::File.exist?(@png_ins_file)
- USPSFlags::Helpers.log "+"
- else
- USPSFlags::Helpers.log "-"
- end
- end
- rescue => e
- USPSFlags::Helpers.log "x -> #{e.message}"
+ def generate_fullsize_png
+ png(File.read(@svg_file), outfile: @png_file) unless ::File.exist?(@png_file)
+ USPSFlags::Helpers.log "F"
+ end
+
+ def generate_fullsize_png_insignia(flag)
+ if USPSFlags::Helpers.valid_flags(:past).include?(flag) || !USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
+ USPSFlags::Helpers.log "-"
+ else
+ png(File.read(@svg_ins_file), outfile: @png_ins_file, trim: true) unless ::File.exist?(@png_ins_file)
+ USPSFlags::Helpers.log "I"
+ end
+ end
+
+ def generate_reduced_size_pngs
+ USPSFlags::Helpers.png_sizes.keys.each do |size|
+ USPSFlags::Helpers.log(".") and next if ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/#{flag}.#{size}.png")
+ size, size_key = USPSFlags::Helpers.size_and_key(size: size, flag: flag)
+ generate_smaller_png(flag, size, size_key)
+ generate_smaller_png_insignia(flag, size, size_key)
+ end
+ end
+
+ def generate_smaller_png(flag, size, size_key)
+ USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key) if USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
+ USPSFlags::Helpers.log USPSFlags::Helpers.png_sizes[size_key]
+ end
+
+ def generate_smaller_png_insignia(flag, size, size_key)
+ if ::File.exist?(@png_ins_file) && ::File.exist?("#{USPSFlags::Config.flags_dir}/PNG/insignia/#{flag}.#{size}.png")
+ USPSFlags::Helpers.log "."
+ elsif ::File.exist?(@png_ins_file) && MiniMagick::Image.open(@png_ins_file)[:width] > size && USPSFlags::Helpers.valid_flags(:insignia).include?(flag)
+ USPSFlags::Helpers.resize_png(@png_ins_file, flag: flag, size: size, size_key: size_key)
+ USPSFlags::Helpers.log "i"
+ elsif ::File.exist?(@png_ins_file)
+ USPSFlags::Helpers.log "+"
+ else
+ USPSFlags::Helpers.log "-"
end
end
end
end