lib/usps_flags/generate.rb in usps_flags-0.5.0 vs lib/usps_flags/generate.rb in usps_flags-0.5.1
- old
+ new
@@ -1,128 +1,132 @@
# frozen_string_literal: false
# Controller class for generating files.
-class USPSFlags::Generate
- require 'usps_flags/generate/private'
+class USPSFlags
+ class Generate
+ require 'usps_flags/generate/helper_methods'
+ require 'usps_flags/generate/generator_methods'
- class << self
- include USPSFlags::Generate::Private
- # The primary controller method. Generates an SVG file or SVG data.
- #
- # @param [String] flag The flag type to generate.
- # @param [String] outfile The path to save the SVG file to. If not set, prints to console.
- # @param [Boolean] field Whether to generate the flag field (including any border).
- # @param [String] scale The image scale divisor factor.
- # @return [String] Returns the SVG data.
- def svg(flag, outfile: nil, scale: nil, field: true)
- flag = flag.upcase.delete('/', '_', 'PENNANT')
+ class << self
+ include USPSFlags::Generate::HelperMethods
+ include USPSFlags::Generate::GeneratorMethods
+ # The primary controller method. Generates an SVG file or SVG data.
+ #
+ # @param [String] flag The flag type to generate.
+ # @param [String] outfile The path to save the SVG file to. If not set, prints to console.
+ # @param [Boolean] field Whether to generate the flag field (including any border).
+ # @param [String] scale The image scale divisor factor.
+ # @return [String] Returns the SVG data.
+ def svg(flag, outfile: nil, scale: nil, field: true)
+ flag = flag.upcase.delete('/', '_', 'PENNANT')
- USPSFlags::Helpers.ensure_dir_for_file(outfile)
+ USPSFlags::Helpers.ensure_dir_for_file(outfile)
- output = special_flag(flag, outfile, scale)
- output ||= USPSFlags::Generate::Flag.officer(rank: flag, outfile: outfile, scale: scale, field: field)
- output
- end
+ output = special_flag(flag, outfile, scale)
+ output ||= USPSFlags::Generate::Flag.officer(rank: flag, outfile: outfile, scale: scale, field: field)
+ output
+ end
- # Convert SVG data into a PNG file.
- #
- # @param [String] svg The SVG data.
- # @param [String] outfile The path to save the PNG file to. (Required because the file is not accessible if this is left blank.)
- # @param [Boolean] trim Whether to trim the generated PNG file of excess transparency.
- # @param [String] background Background color. Defaults to 'none' (transparent).
- def png(svg, outfile: nil, trim: false, background: 'none')
- raise USPSFlags::Errors::PNGGenerationError.new(svg: svg) if outfile.nil? || outfile.empty?
+ # Convert SVG data into a PNG file.
+ #
+ # @param [String] svg The SVG data.
+ # @param [String] outfile The path to save the PNG file to. (Required because the file isn't accessible if blank.)
+ # @param [Boolean] trim Whether to trim the generated PNG file of excess transparency.
+ # @param [String] background Background color. Defaults to 'none' (transparent).
+ def png(svg, outfile: nil, trim: false, background: 'none')
+ raise USPSFlags::Errors::PNGGenerationError.new(svg: svg) if outfile.nil? || outfile.empty?
- set_temp_svg(svg)
+ set_temp_svg(svg)
- USPSFlags::Helpers.ensure_dir_for_file(outfile)
+ USPSFlags::Helpers.ensure_dir_for_file(outfile)
- generate_png(background, trim, outfile)
- ensure
- ::File.delete(@temp_svg_path) if delete_temp_svg?
- end
+ generate_png(background, trim, outfile)
+ ensure
+ ::File.delete(@temp_svg_path) if delete_temp_svg?
+ end
- # Generate all static SVG and PNG files, and automaticall generates zip archives for download.
- #
- # @param [Boolean] svg Whether to generate SVG images.
- # @param [Boolean] png Whether to generate PNG images.
- # @param [Boolean] zips Whether to create zip archives for all images created. Does not create a zip for skipped formats.
- # @param [Boolean] reset Whether to delete all previous files before generating new files.
- def all(svg: true, png: true, zips: true, reset: true)
- all_arg_error unless any_all_arg?(svg, png, zips, reset)
+ # Generate all static SVG and PNG files, and automaticall generates zip archives for download.
+ #
+ # @param [Boolean] svg Whether to generate SVG images.
+ # @param [Boolean] png Whether to generate PNG images.
+ # @param [Boolean] zips Whether to create zip archives for all images created.
+ # @param [Boolean] reset Whether to delete all previous files before generating new files.
+ def all(svg: true, png: true, zips: true, reset: true)
+ all_arg_error unless any_all_arg?(svg, png, zips, reset)
- track_time do
- remove_static_files if reset
- images(svg: svg, png: png) if svg || png
- zips(svg: svg, png: png) if zips
+ track_time do
+ remove_static_files if reset
+ images(svg: svg, png: png) if svg || png
+ zips(svg: svg, png: png) if zips
+ end
end
- end
- # 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)
- unless svg || png
- raise(
- USPSFlags::Errors::ZipGenerationError,
- 'At least one argument switch must be true out of [svg, png].'
- )
+ # 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)
+ unless svg || png
+ raise(
+ USPSFlags::Errors::ZipGenerationError,
+ 'At least one argument switch must be true out of [svg, png].'
+ )
+ end
+
+ generate_zip('svg') if svg
+ generate_zip('png') if png
end
- generate_zip('svg') if svg
- generate_zip('png') if png
- end
-
- # Generate static image files.
- #
- # @param [Boolean] svg Generate static SVG images.
- # @param [Boolean] png Generate static PNG images.
- def images(svg: true, png: true)
- static_generation_header
- USPSFlags::Helpers.valid_flags(:all).each do |flag|
- generate_static_images_for(flag, svg: svg, png: png)
+ # Generate static image files.
+ #
+ # @param [Boolean] svg Generate static SVG images.
+ # @param [Boolean] png Generate static PNG images.
+ def images(svg: true, png: true)
+ static_generation_header
+ USPSFlags::Helpers.valid_flags(:all).each do |flag|
+ generate_static_images_for(flag, svg: svg, png: png)
+ end
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.
- # @param [Integer] fly The nominal fly length of an appropriate flag field for the generated tridents. Size labels scale to this size.
- # @param [String] outfile The unit to append to all trident measurements.
- # @param [String] scale The image scale divisor factor.
- # @return [String] Returns the SVG data.
- def spec(outfile: nil, fly: USPSFlags::Config::BASE_FLY, unit: nil, scale: nil, scaled_border: false)
- svg = +''
- svg << USPSFlags::Core.headers(scale: scale, title: 'USPS Trident Specifications')
- svg << USPSFlags::Core.trident_spec(fly: fly, unit: unit, scaled_border: scaled_border)
- svg << USPSFlags::Core.footer
+ # 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.
+ # @param [Integer] fly The nominal fly length of an appropriate flag field for the generated tridents.
+ # @param [String] outfile The unit to append to all trident measurements.
+ # @param [String] scale The image scale divisor factor.
+ # @return [String] Returns the SVG data.
+ def spec(outfile: nil, fly: USPSFlags::Config::BASE_FLY, unit: nil, scale: nil, scaled_border: false)
+ svg = +''
+ svg << USPSFlags::Core.headers(scale: scale, title: 'USPS Trident Specifications')
+ svg << USPSFlags::Core.trident_spec(fly: fly, unit: unit, scaled_border: scaled_border)
+ svg << USPSFlags::Core.footer
- USPSFlags::Helpers.output(svg, outfile: outfile)
- end
+ USPSFlags::Helpers.output(svg, outfile: outfile)
+ end
- private
+ private
- def special_flag(flag, outfile, scale)
- case flag
- when 'CRUISE', 'OIC'
- USPSFlags::Generate::Flag.pennant(type: flag, outfile: outfile, scale: scale)
- when 'ENSIGN'
- USPSFlags::Generate::Flag.ensign(outfile: outfile, scale: scale)
- when 'US'
- USPSFlags::Generate::Flag.us(outfile: outfile, scale: scale)
- when 'WHEEL'
- USPSFlags::Generate::Flag.wheel(outfile: outfile, scale: scale)
+ def special_flag(flag, outfile, scale)
+ case flag
+ when 'CRUISE', 'OIC'
+ USPSFlags::Generate::Flag.pennant(type: flag, outfile: outfile, scale: scale)
+ when 'ENSIGN'
+ USPSFlags::Generate::Flag.ensign(outfile: outfile, scale: scale)
+ when 'US'
+ USPSFlags::Generate::Flag.us(outfile: outfile, scale: scale)
+ when 'WHEEL'
+ USPSFlags::Generate::Flag.wheel(outfile: outfile, scale: scale)
+ end
end
- end
- def generate_png(background, trim, outfile)
- MiniMagick::Tool::Convert.new do |convert|
- convert << '-background' << background
- convert << '-format' << 'png'
- convert << '-trim' if trim
- convert << @temp_svg_path
- convert << outfile
+ def generate_png(background, trim, outfile)
+ MiniMagick::Tool::Convert.new do |convert|
+ convert << '-background' << background
+ convert << '-format' << 'png'
+ convert << '-trim' if trim
+ convert << @temp_svg_path
+ convert << outfile
+ end
end
end
end
end