usps_flags 0.3.26 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +87 -0
  3. data/Gemfile +3 -1
  4. data/Gemfile.lock +2 -2
  5. data/Rakefile +4 -2
  6. data/lib/rational.rb +3 -1
  7. data/lib/usps_flags.rb +15 -17
  8. data/lib/usps_flags/config.rb +32 -29
  9. data/lib/usps_flags/core.rb +11 -9
  10. data/lib/usps_flags/core/ensign.rb +20 -17
  11. data/lib/usps_flags/core/field.rb +33 -30
  12. data/lib/usps_flags/core/footer.rb +2 -0
  13. data/lib/usps_flags/core/headers.rb +11 -8
  14. data/lib/usps_flags/core/icons.rb +14 -0
  15. data/lib/usps_flags/core/{anchor.rb → icons/anchor.rb} +7 -5
  16. data/lib/usps_flags/core/{binoculars.rb → icons/binoculars.rb} +7 -5
  17. data/lib/usps_flags/core/{lighthouse.rb → icons/lighthouse.rb} +3 -1
  18. data/lib/usps_flags/core/{star.rb → icons/star.rb} +3 -1
  19. data/lib/usps_flags/core/{trident.rb → icons/trident.rb} +29 -25
  20. data/lib/usps_flags/core/{trumpet.rb → icons/trumpet.rb} +3 -1
  21. data/lib/usps_flags/core/pennant.rb +20 -17
  22. data/lib/usps_flags/core/trident_spec.rb +62 -174
  23. data/lib/usps_flags/core/trident_specs.rb +14 -0
  24. data/lib/usps_flags/core/trident_specs/base.rb +15 -0
  25. data/lib/usps_flags/core/trident_specs/circle.rb +51 -0
  26. data/lib/usps_flags/core/trident_specs/delta.rb +68 -0
  27. data/lib/usps_flags/core/trident_specs/header.rb +65 -0
  28. data/lib/usps_flags/core/trident_specs/long.rb +54 -0
  29. data/lib/usps_flags/core/trident_specs/short.rb +176 -0
  30. data/lib/usps_flags/core/tridents.rb +16 -14
  31. data/lib/usps_flags/core/us.rb +9 -7
  32. data/lib/usps_flags/core/wheel.rb +2 -0
  33. data/lib/usps_flags/errors.rb +16 -4
  34. data/lib/usps_flags/generate.rb +48 -44
  35. data/lib/usps_flags/generate/flag.rb +33 -30
  36. data/lib/usps_flags/helpers.rb +48 -63
  37. data/lib/usps_flags/helpers/builders.rb +39 -37
  38. data/lib/usps_flags/helpers/spec_arrows.rb +16 -13
  39. data/spec/rational_spec.rb +9 -7
  40. data/spec/spec_helper.rb +5 -3
  41. data/spec/usps_flags/config_spec.rb +15 -13
  42. data/spec/usps_flags/core_spec.rb +52 -51
  43. data/spec/usps_flags/generate_spec.rb +70 -60
  44. data/spec/usps_flags/helpers_spec.rb +12 -10
  45. data/spec/usps_flags_spec.rb +22 -20
  46. data/usps_flags.gemspec +4 -2
  47. metadata +31 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0521b62207fb9d9d13206972bd4191d3bd8c22c29c7fe4a249e4029cecbbd010
4
- data.tar.gz: e5d1f626ec6874f6cc64c3f8c0cb5d52f0a959d0d4a653f6415291d20c071ad8
3
+ metadata.gz: 451c283ce311f5d823d989cddddce93a7b160239b472bd663d658c8b4e46be46
4
+ data.tar.gz: 25258a07e6a71f51a2d0826836b48e454643afd568b6f17d1010056460b4d963
5
5
  SHA512:
6
- metadata.gz: dde0ed9cd1bcba8808fce3380fb399336a94c624b4ef06acc91eab146cd83abdc676e5cbfc320914875d8380ec54db3b8c75cb34e9c2f362f34cb288dfe7a0f6
7
- data.tar.gz: 9d37013cb48d27b9b0137fece5c16525ae8acd153644cff363269aba2a74f47a49e58e2d6b27fe7dcf466fbd261fb2d020a2eaff459c1ddbe433ca778db6aa54
6
+ metadata.gz: 9a019ca921c5b622c06e937f0b0e4dd047f60eed70a828775c14d22272eb44a798ee363aae4fd0ba079cedae03722289d1f3b10eb2329e68f2ed79f110886d35
7
+ data.tar.gz: 650f1793ee7f310f9877cf4017361ce95e5468a9e53d623bd5425e002f179037a8811c5c90bbed9f852420d9873e1751fb0d6a279b35d2d0de455f79cbb73e33
@@ -0,0 +1,87 @@
1
+ inherit_gem:
2
+ rubocop-rails_config:
3
+ - config/rails.yml
4
+ require: rubocop-rspec
5
+ AllCops:
6
+ TargetRubyVersion: 2.5
7
+ Exclude:
8
+ - tmp/**/*
9
+
10
+ Layout/IndentHash:
11
+ EnforcedStyle: consistent
12
+ Layout/AccessModifierIndentation:
13
+ EnforcedStyle: outdent
14
+ Layout/EmptyLinesAroundAccessModifier:
15
+ Enabled: true
16
+ Layout/AlignArray:
17
+ Enabled: true
18
+ Layout/AlignHash:
19
+ Enabled: true
20
+ Layout/EmptyLineAfterGuardClause:
21
+ Enabled: true
22
+ Layout/SpaceInsideBlockBraces:
23
+ EnforcedStyle: space
24
+ EnforcedStyleForEmptyBraces: no_space
25
+ Layout/SpaceInsideHashLiteralBraces:
26
+ EnforcedStyle: space
27
+ EnforcedStyleForEmptyBraces: no_space
28
+ Layout/SpaceInsideArrayLiteralBrackets:
29
+ EnforcedStyle: no_space
30
+
31
+ Lint/UnusedMethodArgument:
32
+ Enabled: true
33
+ Lint/UselessAssignment:
34
+ Enabled: true
35
+
36
+ Metrics/BlockLength:
37
+ Exclude:
38
+ - 'spec/**/*.rb'
39
+ Metrics/LineLength:
40
+ Exclude:
41
+ - 'spec/**/*.rb'
42
+ Max: 100
43
+ Metrics/LineLength:
44
+ Include:
45
+ - 'spec/**/*.rb'
46
+ Max: 120
47
+ Metrics/MethodLength:
48
+ Enabled: true
49
+ Metrics/ClassLength:
50
+ Enabled: true
51
+ Max: 125
52
+ Metrics/ParameterLists:
53
+ Enabled: true
54
+ Metrics/CyclomaticComplexity:
55
+ Enabled: true
56
+ Metrics/AbcSize:
57
+ Enabled: true
58
+
59
+ Rails/InverseOf:
60
+ Enabled: true
61
+
62
+ RSpec/MessageSpies:
63
+ EnforcedStyle: receive
64
+
65
+ Style/Documentation:
66
+ Enabled: false
67
+ Style/FrozenStringLiteralComment:
68
+ Enabled: true
69
+ Style/NumericLiterals:
70
+ Enabled: true
71
+ Style/StringLiterals:
72
+ EnforcedStyle: single_quotes
73
+ Style/AndOr:
74
+ Enabled: true
75
+ Style/ClassCheck:
76
+ Enabled: true
77
+ Style/GuardClause:
78
+ Enabled: true
79
+
80
+ Security/Eval:
81
+ Enabled: true
82
+ Security/JSONLoad:
83
+ Enabled: true
84
+ Security/JSONLoad:
85
+ Enabled: true
86
+ Security/YAMLLoad:
87
+ Enabled: true
data/Gemfile CHANGED
@@ -1,2 +1,4 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: false
2
+
3
+ source 'https://rubygems.org'
2
4
  gemspec
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- usps_flags (0.3.26)
4
+ usps_flags (0.4.0)
5
5
  file_utils (~> 1.1, >= 1.1.2)
6
6
  mini_magick (~> 4.8, >= 4.8.0)
7
7
  rubyzip (~> 1.2, >= 1.2.1)
@@ -28,7 +28,7 @@ GEM
28
28
  diff-lcs (>= 1.2.0, < 2.0)
29
29
  rspec-support (~> 3.7.0)
30
30
  rspec-support (3.7.0)
31
- rubyzip (1.2.2)
31
+ rubyzip (1.2.3)
32
32
  simplecov (0.15.1)
33
33
  docile (~> 1.1.0)
34
34
  json (>= 1.8, < 3)
data/Rakefile CHANGED
@@ -1,5 +1,7 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: false
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new
5
7
 
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: false
2
+
1
3
  # Monkey patch to add some formatting methods to Rational.
2
- #
4
+ #
3
5
  # @author Julian Fiander
4
6
  # @since 0.1.5
5
7
  class Rational
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: false
2
+
1
3
  # Base class for the namespace. Provides a constructor DSL.
2
- #
4
+ #
3
5
  # @author Julian Fiander
4
6
  # @since 0.1.5
5
7
  class USPSFlags
@@ -8,27 +10,22 @@ class USPSFlags
8
10
  require 'mini_magick'
9
11
  require 'rational'
10
12
 
11
- require 'usps_flags/config'
12
- require 'usps_flags/helpers'
13
- require 'usps_flags/core'
14
- require 'usps_flags/generate'
15
- require 'usps_flags/errors'
13
+ %w[config helpers core generate errors].each do |d|
14
+ require "usps_flags/#{d}"
15
+ end
16
+
17
+ %w[builders spec_arrows].each do |d|
18
+ require "usps_flags/helpers/#{d}"
19
+ end
16
20
 
17
- # Dir['./lib/usps_flags/core/**'].map { |d| d.split("/").last.split(".rb").first }
18
- %w[anchor binoculars ensign field footer headers lighthouse pennant star trident tridents trident_spec trumpet us wheel].each do |d|
21
+ %w[icons ensign field footer headers pennant tridents trident_specs trident_spec us wheel].each do |d|
19
22
  require "usps_flags/core/#{d}"
20
23
  end
21
24
 
22
- # Dir['./lib/usps_flags/generate/**'].map { |d| d.split("/").last.split(".rb").first }
23
25
  %w[flag].each do |d|
24
26
  require "usps_flags/generate/#{d}"
25
27
  end
26
28
 
27
- # Dir['./lib/usps_flags/helpers/**'].map { |d| d.split("/").last.split(".rb").first }
28
- %w[builders spec_arrows].each do |d|
29
- require "usps_flags/helpers/#{d}"
30
- end
31
-
32
29
  class << self
33
30
  attr_accessor :configuration
34
31
  end
@@ -126,7 +123,7 @@ class USPSFlags
126
123
  # @return [String] Returns the SVG file output path, or the svg data if no path was specified.
127
124
  def svg
128
125
  svg = USPSFlags::Generate.svg(self.type, outfile: self.svg_file, scale: self.scale, field: self.field)
129
- (self.svg_file.nil? || self.svg_file == "") ? svg : self.svg_file
126
+ (self.svg_file.nil? || self.svg_file == '') ? svg : self.svg_file
130
127
  end
131
128
 
132
129
  # Generates the constructed file as PNG.
@@ -135,9 +132,10 @@ class USPSFlags
135
132
  #
136
133
  # @return [String] Returns the SVG file output path.
137
134
  def png
138
- raise USPSFlags::Errors::PNGGenerationError, "A path must be set with png_file." if self.png_file.nil?
135
+ raise USPSFlags::Errors::PNGGenerationError, 'A path must be set with png_file.' if self.png_file.nil?
136
+
139
137
  svg_file_storage = self.svg_file
140
- self.svg_file = ""
138
+ self.svg_file = ''
141
139
  USPSFlags::Generate.png(self.svg, outfile: self.png_file, trim: self.trim)
142
140
  self.svg_file = svg_file_storage
143
141
  self.png_file
@@ -1,18 +1,20 @@
1
+ # frozen_string_literal: false
2
+
1
3
  # Container class for configuration values.
2
4
  class USPSFlags::Config
3
- BLUE ||= "#012169"
4
- RED ||= "#E4002B"
5
- GOLD ||= "#FFBF3F"
6
- OLD_GLORY_BLUE ||= "#041E42"
7
- OLD_GLORY_RED ||= "#BF0D3E"
5
+ BLUE ||= '#012169'
6
+ RED ||= '#E4002B'
7
+ GOLD ||= '#FFBF3F'
8
+ OLD_GLORY_BLUE ||= '#041E42'
9
+ OLD_GLORY_RED ||= '#BF0D3E'
8
10
 
9
11
  # Base measurements for most flags, before scaling
10
12
  BASE_FLY ||= 3072
11
- BASE_HOIST ||= BASE_FLY*2/3
13
+ BASE_HOIST ||= BASE_FLY * 2 / 3
12
14
  FRACTION_SCALE ||= 85
13
15
 
14
16
  attr_accessor :flags_dir, :clear
15
-
17
+
16
18
  # Configuration constructor
17
19
  #
18
20
  # @param [String] flag_dir The path to the flags directory.
@@ -28,39 +30,39 @@ class USPSFlags::Config
28
30
  #
29
31
  # @return [Hash] RThe configuration values for tridents.
30
32
  def trident
31
- center_point_height = USPSFlags::Config::BASE_FLY/48*23/8
32
- side_point_height = USPSFlags::Config::BASE_FLY/48*21/8
33
- bar_width = USPSFlags::Config::BASE_FLY/48*5/4
33
+ center_point_height = USPSFlags::Config::BASE_FLY / 48 * 23 / 8
34
+ side_point_height = USPSFlags::Config::BASE_FLY / 48 * 21 / 8
35
+ bar_width = USPSFlags::Config::BASE_FLY / 48 * 5 / 4
34
36
  {
35
37
  height: trident_heights,
36
38
 
37
- center_point: BASE_FLY/2,
39
+ center_point: BASE_FLY / 2,
38
40
 
39
- width: USPSFlags::Config::BASE_FLY*5/32,
41
+ width: USPSFlags::Config::BASE_FLY * 5 / 32,
40
42
 
41
43
  bar_width: bar_width,
42
44
 
43
45
  center_point_height: center_point_height,
44
46
  side_point_height: side_point_height,
45
47
 
46
- main_point_barb: USPSFlags::Config::BASE_HOIST/82,
48
+ main_point_barb: USPSFlags::Config::BASE_HOIST / 82,
47
49
 
48
- crossbar_from_top: USPSFlags::Config::BASE_HOIST/4 + bar_width/5,
50
+ crossbar_from_top: USPSFlags::Config::BASE_HOIST / 4 + bar_width / 5,
49
51
 
50
- side_spike_height: USPSFlags::Config::BASE_HOIST/4-side_point_height-bar_width*3/5,
52
+ side_spike_height: USPSFlags::Config::BASE_HOIST / 4 - side_point_height - bar_width * 3 / 5,
51
53
 
52
- hash_width: USPSFlags::Config::BASE_FLY*47/528,
54
+ hash_width: USPSFlags::Config::BASE_FLY * 47 / 528,
53
55
 
54
- delta_height: USPSFlags::Config::BASE_FLY*33/240,
55
- delta_gap_height: USPSFlags::Config::BASE_FLY/16,
56
- delta_gap_width: bar_width*5/4,
57
- delta_width: USPSFlags::Config::BASE_FLY*43/768,
58
- delta_from_bottom: USPSFlags::Config::BASE_HOIST*10/64,
56
+ delta_height: USPSFlags::Config::BASE_FLY * 33 / 240,
57
+ delta_gap_height: USPSFlags::Config::BASE_FLY / 16,
58
+ delta_gap_width: bar_width * 5 / 4,
59
+ delta_width: USPSFlags::Config::BASE_FLY * 43 / 768,
60
+ delta_from_bottom: USPSFlags::Config::BASE_HOIST * 10 / 64,
59
61
  delta_gap_scale: 0.40,
60
- delta_gap_x: USPSFlags::Config::BASE_HOIST*144/128,
61
- delta_gap_y: USPSFlags::Config::BASE_HOIST*221/256,
62
+ delta_gap_x: USPSFlags::Config::BASE_HOIST * 144 / 128,
63
+ delta_gap_y: USPSFlags::Config::BASE_HOIST * 221 / 256,
62
64
 
63
- circle_height_adj: USPSFlags::Config::BASE_FLY/800
65
+ circle_height_adj: USPSFlags::Config::BASE_FLY / 800
64
66
  }
65
67
  end
66
68
 
@@ -69,10 +71,10 @@ class USPSFlags::Config
69
71
  # @return [Hash] The height values for tridents.
70
72
  def trident_heights
71
73
  {
72
- s: USPSFlags::Config::BASE_HOIST/2,
73
- d: USPSFlags::Config::BASE_HOIST*5/8,
74
- stf: USPSFlags::Config::BASE_HOIST*3/4,
75
- n: USPSFlags::Config::BASE_HOIST*3/4
74
+ s: USPSFlags::Config::BASE_HOIST / 2,
75
+ d: USPSFlags::Config::BASE_HOIST * 5 / 8,
76
+ stf: USPSFlags::Config::BASE_HOIST * 3 / 4,
77
+ n: USPSFlags::Config::BASE_HOIST * 3 / 4
76
78
  }
77
79
  end
78
80
 
@@ -87,7 +89,8 @@ class USPSFlags::Config
87
89
  end
88
90
  end
89
91
 
90
- private
92
+ private
93
+
91
94
  def get_defaults
92
95
  @flags_dir = if defined?(::Rails)
93
96
  "#{::Rails.root}/app/assets/images/usps-flags"
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: false
2
+
1
3
  # Controller class for the core SVG data.
2
4
  #
3
5
  # These methods should never need to be called directly.
4
6
  # @private
5
7
  class USPSFlags::Core
6
- def self.trident_spec(fly: 24, unit: "in", scaled_border: false)
8
+ def self.trident_spec(fly: 24, unit: 'in', scaled_border: false)
7
9
  USPSFlags::Core::TridentSpec.new(fly: fly, unit: unit, scaled_border: scaled_border).svg
8
10
  end
9
11
 
10
- def self.headers(width: nil, height: nil, pennant: false, scale: nil, title: "USPS Flag")
12
+ def self.headers(width: nil, height: nil, pennant: false, scale: nil, title: 'USPS Flag')
11
13
  USPSFlags::Core::Headers.new(width: width, height: height, pennant: pennant, scale: scale, title: title).svg
12
14
  end
13
15
 
@@ -20,26 +22,26 @@ class USPSFlags::Core
20
22
  end
21
23
 
22
24
  def self.trident(type, color: :blue, field_color: nil)
23
- USPSFlags::Core::Trident.new(type, color: color, field_color: field_color).svg
25
+ USPSFlags::Core::Icons::Trident.new(type, color: color, field_color: field_color).svg
24
26
  end
25
27
 
26
28
  def self.anchor(color = :red)
27
- USPSFlags::Core::Anchor.new(color: color).svg
29
+ USPSFlags::Core::Icons::Anchor.new(color: color).svg
28
30
  end
29
31
 
30
32
  def self.lighthouse
31
- USPSFlags::Core::Lighthouse.new.svg
33
+ USPSFlags::Core::Icons::Lighthouse.new.svg
32
34
  end
33
35
 
34
36
  def self.binoculars(type = :d)
35
- USPSFlags::Core::Binoculars.new(type: type).svg
37
+ USPSFlags::Core::Icons::Binoculars.new(type: type).svg
36
38
  end
37
39
 
38
40
  def self.trumpet(type = :s)
39
- USPSFlags::Core::Trumpet.new(type: type).svg
41
+ USPSFlags::Core::Icons::Trumpet.new(type: type).svg
40
42
  end
41
43
 
42
- def self.pennant(type = "cruise")
44
+ def self.pennant(type = 'cruise')
43
45
  USPSFlags::Core::Pennant.new(type: type).svg
44
46
  end
45
47
 
@@ -48,7 +50,7 @@ class USPSFlags::Core
48
50
  end
49
51
 
50
52
  def self.star
51
- USPSFlags::Core::Star.new.svg
53
+ USPSFlags::Core::Icons::Star.new.svg
52
54
  end
53
55
 
54
56
  def self.wheel
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: false
2
+
1
3
  # Core SVG data for the USPS Ensign.
2
4
  #
3
5
  # This class should never need to be called directly.
@@ -9,7 +11,7 @@ class USPSFlags::Core::Ensign
9
11
  <g transform="scale(0.3675)">
10
12
  <g transform="translate(1200, 600)">
11
13
  <g transform="rotate(-45, 693, 1500)">
12
- #{USPSFlags::Core::Anchor.new(color: :white).svg}
14
+ #{USPSFlags::Core::Icons::Anchor.new(color: :white).svg}
13
15
  </g>
14
16
  </g>
15
17
  </g>
@@ -17,29 +19,30 @@ class USPSFlags::Core::Ensign
17
19
  SVG
18
20
  end
19
21
 
20
- private
22
+ private
23
+
21
24
  def stripes
22
25
  <<~SVG
23
- <rect x="0" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
24
- <rect x="#{USPSFlags::Config::BASE_FLY*1/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
25
- <rect x="#{USPSFlags::Config::BASE_FLY*2/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
26
- <rect x="#{USPSFlags::Config::BASE_FLY*3/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
27
- <rect x="#{USPSFlags::Config::BASE_FLY*4/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
28
- <rect x="#{USPSFlags::Config::BASE_FLY*5/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
29
- <rect x="#{USPSFlags::Config::BASE_FLY*6/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
30
- <rect x="#{USPSFlags::Config::BASE_FLY*7/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
31
- <rect x="#{USPSFlags::Config::BASE_FLY*8/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
32
- <rect x="#{USPSFlags::Config::BASE_FLY*9/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
33
- <rect x="#{USPSFlags::Config::BASE_FLY*10/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
34
- <rect x="#{USPSFlags::Config::BASE_FLY*11/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
35
- <rect x="#{USPSFlags::Config::BASE_FLY*12/13}" y="0" width="#{USPSFlags::Config::BASE_FLY/13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
36
- <rect x="0" y="0" width="#{USPSFlags::Config::BASE_FLY*6/13}" height="1000" fill="#{USPSFlags::Config::RED}" />
26
+ <rect x="0" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
27
+ <rect x="#{USPSFlags::Config::BASE_FLY * 1 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
28
+ <rect x="#{USPSFlags::Config::BASE_FLY * 2 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
29
+ <rect x="#{USPSFlags::Config::BASE_FLY * 3 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
30
+ <rect x="#{USPSFlags::Config::BASE_FLY * 4 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
31
+ <rect x="#{USPSFlags::Config::BASE_FLY * 5 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
32
+ <rect x="#{USPSFlags::Config::BASE_FLY * 6 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
33
+ <rect x="#{USPSFlags::Config::BASE_FLY * 7 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
34
+ <rect x="#{USPSFlags::Config::BASE_FLY * 8 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
35
+ <rect x="#{USPSFlags::Config::BASE_FLY * 9 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
36
+ <rect x="#{USPSFlags::Config::BASE_FLY * 10 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
37
+ <rect x="#{USPSFlags::Config::BASE_FLY * 11 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#FFFFFF" />
38
+ <rect x="#{USPSFlags::Config::BASE_FLY * 12 / 13}" y="0" width="#{USPSFlags::Config::BASE_FLY / 13}" height="#{USPSFlags::Config::BASE_HOIST}" fill="#{USPSFlags::Config::BLUE}" />
39
+ <rect x="0" y="0" width="#{USPSFlags::Config::BASE_FLY * 6 / 13}" height="1000" fill="#{USPSFlags::Config::RED}" />
37
40
  SVG
38
41
  # <circle cx="#{USPSFlags::Config::BASE_FLY*3/13}" cy="#{USPSFlags::Config::BASE_HOIST/4}" r="#{USPSFlags::Config::BASE_FLY*6/13*5/16}" fill="#FFFFFF" fill-opacity="0.6" />
39
42
  end
40
43
 
41
44
  def star_circle
42
- svg = ""
45
+ svg = ''
43
46
  (0..13).each do |i|
44
47
  rotation = i * (360.0 / 13)
45
48
  svg << <<~SVG
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: false
2
+
1
3
  # Core SVG data for the flag fields.
2
4
  #
3
5
  # This class should never need to be called directly.
@@ -9,21 +11,21 @@ class USPSFlags::Core::Field
9
11
  case color
10
12
  when :white
11
13
  border = true
12
- @color_code = "#FFFFFF"
14
+ @color_code = '#FFFFFF'
13
15
  @past_mid_color = USPSFlags::Config::BLUE
14
16
  @past_tail_color = USPSFlags::Config::RED
15
17
  when :red
16
18
  border = false
17
19
  @color_code = USPSFlags::Config::RED
18
- @past_mid_color = "#FFFFFF"
20
+ @past_mid_color = '#FFFFFF'
19
21
  @past_tail_color = USPSFlags::Config::BLUE
20
22
  when :blue
21
23
  border = false
22
24
  @color_code = USPSFlags::Config::BLUE
23
- @past_mid_color = "#FFFFFF"
25
+ @past_mid_color = '#FFFFFF'
24
26
  @past_tail_color = USPSFlags::Config::RED
25
27
  end
26
- @border_svg = border ? "stroke=\"#000000\" stroke-width=\"#{USPSFlags::Config::BASE_FLY/600}\" " : ""
28
+ @border_svg = border ? "stroke=\"#000000\" stroke-width=\"#{USPSFlags::Config::BASE_FLY / 600}\" " : ''
27
29
 
28
30
  @hoist = (@fly * 2) / 3
29
31
  end
@@ -39,7 +41,8 @@ class USPSFlags::Core::Field
39
41
  end
40
42
  end
41
43
 
42
- private
44
+ private
45
+
43
46
  def regular_field
44
47
  <<~SVG
45
48
  <path d="M 0 0
@@ -53,40 +56,40 @@ class USPSFlags::Core::Field
53
56
 
54
57
  def swallowtail_field
55
58
  <<~SVG
56
- <path d="M #{USPSFlags::Config::BASE_FLY/1200} #{USPSFlags::Config::BASE_FLY/1800}
57
- l #{@fly} #{@hoist/6}
58
- l -#{@fly/5} #{@hoist/3}
59
- l #{@fly/5} #{@hoist/3}
60
- l -#{@fly} #{@hoist/6} z
61
- " fill="#FFFFFF" stroke="#000000" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
59
+ <path d="M #{USPSFlags::Config::BASE_FLY / 1200} #{USPSFlags::Config::BASE_FLY / 1800}
60
+ l #{@fly} #{@hoist / 6}
61
+ l -#{@fly / 5} #{@hoist / 3}
62
+ l #{@fly / 5} #{@hoist / 3}
63
+ l -#{@fly} #{@hoist / 6} z
64
+ " fill="#FFFFFF" stroke="#000000" stroke-width="#{USPSFlags::Config::BASE_FLY / 600}" />
62
65
  SVG
63
66
  end
64
67
 
65
68
  def past_field
66
69
  <<~SVG
67
- <g transform="translate(#{USPSFlags::Config::BASE_FLY/1200}, #{USPSFlags::Config::BASE_FLY/1800})">
68
- <path d="M 0 #{USPSFlags::Config::BASE_FLY/600}
69
- l #{@fly/2} #{@hoist/12}
70
- l 0 #{@hoist*10/12}
71
- l -#{@fly/2} #{@hoist/12}
70
+ <g transform="translate(#{USPSFlags::Config::BASE_FLY / 1200}, #{USPSFlags::Config::BASE_FLY / 1800})">
71
+ <path d="M 0 #{USPSFlags::Config::BASE_FLY / 600}
72
+ l #{@fly / 2} #{@hoist / 12}
73
+ l 0 #{@hoist * 10 / 12}
74
+ l -#{@fly / 2} #{@hoist / 12}
72
75
  " fill="#{@color_code}" />
73
- <path d="M #{@fly/2} #{@hoist/12}
74
- l #{@fly/4} #{@hoist/24}
75
- l 0 #{@hoist*9/12}
76
- l -#{@fly/4} #{@hoist/24}
76
+ <path d="M #{@fly / 2} #{@hoist / 12}
77
+ l #{@fly / 4} #{@hoist / 24}
78
+ l 0 #{@hoist * 9 / 12}
79
+ l -#{@fly / 4} #{@hoist / 24}
77
80
  " fill="#{@past_mid_color}" />
78
- <path d="M #{@fly*3/4} #{@hoist*3/24}
79
- l #{@fly/4} #{@hoist/24}
80
- l -#{@fly/5} #{@hoist/3}
81
- l #{@fly/5} #{@hoist/3}
82
- l -#{@fly/4} #{@hoist/24}
81
+ <path d="M #{@fly * 3 / 4} #{@hoist * 3 / 24}
82
+ l #{@fly / 4} #{@hoist / 24}
83
+ l -#{@fly / 5} #{@hoist / 3}
84
+ l #{@fly / 5} #{@hoist / 3}
85
+ l -#{@fly / 4} #{@hoist / 24}
83
86
  " fill="#{@past_tail_color}" />
84
87
  <path d="M 0 0
85
- l #{@fly} #{@hoist/6}
86
- l -#{@fly/5} #{@hoist/3}
87
- l #{@fly/5} #{@hoist/3}
88
- l -#{@fly} #{@hoist/6} z
89
- " fill="none" stroke="#000000" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
88
+ l #{@fly} #{@hoist / 6}
89
+ l -#{@fly / 5} #{@hoist / 3}
90
+ l #{@fly / 5} #{@hoist / 3}
91
+ l -#{@fly} #{@hoist / 6} z
92
+ " fill="none" stroke="#000000" stroke-width="#{USPSFlags::Config::BASE_FLY / 600}" />
90
93
  </g>
91
94
  SVG
92
95
  end