usps_flags 0.1.26 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +3 -1
- data/Gemfile.lock +1 -1
- data/README.md +44 -20
- data/lib/usps_flags/core/field.rb +6 -6
- data/lib/usps_flags/core/footer.rb +2 -2
- data/lib/usps_flags/core/pennant.rb +14 -14
- data/lib/usps_flags/core/trident.rb +145 -132
- data/lib/usps_flags/core/trident_spec.rb +71 -49
- data/lib/usps_flags/core/tridents.rb +61 -0
- data/lib/usps_flags/core/trumpet.rb +11 -1
- data/lib/usps_flags/generate/flag.rb +115 -0
- data/lib/usps_flags/generate.rb +45 -221
- data/lib/usps_flags/helpers/builders.rb +71 -0
- data/lib/usps_flags/helpers/spec_arrows.rb +81 -0
- data/lib/usps_flags/helpers.rb +32 -147
- data/lib/usps_flags.rb +12 -2
- data/spec/usps_flags/generate_spec.rb +37 -5
- data/spec/usps_flags/helpers_spec.rb +4 -1
- data/spec/usps_flags_spec.rb +101 -126
- data/usps_flags.gemspec +2 -2
- data.tar.gz.sig +0 -0
- metadata +6 -2
- metadata.gz.sig +0 -0
data/lib/usps_flags/helpers.rb
CHANGED
@@ -62,6 +62,14 @@ class USPSFlags::Helpers
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
# Gets the maximum length among valid flags.
|
66
|
+
#
|
67
|
+
# This is used USPSFlags::Generate, and should never need to be called directly.
|
68
|
+
# @private
|
69
|
+
def max_flag_name_length
|
70
|
+
valid_flags(:all).map(&:length).max
|
71
|
+
end
|
72
|
+
|
65
73
|
# Gets the generation details for the given rank.
|
66
74
|
#
|
67
75
|
# This is used USPSFlags::Generate, and should never need to be called directly.
|
@@ -76,144 +84,6 @@ class USPSFlags::Helpers
|
|
76
84
|
}
|
77
85
|
end
|
78
86
|
|
79
|
-
# Displays an overlay grid with regularly spaced locator markers.
|
80
|
-
#
|
81
|
-
# This is useful for adjusting or creating new SVG data generators, but should not otherwise need to be called.
|
82
|
-
# @private
|
83
|
-
def grid(width: USPSFlags::Config::BASE_FLY, height: USPSFlags::Config::BASE_HOIST)
|
84
|
-
<<~SVG
|
85
|
-
<circle cx="0" cy="0" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
|
86
|
-
<circle cx="#{width}" cy="0" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
|
87
|
-
<circle cx="#{width}" cy="#{height}" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
|
88
|
-
<circle cx="0" cy="#{height}" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
|
89
|
-
|
90
|
-
<circle cx="#{width*1/4}" cy="#{height/2}" r="#{width/60}" fill="#999999" fill-opacity="0.4" />
|
91
|
-
<circle cx="#{width*3/4}" cy="#{height/2}" r="#{width/60}" fill="#999999" fill-opacity="0.4" />
|
92
|
-
|
93
|
-
<circle cx="#{width/2}" cy="#{height*1/4}" r="#{width/60}" fill="#999999" fill-opacity="0.4" />
|
94
|
-
<circle cx="#{width/2}" cy="#{height/2}" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
|
95
|
-
<circle cx="#{width/2}" cy="#{height/2}" r="#{width/75}" fill="#CCCCCC" fill-opacity="0.4" />
|
96
|
-
<circle cx="#{width/2}" cy="#{height/2}" r="#{width/100}" fill="#000000" fill-opacity="0.4" />
|
97
|
-
<circle cx="#{width/2}" cy="#{height*3/4}" r="#{width/60}" fill="#999999" fill-opacity="0.4" />
|
98
|
-
|
99
|
-
<line x1="0" y1="0" x2="#{width}" y2="0" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
100
|
-
<line x1="0" y1="#{height*1/4}" x2="#{width}" y2="#{height*1/4}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
101
|
-
<line x1="0" y1="#{height/2}" x2="#{width}" y2="#{height/2}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
102
|
-
<line x1="0" y1="#{height*3/4}" x2="#{width}" y2="#{height*3/4}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
103
|
-
<line x1="0" y1="#{height}" x2="#{width}" y2="#{height}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
104
|
-
|
105
|
-
<line y1="0" x1="0" y2="#{height}" x2="0" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
106
|
-
<line y1="0" x1="#{width*1/6}" y2="#{height}" x2="#{width*1/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
107
|
-
<line y1="0" x1="#{width*2/6}" y2="#{height}" x2="#{width*2/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
108
|
-
<line y1="0" x1="#{width*3/6}" y2="#{height}" x2="#{width*3/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
109
|
-
<line y1="0" x1="#{width*4/6}" y2="#{height}" x2="#{width*4/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
110
|
-
<line y1="0" x1="#{width*5/6}" y2="#{height}" x2="#{width*5/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
111
|
-
<line y1="0" x1="#{width}" y2="#{height}" x2="#{width}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
112
|
-
|
113
|
-
<line x1="#{width/2}" y1="#{height*1/4}" x2="#{width*3/4}" y2="#{height/2}" stroke="#999999" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
114
|
-
<line x1="#{width*3/4}" y1="#{height/2}" x2="#{width/2}" y2="#{height*3/4}" stroke="#999999" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
115
|
-
<line x1="#{width/2}" y1="#{height*3/4}" x2="#{width*1/4}" y2="#{height/2}" stroke="#999999" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
116
|
-
<line x1="#{width*1/4}" y1="#{height/2}" x2="#{width/2}" y2="#{height*1/4}" stroke="#999999" stroke-width="#{width/600}" stroke-opacity="0.5" />
|
117
|
-
|
118
|
-
SVG
|
119
|
-
end
|
120
|
-
|
121
|
-
# Displays an overlay indicator of concentric circles and radiating lines.
|
122
|
-
#
|
123
|
-
# This is useful for adjusting or creating new SVG data generators, but should not otherwise need to be called.
|
124
|
-
# @private
|
125
|
-
def locator
|
126
|
-
<<~SVG
|
127
|
-
<circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY*2}" fill="#000000" fill-opacity="0.4" />
|
128
|
-
<circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY}" fill="#333333" fill-opacity="0.4" />
|
129
|
-
<circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY/2}" fill="#666666" fill-opacity="0.4" />
|
130
|
-
<circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY/4}" fill="#999999" fill-opacity="0.4" />
|
131
|
-
<circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY/8}" fill="#CCCCCC" fill-opacity="0.4" />
|
132
|
-
<circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY/16}" fill="#FFFFFF" fill-opacity="0.4" />
|
133
|
-
|
134
|
-
<line x1="-#{USPSFlags::Config::BASE_FLY}" y1="-#{USPSFlags::Config::BASE_HOIST}" x2="#{USPSFlags::Config::BASE_FLY}" y2="#{USPSFlags::Config::BASE_HOIST}" stroke="#FFFFFF" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
|
135
|
-
<line x1="-#{USPSFlags::Config::BASE_FLY}" y1="#{USPSFlags::Config::BASE_HOIST}" x2="#{USPSFlags::Config::BASE_FLY}" y2="-#{USPSFlags::Config::BASE_HOIST}" stroke="#FFFFFF" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
|
136
|
-
<line x1="0" y1="#{USPSFlags::Config::BASE_HOIST}" x2="0" y2="-#{USPSFlags::Config::BASE_HOIST}" stroke="#FFFFFF" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
|
137
|
-
<line x1="-#{USPSFlags::Config::BASE_FLY}" y1="0" x2="#{USPSFlags::Config::BASE_FLY}" y2="0" stroke="#FFFFFF" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
|
138
|
-
|
139
|
-
<rect x="0" y="0" width="#{USPSFlags::Config::BASE_FLY/30}" height="#{USPSFlags::Config::BASE_FLY/30}" fill="#333333" fill-opacity="0.6" />
|
140
|
-
SVG
|
141
|
-
end
|
142
|
-
|
143
|
-
# Creates a vertical arrow for the trident spec sheet.
|
144
|
-
#
|
145
|
-
# This is used USPSFlags::Core.trident_spec, and should never need to be called directly.
|
146
|
-
# @private
|
147
|
-
def v_arrow(x, top, bottom, pointer_top = nil, pointer_bottom = nil, label: nil, label_offset: (USPSFlags::Config::BASE_FLY/120), label_offset_y: 0, label_align: "left", color: "#CCCCCC", stroke_width: (USPSFlags::Config::BASE_FLY/600), stroke_dash: "10, 10", font_size: (USPSFlags::Config::BASE_FLY/60), arrow_size: (USPSFlags::Config::BASE_FLY/120), fly: USPSFlags::Config::BASE_FLY, unit: nil)
|
148
|
-
label = bottom - top if label.nil?
|
149
|
-
label = label.to_i if label - label.to_i == 0
|
150
|
-
label = Rational(label) * fly / USPSFlags::Config::BASE_FLY
|
151
|
-
if label == label.to_i
|
152
|
-
label = label.to_i
|
153
|
-
label_fraction = ""
|
154
|
-
else
|
155
|
-
label, label_fraction = label.to_simplified_a
|
156
|
-
end
|
157
|
-
svg = ""
|
158
|
-
unless pointer_top.nil?
|
159
|
-
svg << <<~SVG
|
160
|
-
<line x1="#{x}" y1="#{top}" x2="#{pointer_top}" y2="#{top}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
|
161
|
-
SVG
|
162
|
-
end
|
163
|
-
unless pointer_bottom.nil?
|
164
|
-
svg << <<~SVG
|
165
|
-
<line x1="#{x}" y1="#{bottom}" x2="#{pointer_bottom}" y2="#{bottom}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
|
166
|
-
SVG
|
167
|
-
end
|
168
|
-
|
169
|
-
svg << <<~SVG
|
170
|
-
<path d="M#{x} #{top} l #{arrow_size} #{arrow_size} M#{x} #{top} l -#{arrow_size} #{arrow_size} M#{x} #{top} l 0 #{bottom - top} l #{arrow_size} -#{arrow_size} M#{x} #{bottom} l -#{arrow_size} -#{arrow_size}" stroke="#{color}" stroke-width="#{stroke_width}" fill="none" />
|
171
|
-
<g>
|
172
|
-
<style><![CDATA[tspan{font-size: #{USPSFlags::Config::FRACTION_SCALE}%;}]]></style>
|
173
|
-
<text x="#{x + label_offset}" y="#{(top+bottom)/2+(USPSFlags::Config::BASE_HOIST/150)+label_offset_y}" font-family="sans-serif" font-size="#{font_size}px" fill="#041E42" text-anchor="#{label_align}">#{label} <tspan>#{label_fraction}</tspan> #{unit}</text>
|
174
|
-
</g>
|
175
|
-
SVG
|
176
|
-
|
177
|
-
svg
|
178
|
-
end
|
179
|
-
|
180
|
-
# Creates a horizontal arrow for the trident spec sheet.
|
181
|
-
#
|
182
|
-
# This is used USPSFlags::Core.trident_spec, and should never need to be called directly.
|
183
|
-
# @private
|
184
|
-
def h_arrow(y, left, right, pointer_left = nil, pointer_right = nil, label: nil, label_offset: (USPSFlags::Config::BASE_FLY/45), label_offset_x: 0, label_align: "middle", color: "#CCCCCC", stroke_width: (USPSFlags::Config::BASE_FLY/600), stroke_dash: "10, 10", font_size: (USPSFlags::Config::BASE_FLY/60), arrow_size: (USPSFlags::Config::BASE_FLY/120), fly: USPSFlags::Config::BASE_FLY, unit: nil)
|
185
|
-
label = right - left if label.nil?
|
186
|
-
label = label.to_i if label - label.to_i == 0
|
187
|
-
label = Rational(label) * fly / USPSFlags::Config::BASE_FLY
|
188
|
-
if label == label.to_i
|
189
|
-
label = label.to_i
|
190
|
-
label_fraction = ""
|
191
|
-
else
|
192
|
-
label, label_fraction = label.to_simplified_a
|
193
|
-
end
|
194
|
-
svg = ""
|
195
|
-
unless pointer_left.nil?
|
196
|
-
svg << <<~SVG
|
197
|
-
<line x1="#{left}" y1="#{y}" x2="#{left}" y2="#{pointer_left}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
|
198
|
-
SVG
|
199
|
-
end
|
200
|
-
unless pointer_right.nil?
|
201
|
-
svg << <<~SVG
|
202
|
-
<line x1="#{right}" y1="#{y}" x2="#{right}" y2="#{pointer_right}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
|
203
|
-
SVG
|
204
|
-
end
|
205
|
-
|
206
|
-
svg << <<~SVG
|
207
|
-
<path d="M#{left} #{y} l #{arrow_size} #{arrow_size} M#{left} #{y} l #{arrow_size} -#{arrow_size} M#{left} #{y} l #{right - left} 0 l -#{arrow_size} -#{arrow_size} M#{right} #{y} l -#{arrow_size} #{arrow_size}" stroke="#{color}" stroke-width="#{stroke_width}" fill="none" />
|
208
|
-
<g>
|
209
|
-
<style><![CDATA[tspan{font-size: #{USPSFlags::Config::FRACTION_SCALE}%;}]]></style>
|
210
|
-
<text x="#{(left+right)/2+label_offset_x}" y="#{y + label_offset}" font-family="sans-serif" font-size="#{font_size}px" fill="#041E42" text-anchor="#{label_align}">#{label} <tspan>#{label_fraction}</tspan> #{unit}</text>
|
211
|
-
</g>
|
212
|
-
SVG
|
213
|
-
|
214
|
-
svg
|
215
|
-
end
|
216
|
-
|
217
87
|
# Resizes and saves a PNG image.
|
218
88
|
#
|
219
89
|
# This is used USPSFlags::Generate, and should never need to be called directly.
|
@@ -279,6 +149,21 @@ class USPSFlags::Helpers
|
|
279
149
|
log_file.close if log_file.is_a?(File)
|
280
150
|
end
|
281
151
|
|
152
|
+
# Prints output to the console or saves to a file, then returns the generated data.
|
153
|
+
#
|
154
|
+
# This should never need to be called directly.
|
155
|
+
# @private
|
156
|
+
def output(svg, outfile: nil)
|
157
|
+
if outfile.nil?
|
158
|
+
puts svg, "\n"
|
159
|
+
elsif outfile != ""
|
160
|
+
f = ::File.new(outfile, "w+")
|
161
|
+
f.write(svg)
|
162
|
+
f.close
|
163
|
+
end
|
164
|
+
svg
|
165
|
+
end
|
166
|
+
|
282
167
|
private
|
283
168
|
def flag_style(rank)
|
284
169
|
if valid_flags(:past).include?(rank)
|
@@ -329,15 +214,7 @@ class USPSFlags::Helpers
|
|
329
214
|
end
|
330
215
|
|
331
216
|
def flag_type(rank)
|
332
|
-
if
|
333
|
-
:s
|
334
|
-
elsif valid_flags(:district).include?(rank)
|
335
|
-
:d
|
336
|
-
elsif rank == "STFC"
|
337
|
-
:stf
|
338
|
-
elsif valid_flags(:national).include?(rank)
|
339
|
-
:n
|
340
|
-
elsif rank == "PORTCAP"
|
217
|
+
if rank == "PORTCAP"
|
341
218
|
:pc
|
342
219
|
elsif rank == "FLEETCAP"
|
343
220
|
:fc
|
@@ -351,6 +228,14 @@ class USPSFlags::Helpers
|
|
351
228
|
:f
|
352
229
|
elsif rank == "NFLT"
|
353
230
|
:f
|
231
|
+
elsif rank == "STFC"
|
232
|
+
:stf
|
233
|
+
elsif valid_flags(:squadron).include?(rank)
|
234
|
+
:s
|
235
|
+
elsif valid_flags(:district).include?(rank)
|
236
|
+
:d
|
237
|
+
elsif valid_flags(:national).include?(rank)
|
238
|
+
:n
|
354
239
|
end
|
355
240
|
end
|
356
241
|
end
|
data/lib/usps_flags.rb
CHANGED
@@ -14,10 +14,20 @@ class USPSFlags
|
|
14
14
|
require 'usps_flags/generate'
|
15
15
|
|
16
16
|
# Dir['./lib/usps_flags/core/**'].map { |d| d.split("/").last.split(".rb").first }
|
17
|
-
%w[anchor binoculars ensign field footer headers lighthouse pennant star trident trident_spec trumpet us wheel].each do |d|
|
17
|
+
%w[anchor binoculars ensign field footer headers lighthouse pennant star trident tridents trident_spec trumpet us wheel].each do |d|
|
18
18
|
require "usps_flags/core/#{d}"
|
19
19
|
end
|
20
20
|
|
21
|
+
# Dir['./lib/usps_flags/generate/**'].map { |d| d.split("/").last.split(".rb").first }
|
22
|
+
%w[flag].each do |d|
|
23
|
+
require "usps_flags/generate/#{d}"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Dir['./lib/usps_flags/helpers/**'].map { |d| d.split("/").last.split(".rb").first }
|
27
|
+
%w[builders spec_arrows].each do |d|
|
28
|
+
require "usps_flags/helpers/#{d}"
|
29
|
+
end
|
30
|
+
|
21
31
|
# Constructor for individual flags.
|
22
32
|
#
|
23
33
|
# @example Generate insignia at default scale for Lt/C
|
@@ -126,7 +136,7 @@ class USPSFlags
|
|
126
136
|
#
|
127
137
|
# @return [String] Returns the SVG file output path, or the svg data if no path was specified.
|
128
138
|
def svg
|
129
|
-
svg = USPSFlags::Generate.
|
139
|
+
svg = USPSFlags::Generate.svg(self.type, outfile: self.svg_file, scale: self.scale, field: self.field)
|
130
140
|
(self.svg_file.nil? || self.svg_file == "") ? svg : self.svg_file
|
131
141
|
end
|
132
142
|
|
@@ -2,11 +2,13 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe USPSFlags::Generate do
|
4
4
|
it "should generate a flag with the correct size" do
|
5
|
-
expect(USPSFlags::Generate.
|
5
|
+
expect(USPSFlags::Generate.svg("LtC", outfile: "")).to include(
|
6
|
+
"width=\"1024pt\" height=\"682pt\" viewBox=\"0 0 3072 2048\""
|
7
|
+
)
|
6
8
|
end
|
7
9
|
|
8
10
|
it "should generate a flag with the correct field" do
|
9
|
-
expect(USPSFlags::Generate.
|
11
|
+
expect(USPSFlags::Generate.svg("LtC", outfile: "")).to include(
|
10
12
|
<<~SVG
|
11
13
|
<path d="M 0 0
|
12
14
|
l 3072 0
|
@@ -19,11 +21,41 @@ describe USPSFlags::Generate do
|
|
19
21
|
end
|
20
22
|
|
21
23
|
it "should generate a flag with the correct starting position" do
|
22
|
-
expect(USPSFlags::Generate.
|
24
|
+
expect(USPSFlags::Generate.svg("LtC", outfile: "")).to include("<path d=\"M 1536 512")
|
23
25
|
end
|
24
26
|
|
25
27
|
it "should generate a flag with the correct trident transformations" do
|
26
|
-
expect(USPSFlags::Generate.
|
27
|
-
expect(USPSFlags::Generate.
|
28
|
+
expect(USPSFlags::Generate.svg("LtC", outfile: "")).to include("<g transform=\"translate(-512)\">")
|
29
|
+
expect(USPSFlags::Generate.svg("LtC", outfile: "")).to include("<g transform=\"translate(512)\">")
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "special flags" do
|
33
|
+
it "should generate PortCap" do
|
34
|
+
expect(USPSFlags::Generate.svg("PortCap", outfile: "")).to include("<title>PORTCAP</title>")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should generate FleetCap" do
|
38
|
+
expect(USPSFlags::Generate.svg("FleetCap", outfile: "")).to include("<title>FLEETCAP</title>")
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should generate DAide" do
|
42
|
+
expect(USPSFlags::Generate.svg("DAide", outfile: "")).to include("<title>DAIDE</title>")
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should generate NAide" do
|
46
|
+
expect(USPSFlags::Generate.svg("NAide", outfile: "")).to include("<title>NAIDE</title>")
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should generate FLt" do
|
50
|
+
expect(USPSFlags::Generate.svg("FLt", outfile: "")).to include("<title>FLT</title>")
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should generate DFLt" do
|
54
|
+
expect(USPSFlags::Generate.svg("DFLt", outfile: "")).to include("<title>DFLT</title>")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should generate NFLt" do
|
58
|
+
expect(USPSFlags::Generate.svg("NFLt", outfile: "")).to include("<title>NFLT</title>")
|
59
|
+
end
|
28
60
|
end
|
29
61
|
end
|
@@ -7,7 +7,10 @@ describe USPSFlags::Helpers do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should return all officer flags but nothing else when given type :officer" do
|
10
|
-
expect(USPSFlags::Helpers.valid_flags(:officer).sort).to eql(%w[
|
10
|
+
expect(USPSFlags::Helpers.valid_flags(:officer).sort).to eql(%w[
|
11
|
+
PLTC PC PORTCAP FLEETCAP LT FLT 1LT LTC CDR PDLTC PDC DLT DAIDE
|
12
|
+
DFLT D1LT DLTC DC PSTFC PRC PVC PCC NAIDE NFLT STFC RC VC CC
|
13
|
+
].sort)
|
11
14
|
end
|
12
15
|
end
|
13
16
|
end
|
data/spec/usps_flags_spec.rb
CHANGED
@@ -1,6 +1,94 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe USPSFlags do
|
4
|
+
before(:all) do
|
5
|
+
@valid_header = <<~SVG
|
6
|
+
<?xml version="1.0" standalone="no"?>
|
7
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
8
|
+
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="614pt" height="409pt" viewBox="0 0 3072 2048" preserveAspectRatio="xMidYMid meet">
|
9
|
+
<title>LTC</title>
|
10
|
+
<metadata>
|
11
|
+
<desc id="created-by">Julian Fiander</desc>
|
12
|
+
SVG
|
13
|
+
|
14
|
+
@valid_body = <<~SVG
|
15
|
+
<desc id="trademark-desc">This image is a registered trademark of United States Power Squadrons.</desc>
|
16
|
+
<desc id="trademark-link">http://www.usps.org/national/itcom/trademark.html</desc>
|
17
|
+
</metadata>
|
18
|
+
<g transform="translate(-512)">
|
19
|
+
<path d="M 1536 512
|
20
|
+
l 80 136
|
21
|
+
l -40 -8
|
22
|
+
l 0 896
|
23
|
+
l -80 0
|
24
|
+
l 0 -896
|
25
|
+
l -40 8
|
26
|
+
l 80 -136
|
27
|
+
" fill="#BF0D3E" />
|
28
|
+
<path d="M 1296 1024
|
29
|
+
l 480 0
|
30
|
+
l 0 80
|
31
|
+
l -480 0
|
32
|
+
l 0 -80
|
33
|
+
" fill="#BF0D3E" />
|
34
|
+
<path d="M 1296 1025
|
35
|
+
l 0 -432
|
36
|
+
l 120 136
|
37
|
+
l -40 0
|
38
|
+
l 0 296
|
39
|
+
" fill="#BF0D3E" />
|
40
|
+
<path d="M 1776 1025
|
41
|
+
l 0 -432
|
42
|
+
l -120 136
|
43
|
+
l 40 0
|
44
|
+
l 0 296
|
45
|
+
" fill="#BF0D3E" />
|
46
|
+
<path d="M 1392 1184
|
47
|
+
l 288 0
|
48
|
+
l 0 80
|
49
|
+
l -288 0
|
50
|
+
l 0 -80
|
51
|
+
" fill="#BF0D3E" />
|
52
|
+
</g>
|
53
|
+
<g transform="translate(512)">
|
54
|
+
<path d="M 1536 512
|
55
|
+
l 80 136
|
56
|
+
l -40 -8
|
57
|
+
l 0 896
|
58
|
+
l -80 0
|
59
|
+
l 0 -896
|
60
|
+
l -40 8
|
61
|
+
l 80 -136
|
62
|
+
" fill="#BF0D3E" />
|
63
|
+
<path d="M 1296 1024
|
64
|
+
l 480 0
|
65
|
+
l 0 80
|
66
|
+
l -480 0
|
67
|
+
l 0 -80
|
68
|
+
" fill="#BF0D3E" />
|
69
|
+
<path d="M 1296 1025
|
70
|
+
l 0 -432
|
71
|
+
l 120 136
|
72
|
+
l -40 0
|
73
|
+
l 0 296
|
74
|
+
" fill="#BF0D3E" />
|
75
|
+
<path d="M 1776 1025
|
76
|
+
l 0 -432
|
77
|
+
l -120 136
|
78
|
+
l 40 0
|
79
|
+
l 0 296
|
80
|
+
" fill="#BF0D3E" />
|
81
|
+
<path d="M 1392 1184
|
82
|
+
l 288 0
|
83
|
+
l 0 80
|
84
|
+
l -288 0
|
85
|
+
l 0 -80
|
86
|
+
" fill="#BF0D3E" />
|
87
|
+
</g>
|
88
|
+
</svg>
|
89
|
+
SVG
|
90
|
+
end
|
91
|
+
|
4
92
|
before(:each) do
|
5
93
|
@flag = USPSFlags.new
|
6
94
|
end
|
@@ -36,134 +124,21 @@ describe USPSFlags do
|
|
36
124
|
expect(@flag.png_file).to eql("/path/to/png/output.png")
|
37
125
|
end
|
38
126
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
127
|
+
describe "as configured" do
|
128
|
+
before(:each) do
|
129
|
+
@flag.type "LtC"
|
130
|
+
@flag.scale 5
|
131
|
+
@flag.svg_file ""
|
132
|
+
@flag.svg
|
133
|
+
end
|
45
134
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
50
|
-
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="614pt" height="409pt" viewBox="0 0 3072 2048" preserveAspectRatio="xMidYMid meet">
|
51
|
-
<title>CDR</title>
|
52
|
-
<metadata>
|
53
|
-
<desc id="created-by">Julian Fiander</desc>
|
54
|
-
SVG
|
55
|
-
)
|
135
|
+
it "should construct and generate a flag with a valid header" do
|
136
|
+
expect(@flag.svg).to include(@valid_header)
|
137
|
+
end
|
56
138
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
<desc id="trademark-link">http://www.usps.org/national/itcom/trademark.html</desc>
|
61
|
-
</metadata>
|
62
|
-
<g transform="translate(-768, 192)">
|
63
|
-
<path d="M 1536 512
|
64
|
-
l 80 136
|
65
|
-
l -40 -8
|
66
|
-
l 0 896
|
67
|
-
l -80 0
|
68
|
-
l 0 -896
|
69
|
-
l -40 8
|
70
|
-
l 80 -136
|
71
|
-
" fill="#041E42" />
|
72
|
-
<path d="M 1296 1024
|
73
|
-
l 480 0
|
74
|
-
l 0 80
|
75
|
-
l -480 0
|
76
|
-
l 0 -80
|
77
|
-
" fill="#041E42" />
|
78
|
-
<path d="M 1296 1025
|
79
|
-
l 0 -432
|
80
|
-
l 120 136
|
81
|
-
l -40 0
|
82
|
-
l 0 296
|
83
|
-
" fill="#041E42" />
|
84
|
-
<path d="M 1776 1025
|
85
|
-
l 0 -432
|
86
|
-
l -120 136
|
87
|
-
l 40 0
|
88
|
-
l 0 296
|
89
|
-
" fill="#041E42" />
|
90
|
-
<path d="M 1392 1184
|
91
|
-
l 288 0
|
92
|
-
l 0 80
|
93
|
-
l -288 0
|
94
|
-
l 0 -80
|
95
|
-
" fill="#041E42" />
|
96
|
-
</g><g transform="translate(0, -193)">
|
97
|
-
<path d="M 1536 512
|
98
|
-
l 80 136
|
99
|
-
l -40 -8
|
100
|
-
l 0 896
|
101
|
-
l -80 0
|
102
|
-
l 0 -896
|
103
|
-
l -40 8
|
104
|
-
l 80 -136
|
105
|
-
" fill="#041E42" />
|
106
|
-
<path d="M 1296 1024
|
107
|
-
l 480 0
|
108
|
-
l 0 80
|
109
|
-
l -480 0
|
110
|
-
l 0 -80
|
111
|
-
" fill="#041E42" />
|
112
|
-
<path d="M 1296 1025
|
113
|
-
l 0 -432
|
114
|
-
l 120 136
|
115
|
-
l -40 0
|
116
|
-
l 0 296
|
117
|
-
" fill="#041E42" />
|
118
|
-
<path d="M 1776 1025
|
119
|
-
l 0 -432
|
120
|
-
l -120 136
|
121
|
-
l 40 0
|
122
|
-
l 0 296
|
123
|
-
" fill="#041E42" />
|
124
|
-
<path d="M 1392 1184
|
125
|
-
l 288 0
|
126
|
-
l 0 80
|
127
|
-
l -288 0
|
128
|
-
l 0 -80
|
129
|
-
" fill="#041E42" />
|
130
|
-
</g><g transform="translate(768, 192)">
|
131
|
-
<path d="M 1536 512
|
132
|
-
l 80 136
|
133
|
-
l -40 -8
|
134
|
-
l 0 896
|
135
|
-
l -80 0
|
136
|
-
l 0 -896
|
137
|
-
l -40 8
|
138
|
-
l 80 -136
|
139
|
-
" fill="#041E42" />
|
140
|
-
<path d="M 1296 1024
|
141
|
-
l 480 0
|
142
|
-
l 0 80
|
143
|
-
l -480 0
|
144
|
-
l 0 -80
|
145
|
-
" fill="#041E42" />
|
146
|
-
<path d="M 1296 1025
|
147
|
-
l 0 -432
|
148
|
-
l 120 136
|
149
|
-
l -40 0
|
150
|
-
l 0 296
|
151
|
-
" fill="#041E42" />
|
152
|
-
<path d="M 1776 1025
|
153
|
-
l 0 -432
|
154
|
-
l -120 136
|
155
|
-
l 40 0
|
156
|
-
l 0 296
|
157
|
-
" fill="#041E42" />
|
158
|
-
<path d="M 1392 1184
|
159
|
-
l 288 0
|
160
|
-
l 0 80
|
161
|
-
l -288 0
|
162
|
-
l 0 -80
|
163
|
-
" fill="#041E42" />
|
164
|
-
</g></svg>
|
165
|
-
SVG
|
166
|
-
)
|
139
|
+
it "should construct and generate a flag with a valid body" do
|
140
|
+
expect(@flag.svg).to include(@valid_body)
|
141
|
+
end
|
167
142
|
end
|
168
143
|
end
|
169
144
|
end
|
data/usps_flags.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'usps_flags'
|
3
|
-
s.version = '0.
|
4
|
-
s.date = '2017-11-
|
3
|
+
s.version = '0.2.0'
|
4
|
+
s.date = '2017-11-03'
|
5
5
|
s.summary = 'Flag generator for United States Power Squadrons'
|
6
6
|
s.description = 'A flag image (PNG, SVG) generator for United States Power Squadrons.'
|
7
7
|
s.homepage = 'http://rubygems.org/gems/usps_flags'
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: usps_flags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian Fiander
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
3YzYAc+kXfD7kkzA2NMvLT6Q1v03qQyIZ8BS8SNk5wLGAdLM+IravFDLEs448fjz
|
31
31
|
lEAU0RHLFVbE+CXW6makIlWGHR0=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date: 2017-11-
|
33
|
+
date: 2017-11-03 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: file_utils
|
@@ -189,11 +189,15 @@ files:
|
|
189
189
|
- lib/usps_flags/core/star.rb
|
190
190
|
- lib/usps_flags/core/trident.rb
|
191
191
|
- lib/usps_flags/core/trident_spec.rb
|
192
|
+
- lib/usps_flags/core/tridents.rb
|
192
193
|
- lib/usps_flags/core/trumpet.rb
|
193
194
|
- lib/usps_flags/core/us.rb
|
194
195
|
- lib/usps_flags/core/wheel.rb
|
195
196
|
- lib/usps_flags/generate.rb
|
197
|
+
- lib/usps_flags/generate/flag.rb
|
196
198
|
- lib/usps_flags/helpers.rb
|
199
|
+
- lib/usps_flags/helpers/builders.rb
|
200
|
+
- lib/usps_flags/helpers/spec_arrows.rb
|
197
201
|
- spec/rational_spec.rb
|
198
202
|
- spec/spec_helper.rb
|
199
203
|
- spec/usps_flags/config_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|