Class: USPSFlags::Generate
- Inherits:
-
Object
- Object
- USPSFlags::Generate
- Defined in:
- lib/usps_flags/generate.rb
Overview
Controller class for generating files.
Class Method Summary collapse
-
.all(svg: true, png: true, zips: true, reset: true) ⇒ Object
Generate all static SVG and PNG files, and automaticall generates zip archives for download.
-
.png(svg, outfile: nil, trim: false) ⇒ Object
Convert SVG data into a PNG file.
-
.spec(outfile: nil, fly: nil, unit: nil, scale: nil) ⇒ String
Generate trident spec sheet as an SVG image.
-
.svg(flag, outfile: nil, scale: nil, field: true) ⇒ String
The primary controller method.
-
.zips(svg: true, png: true) ⇒ Object
Generate zip archives of current static image files.
Class Method Details
.all(svg: true, png: true, zips: true, reset: true) ⇒ Object
Generate all static SVG and PNG files, and automaticall generates zip archives for download.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/usps_flags/generate.rb', line 56 def all(svg: true, png: true, zips: true, reset: true) raise USPSFlags::Errors::StaticFilesGenerationError, "At least one argument switch must be true out of [svg, png, zips]." unless svg || png || zips remove_static_files if reset puts "\nSVGs generate a single file.", "PNGs generate full-res, 1500w, 1000w, 500w, and thumbnail files.", "Corresponding rank insignia (including smaller sizes) are also generated, as appropriate." USPSFlags::Helpers.log "\nGeneration location: #{USPSFlags::Config.flags_dir}\n" USPSFlags::Helpers.log "\n#{Time.now.strftime('%Y%m%d.%H%M%S%z')} – Generating static files...\n\n" USPSFlags::Helpers.log "Flag | SVG | PNG | Run time\n".rjust(USPSFlags::Helpers.max_flag_name_length+31), "\n".rjust(USPSFlags::Helpers.max_flag_name_length+32, "-") overall_start_time = Time.now USPSFlags::Helpers.valid_flags(:all).each do |flag| generate_static_images_for(flag, svg: svg, png: png) end zips(svg: svg, png: png) if zips USPSFlags::Helpers.log "\nTotal run time: #{Time.now - overall_start_time} s\n\n" nil rescue => e raise e if e.is_a?(USPSFlags::Errors::StaticFilesGenerationError) raise USPSFlags::Errors::StaticFilesGenerationError, cause: e end |
.png(svg, outfile: nil, trim: false) ⇒ Object
Convert SVG data into a PNG file.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/usps_flags/generate.rb', line 31 def png(svg, outfile: nil, trim: false) temp_svg_file = "temp.svg" temp_svg = ::File.new(temp_svg_file, "w+") temp_svg.write(svg) temp_svg.flush raise USPSFlags::Errors::PNGGenerationError, svg: svg if outfile.nil? || outfile.empty? MiniMagick::Tool::Convert.new do |convert| convert << "-background" << "none" convert << "-format" << "png" convert << "-trim" if trim convert << temp_svg.path convert << outfile end ensure ::File.delete(temp_svg_file) if ::File.exist?(temp_svg_file) end |
.spec(outfile: nil, fly: nil, unit: nil, scale: nil) ⇒ String
Generate trident spec sheet as an SVG image.
105 106 107 108 109 110 111 112 113 |
# File 'lib/usps_flags/generate.rb', line 105 def spec(outfile: nil, fly: nil, unit: nil, scale: nil) fly = fly.nil? ? USPSFlags::Config::BASE_FLY : fly svg = "" svg << USPSFlags::Core.headers(scale: scale, title: "USPS Trident Specifications") svg << USPSFlags::Core.trident_spec(fly: fly, unit: unit) svg << USPSFlags::Core. USPSFlags::Helpers.output(svg, outfile: outfile) end |
.svg(flag, outfile: nil, scale: nil, field: true) ⇒ String
The primary controller method. Generates an SVG file or SVG data.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/usps_flags/generate.rb', line 11 def svg(flag, outfile: nil, scale: nil, field: true) flag = flag.upcase.delete("/", "_", "PENNANT") if ["CRUISE", "OIC"].include?(flag) USPSFlags::Generate::Flag.pennant(type: flag, outfile: outfile, scale: scale) elsif flag == "ENSIGN" USPSFlags::Generate::Flag.ensign(outfile: outfile, scale: scale) elsif flag == "US" USPSFlags::Generate::Flag.us(outfile: outfile, scale: scale) elsif flag == "WHEEL" USPSFlags::Generate::Flag.wheel(outfile: outfile, scale: scale) else USPSFlags::Generate::Flag.officer(rank: flag, outfile: outfile, scale: scale, field: field) end end |
.zips(svg: true, png: true) ⇒ Object
Generate zip archives of current static image files.
89 90 91 92 93 94 95 96 |
# File 'lib/usps_flags/generate.rb', line 89 def zips(svg: true, png: true) raise USPSFlags::Errors::ZipGenerationError, "At least one argument switch must be true out of [svg, png]." unless svg || png generate_zip("svg") if svg generate_zip("png") if png rescue => e raise e if e.is_a?(USPSFlags::Errors::ZipGenerationError) raise USPSFlags::Errors::ZipGenerationError, cause: e end |