iww 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +7 -0
- data/lib/iww/version.rb +3 -2
- data/lib/iww.rb +373 -55
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 773b18ced0bed79c44d2465f4c62e07008c27bd51a7438d54641fccdeed14b56
|
|
4
|
+
data.tar.gz: 7a3479d56b5e8457f847a7a525b172360f5fcd8a751732601f2077934627da44
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c29fe455af59df928f7b0b45a9d7d3e3b9f3ac98735e1fdb2295860662bcfd683ecc251405d891c3e6b609f3aeef893751e415cbec56ca50e535fd30673562eb
|
|
7
|
+
data.tar.gz: d4632d4082697367eacf970dec64924be8a55f0e0beeed809683c40f9bba9223ced2539d7c628e8222575a7d7f5c818f023b09f1cdf965120f6d621e0bec64a0
|
data/Rakefile
CHANGED
data/lib/iww/version.rb
CHANGED
data/lib/iww.rb
CHANGED
|
@@ -2,10 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
require_relative "iww/version"
|
|
4
4
|
|
|
5
|
-
# The Iww
|
|
5
|
+
# The Iww module provides convenient access to information and helpers
|
|
6
|
+
# related to the Industrial Workers of the World ("One Big Union").
|
|
7
|
+
#
|
|
8
|
+
# @example Get the I.W.W. preamble
|
|
9
|
+
# Iww.preamble
|
|
10
|
+
#
|
|
11
|
+
# @example Lookup a division by job
|
|
12
|
+
# Iww["programmer"]
|
|
13
|
+
# #=> {"570"=>"Communications and Internet Technology"}
|
|
14
|
+
#
|
|
15
|
+
# @example Get the join link
|
|
16
|
+
# Iww.join!
|
|
17
|
+
# #=> "https://redcard.iww.org/user/register"
|
|
6
18
|
module Iww
|
|
7
|
-
|
|
19
|
+
# Custom error class for Iww module
|
|
20
|
+
class Error < StandardError; end
|
|
8
21
|
|
|
22
|
+
# Logo and image URLs for the I.W.W.
|
|
23
|
+
# @return [Hash] hash of image URLs with symbol keys
|
|
9
24
|
@@LOGO = {
|
|
10
25
|
black: %[https://redcard.iww.org/sites/default/files/iww-logo.png],
|
|
11
26
|
white: %[https://www.iww.org/wp-content/uploads/2023/08/globe-2.svg],
|
|
@@ -13,30 +28,49 @@ module Iww
|
|
|
13
28
|
cat: %[https://i0.wp.com/www.buckeyemuse.com/wp-content/uploads/2020/10/1024px-Anarchist_black_cat.png?ssl=1],
|
|
14
29
|
seal: %[https://www.iww.org/wp-content/uploads/2023/09/entitled-iww-logo-white.svg]
|
|
15
30
|
}
|
|
16
|
-
|
|
31
|
+
|
|
32
|
+
# Returns available I.W.W. logos and images
|
|
33
|
+
# @return [Hash] hash containing image URLs with symbol keys (:black, :white, :red, :cat, :seal)
|
|
34
|
+
# @example Get all available images
|
|
35
|
+
# Iww.image
|
|
36
|
+
# #=> {:black=>"https://redcard.iww.org/sites/default/files/iww-logo.png", ...}
|
|
17
37
|
def self.image
|
|
18
38
|
@@LOGO
|
|
19
39
|
end
|
|
20
|
-
|
|
40
|
+
|
|
41
|
+
# Returns the I.W.W. membership registration link
|
|
42
|
+
# @return [String] URL for joining the I.W.W.
|
|
43
|
+
# @example Get the join link
|
|
44
|
+
# Iww.join!
|
|
45
|
+
# #=> "https://redcard.iww.org/user/register"
|
|
21
46
|
def self.join!
|
|
22
47
|
%[https://redcard.iww.org/user/register]
|
|
23
48
|
end
|
|
24
49
|
|
|
50
|
+
# I.W.W. Constitution Preamble text
|
|
51
|
+
# @return [Array<String>] array containing the preamble text as individual lines
|
|
25
52
|
@@OLD = [
|
|
26
53
|
%[The working class and the employing class have nothing in common.],
|
|
27
54
|
%[There can be no peace so long as hunger and want are found among millions of the working people and the few, who make up the employing class, have all the good things of life.],
|
|
28
55
|
%[Between these two classes a struggle must go on until the workers of the world organise as a class, take possession of the means of production, abolish the wage system, and live in harmony with the earth.],
|
|
29
56
|
%[We find that the centering of the management of industries into fewer and fewer hands makes the trade unions unable to cope with the evergrowing power of the employing class. The trade unions foster a state of affairs which allows one set of workers to be pitted against another set of workers in the same industry, thereby helping defeat one another in wage wars. Moreover, the trade unions aid the employing class to mislead the workers into the belief that the working class have interests in common with their employers.],
|
|
30
57
|
%[These conditions can be changed and the interest of the working class upheld only by an organization formed in such a way that all its members in any one industry, or in all industries if necessary, cease work whenever a strike or lockout is on in any department thereof, thus making an injury to one an injury to all.],
|
|
31
|
-
%[Instead of the conservative motto,
|
|
58
|
+
%[Instead of the conservative motto, ''A fair day's wage for a fair day's work," we must inscribe on our banner the revolutionary watchword, ''Abolition of the wage system."],
|
|
32
59
|
%[It is the historic mission of the working class to do away with capitalism. The army of prod uction must be organised, not only for everyday struggle with capitalists, but also to carry on production when capitalism shall have been overthrown. By organizing industrially we are forming the structure of the new society within the shell of the old.],
|
|
33
60
|
%[Knowing, therefore, that such an organization is absolutely necessary for emancipation, we unite under the following set of guiding principles and rules:]
|
|
34
61
|
]
|
|
35
|
-
|
|
62
|
+
|
|
63
|
+
# Returns the I.W.W. Constitution Preamble
|
|
64
|
+
# @return [Array<String>] array containing the preamble text as individual lines
|
|
65
|
+
# @example Get the preamble
|
|
66
|
+
# Iww.preamble
|
|
67
|
+
# #=> ["The working class and the employing class have nothing in common.", ...]
|
|
36
68
|
def self.preamble
|
|
37
69
|
@@OLD
|
|
38
70
|
end
|
|
39
71
|
|
|
72
|
+
# I.W.W. industrial divisions mapping
|
|
73
|
+
# @return [Hash<String, String>] hash mapping division numbers to division names
|
|
40
74
|
@@DIV = {
|
|
41
75
|
"110" => "Agricultural",
|
|
42
76
|
"120" => "Lumber",
|
|
@@ -77,64 +111,348 @@ module Iww
|
|
|
77
111
|
"690" => "Sex Industry"
|
|
78
112
|
}
|
|
79
113
|
|
|
80
|
-
#
|
|
114
|
+
# Returns all I.W.W. industrial divisions
|
|
115
|
+
# @return [Hash<String, String>] hash mapping division numbers to division names
|
|
116
|
+
# @example Get all divisions
|
|
117
|
+
# Iww.divisions
|
|
118
|
+
# #=> {"110"=>"Agricultural", "120"=>"Lumber", ...}
|
|
81
119
|
def self.divisions
|
|
82
120
|
@@DIV
|
|
83
121
|
end
|
|
84
122
|
|
|
123
|
+
# Job titles to division numbers mapping
|
|
124
|
+
# @return [Hash<String, Array<String>>] hash mapping job titles to arrays of division numbers
|
|
85
125
|
@@MAP = {
|
|
86
|
-
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
"fisherman" => ["130"],
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
"
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"
|
|
126
|
+
# Agricultural (110)
|
|
127
|
+
"farmer" => ["110"], "farmworker" => ["110"], "agricultural worker" => ["110"], "rancher" => ["110"],
|
|
128
|
+
"crop picker" => ["110"], "harvester" => ["110"], "farmhand" => ["110"], "livestock worker" => ["110"],
|
|
129
|
+
"gardener" => ["110","340"], "horticulturist" => ["110"], "agronomist" => ["110"], "farm manager" => ["110"],
|
|
130
|
+
"irrigation worker" => ["110"], "pesticide applicator" => ["110"], "farm equipment operator" => ["110"],
|
|
131
|
+
"migrant farmworker" => ["110"], "seasonal farmworker" => ["110"],
|
|
132
|
+
|
|
133
|
+
# Lumber (120)
|
|
134
|
+
"lumberjack" => ["120"], "logger" => ["120"], "forester" => ["120"], "sawmill worker" => ["120"],
|
|
135
|
+
"woodcutter" => ["120"], "tree faller" => ["120"], "timber worker" => ["120"], "pulpwood worker" => ["120"],
|
|
136
|
+
"forest worker" => ["120"], "silviculturist" => ["120"], "log truck driver" => ["120","530"],
|
|
137
|
+
"sawyer" => ["120"], "planer operator" => ["120"], "kiln operator" => ["120"],
|
|
138
|
+
|
|
139
|
+
# Fishery (130)
|
|
140
|
+
"fisherman" => ["130"], "fisher" => ["130"], "fishing boat worker" => ["130"], "deckhand" => ["130","510"],
|
|
141
|
+
"fish processor" => ["130","460"], "seafood worker" => ["130","460"], "fishmonger" => ["130","640"],
|
|
142
|
+
"shrimper" => ["130"], "crabber" => ["130"], "lobsterman" => ["130"], "oysterman" => ["130"],
|
|
143
|
+
"clam digger" => ["130"], "aquaculture worker" => ["130"], "fish farm worker" => ["130"],
|
|
144
|
+
|
|
145
|
+
# Greenhouse (140)
|
|
146
|
+
"greenhouse worker" => ["140"], "nursery worker" => ["140"], "hydroponics worker" => ["140"],
|
|
147
|
+
"florist" => ["140","640"], "plant grower" => ["140"], "horticulture worker" => ["140"],
|
|
148
|
+
"garden center worker" => ["140","640"], "landscape designer" => ["140","340"], "arborist" => ["140","340"],
|
|
149
|
+
"tree surgeon" => ["140","340"],
|
|
150
|
+
|
|
151
|
+
# Mining (210)
|
|
152
|
+
"miner" => ["210"], "coal miner" => ["210"], "gold miner" => ["210"], "silver miner" => ["210"],
|
|
153
|
+
"copper miner" => ["210"], "iron ore miner" => ["210"], "quarry worker" => ["210"], "rock miner" => ["210"],
|
|
154
|
+
"salt miner" => ["210"], "diamond miner" => ["210"], "surface miner" => ["210"], "underground miner" => ["210"],
|
|
155
|
+
"blaster" => ["210"], "explosives worker" => ["210"], "mine safety worker" => ["210"],
|
|
156
|
+
"geological technician" => ["210"], "drill operator" => ["210"], "construction equipment operator" => ["210","310"],
|
|
157
|
+
|
|
158
|
+
# Energy (220)
|
|
159
|
+
"oil worker" => ["220"], "gas worker" => ["220"], "petroleum worker" => ["220"], "refinery worker" => ["220"],
|
|
160
|
+
"pipeline worker" => ["220"], "drilling rig worker" => ["220"], "offshore oil worker" => ["220"],
|
|
161
|
+
"solar panel installer" => ["220"], "wind turbine technician" => ["220"], "renewable energy worker" => ["220"],
|
|
162
|
+
"power plant worker" => ["220"], "electrical utility worker" => ["220","670"], "lineman" => ["220","670"],
|
|
163
|
+
"energy technician" => ["220"], "nuclear plant worker" => ["220"], "hydroelectric worker" => ["220"],
|
|
164
|
+
|
|
165
|
+
# Civil Construction (310)
|
|
166
|
+
"construction" => ["310"], "construction worker" => ["310"], "carpenter" => ["310"], "electrician" => ["310"],
|
|
167
|
+
"plumber" => ["310"], "pipefitter" => ["310"], "ironworker" => ["310"], "steelworker" => ["310"],
|
|
168
|
+
"cement mason" => ["310"], "concrete worker" => ["310"], "bricklayer" => ["310"], "roofer" => ["310"],
|
|
169
|
+
"glazier" => ["310"], "insulation worker" => ["310"], "drywall installer" => ["310"], "painter" => ["310"],
|
|
170
|
+
"crane operator" => ["310"], "excavator operator" => ["310"], "bulldozer operator" => ["310"],
|
|
171
|
+
"road worker" => ["310"], "highway worker" => ["310"], "bridge worker" => ["310"], "tunnel worker" => ["310"],
|
|
172
|
+
"demolition worker" => ["310"], "welder" => ["310"], "construction foreman" => ["310"],
|
|
173
|
+
"site supervisor" => ["310"], "safety coordinator" => ["310"],
|
|
174
|
+
|
|
175
|
+
# Ship and Boat Builders (330)
|
|
176
|
+
"shipbuilder" => ["330"], "boat builder" => ["330"], "shipwright" => ["330"], "marine carpenter" => ["330"],
|
|
177
|
+
"boatwright" => ["330"], "naval architect" => ["330"], "ship fitter" => ["330"], "hull worker" => ["330"],
|
|
178
|
+
"marine welder" => ["330"], "boat repair worker" => ["330"], "marina worker" => ["330"],
|
|
179
|
+
|
|
180
|
+
# Building Maintenance and Landscaping (340)
|
|
181
|
+
"landscaper" => ["340"], "groundskeeper" => ["340"], "maintenance worker" => ["340"], "janitor" => ["340"],
|
|
182
|
+
"cleaner" => ["340"], "custodian" => ["340"], "building maintenance" => ["340"], "facility manager" => ["340"],
|
|
183
|
+
"pest control worker" => ["340"], "lawn care worker" => ["340"], "tree trimmer" => ["340"],
|
|
184
|
+
"snow removal worker" => ["340"], "cleaning service" => ["340"], "housekeeper" => ["340"],
|
|
185
|
+
"hotel housekeeper" => ["340"],
|
|
186
|
+
|
|
187
|
+
# Textile and Leather (410)
|
|
188
|
+
"textile worker" => ["410"], "seamstress" => ["410"], "tailor" => ["410"], "garment worker" => ["410"],
|
|
189
|
+
"clothing maker" => ["410"], "pattern maker" => ["410"], "cutter" => ["410"], "sewer" => ["410"],
|
|
190
|
+
"upholsterer" => ["410"], "leather worker" => ["410"], "shoemaker" => ["410"], "tanner" => ["410"],
|
|
191
|
+
"weaver" => ["410"], "knitter" => ["410"], "dyer" => ["410"], "spinner" => ["410"],
|
|
192
|
+
"textile designer" => ["410"], "fabric worker" => ["410"],
|
|
193
|
+
|
|
194
|
+
# Wood Processing and Furniture (420)
|
|
195
|
+
"furniture maker" => ["420"], "cabinet maker" => ["420"], "woodworker" => ["420"], "furniture finisher" => ["420"],
|
|
196
|
+
"furniture designer" => ["420"], "wood finisher" => ["420"], "furniture assembler" => ["420"],
|
|
197
|
+
"furniture installer" => ["420"], "cabinet installer" => ["420"], "millworker" => ["420"],
|
|
198
|
+
|
|
199
|
+
# Chemical (430)
|
|
200
|
+
"chemical worker" => ["430"], "chemist" => ["430"], "pharmaceutical worker" => ["430"],
|
|
201
|
+
"chemical plant worker" => ["430"], "chemical engineer" => ["430"], "research chemist" => ["430"],
|
|
202
|
+
"quality control chemist" => ["430"], "chemical mixer" => ["430"], "chemical operator" => ["430"],
|
|
203
|
+
"plastics worker" => ["430"], "rubber worker" => ["430"], "paint manufacturer" => ["430"],
|
|
204
|
+
"cosmetics worker" => ["430"], "soap maker" => ["430"],
|
|
205
|
+
|
|
206
|
+
# Printing and Publishing (450)
|
|
207
|
+
"writer" => ["450"], "editor" => ["450"], "journalist" => ["450"], "reporter" => ["450"],
|
|
208
|
+
"publisher" => ["450"], "printer" => ["450"], "press operator" => ["450"], "typesetter" => ["450"],
|
|
209
|
+
"graphic designer" => ["450"], "layout artist" => ["450"], "proofreader" => ["450"], "copy editor" => ["450"],
|
|
210
|
+
"blogger" => ["450"], "copywriter" => ["450"], "book designer" => ["450"], "illustrator" => ["450"],
|
|
211
|
+
|
|
212
|
+
# Food Product (460)
|
|
213
|
+
"cook" => ["460","640"], "chef" => ["460","640"], "food worker" => ["460"], "food processor" => ["460"],
|
|
214
|
+
"food manufacturer" => ["460"], "baker" => ["460"], "butcher" => ["460"], "meat cutter" => ["460"],
|
|
215
|
+
"meat packer" => ["460"], "food preparer" => ["460"], "kitchen worker" => ["460"],
|
|
216
|
+
"food packer" => ["460"], "food inspector" => ["460"], "brewery worker" => ["460"],
|
|
217
|
+
"winery worker" => ["460"], "distillery worker" => ["460"], "cheese maker" => ["460"],
|
|
218
|
+
|
|
219
|
+
# Electronics and Instrument (470)
|
|
220
|
+
"electronics worker" => ["470"], "electrical engineer" => ["470"], "electronics technician" => ["470"],
|
|
221
|
+
"circuit board assembler" => ["470"], "solderer" => ["470"], "electronics tester" => ["470"],
|
|
222
|
+
"instrument maker" => ["470"], "precision instrument worker" => ["470"], "appliance repair" => ["470"],
|
|
223
|
+
"electronics repair" => ["470"], "computer hardware technician" => ["470"], "semiconductor worker" => ["470"],
|
|
224
|
+
"microchip fabricator" => ["470"],
|
|
225
|
+
|
|
226
|
+
# Glass, Pottery, and Mineral (480)
|
|
227
|
+
"glass worker" => ["480"], "glass blower" => ["480"], "potter" => ["480"], "ceramics worker" => ["480"],
|
|
228
|
+
"tile maker" => ["480"], "brick maker" => ["480"], "stone worker" => ["480"], "mason" => ["480"],
|
|
229
|
+
"ceramic artist" => ["480"], "glass cutter" => ["480"], "ceramic engineer" => ["480"],
|
|
230
|
+
|
|
231
|
+
# Pulp and Paper Mill (490)
|
|
232
|
+
"paper mill worker" => ["490"], "pulp worker" => ["490"], "paper maker" => ["490"],
|
|
233
|
+
"paper machine operator" => ["490"], "paper converter" => ["490"], "paper finisher" => ["490"],
|
|
234
|
+
"paper packer" => ["490"], "cardboard worker" => ["490"], "packaging worker" => ["490"],
|
|
235
|
+
|
|
236
|
+
# Marine (510)
|
|
237
|
+
"sailor" => ["510"], "seaman" => ["510"], "mariner" => ["510"], "merchant marine" => ["510"],
|
|
238
|
+
"boat worker" => ["510"], "ship worker" => ["510"], "ship officer" => ["510"], "captain" => ["510"],
|
|
239
|
+
"mate" => ["510"], "able seaman" => ["510"], "ordinary seaman" => ["510"], "fisheries observer" => ["510"],
|
|
240
|
+
"marine surveyor" => ["510"], "port worker" => ["510","560"], "stevedore" => ["510","560"],
|
|
241
|
+
"longshoreman" => ["510","560"],
|
|
242
|
+
|
|
243
|
+
# Railroad (520)
|
|
244
|
+
"railroad worker" => ["520"], "train engineer" => ["520"], "conductor" => ["520"], "brakeman" => ["520"],
|
|
245
|
+
"railroad maintainer" => ["520"], "track worker" => ["520"], "signal maintainer" => ["520"],
|
|
246
|
+
"yardmaster" => ["520"], "switchman" => ["520"], "locomotive engineer" => ["520"],
|
|
247
|
+
"rail car mechanic" => ["520"], "railroad operator" => ["520"], "transit worker" => ["520"],
|
|
248
|
+
"subway worker" => ["520"],
|
|
249
|
+
|
|
250
|
+
# Ground Transportation and Transit (530)
|
|
251
|
+
"driver" => ["530","540","631"], "truck driver" => ["530"], "delivery driver" => ["530","540"],
|
|
252
|
+
"bus driver" => ["530"], "taxi driver" => ["530"], "rideshare driver" => ["530"], "uber" => ["530","631"],
|
|
253
|
+
"lyft" => ["530","631"], "transit operator" => ["530"], "shuttle driver" => ["530"], "van driver" => ["530"],
|
|
254
|
+
"chauffeur" => ["530"], "limo driver" => ["530"], "school bus driver" => ["530"], "motor coach operator" => ["530"],
|
|
255
|
+
"pedicabber" => ["530"], "rickshaw driver" => ["530"], "bike messenger" => ["530","540"],
|
|
256
|
+
|
|
257
|
+
# Postal Express and Message Delivery (540)
|
|
258
|
+
"courier" => ["540"], "mail carrier" => ["540"], "postal worker" => ["540"], "letter carrier" => ["540"],
|
|
259
|
+
"mail handler" => ["540"], "postal clerk" => ["540"], "delivery person" => ["540"], "messenger" => ["540"],
|
|
260
|
+
"package handler" => ["540"], "shipping clerk" => ["540"], "receiving clerk" => ["540"],
|
|
261
|
+
"fulfillment worker" => ["540","560"], "amazon worker" => ["540","560"], "fedex worker" => ["540"],
|
|
262
|
+
"ups worker" => ["540"], "dhl worker" => ["540"],
|
|
263
|
+
|
|
264
|
+
# Air Transport (550)
|
|
265
|
+
"pilot" => ["550"], "airline pilot" => ["550"], "flight attendant" => ["550"], "air traffic controller" => ["550"],
|
|
266
|
+
"airport worker" => ["550"], "ground crew" => ["550"], "ramp agent" => ["550"], "baggage handler" => ["550"],
|
|
267
|
+
"gate agent" => ["550"], "ticket agent" => ["550"], "aircraft mechanic" => ["550"], "aviation technician" => ["550"],
|
|
268
|
+
"flight engineer" => ["550"], "cargo pilot" => ["550"], "charter pilot" => ["550"], "flight instructor" => ["550"],
|
|
269
|
+
|
|
270
|
+
# General Distribution (560)
|
|
271
|
+
"distribution worker" => ["560"], "logistics worker" => ["560"], "stocker" => ["560"],
|
|
272
|
+
"inventory worker" => ["560"], "picker" => ["560"], "packer" => ["560"], "shipper" => ["560"],
|
|
273
|
+
"receiver" => ["560"], "forklift operator" => ["560"], "material handler" => ["560"],
|
|
274
|
+
"supply chain worker" => ["560"], "freight handler" => ["560"], "mover" => ["560"],
|
|
275
|
+
|
|
276
|
+
# Communications and Internet Technology (570)
|
|
277
|
+
"programmer" => ["570"], "developer" => ["570"], "software engineer" => ["570"], "web developer" => ["570"],
|
|
278
|
+
"front-end developer" => ["570"], "back-end developer" => ["570"], "full-stack developer" => ["570"],
|
|
279
|
+
"mobile developer" => ["570"], "app developer" => ["570"], "data analyst" => ["570"],
|
|
280
|
+
"machine learning engineer" => ["570"], "AI engineer" => ["570"], "database administrator" => ["570"],
|
|
281
|
+
"system administrator" => ["570"], "network administrator" => ["570"], "IT support" => ["570"],
|
|
282
|
+
"help desk" => ["570"], "technical support" => ["570"], "cybersecurity analyst" => ["570"],
|
|
283
|
+
"information security" => ["570"], "cloud engineer" => ["570"], "devops engineer" => ["570"],
|
|
284
|
+
"site reliability engineer" => ["570"], "QA tester" => ["570"], "software tester" => ["570"],
|
|
285
|
+
"UX designer" => ["570"], "UI designer" => ["570"], "product designer" => ["570"],
|
|
286
|
+
"game developer" => ["570"], "game designer" => ["570"], "api developer" => ["570"],
|
|
287
|
+
"blockchain developer" => ["570"], "cryptocurrency developer" => ["570"],
|
|
288
|
+
|
|
289
|
+
# Information Service (580)
|
|
290
|
+
"fundraiser" => ["580"], "influencer" => ["580"], "social media manager" => ["580"],
|
|
291
|
+
"digital marketer" => ["580"], "SEO specialist" => ["580"], "marketing manager" => ["580"],
|
|
292
|
+
"public relations" => ["580"], "communications specialist" => ["580"], "brand manager" => ["580"],
|
|
293
|
+
"advertising worker" => ["580"], "media planner" => ["580"], "market researcher" => ["580"],
|
|
294
|
+
"business analyst" => ["580"], "management consultant" => ["580"], "research analyst" => ["580"],
|
|
295
|
+
"statistician" => ["580"], "economist" => ["580"], "records manager" => ["580"],
|
|
296
|
+
"information manager" => ["580"],
|
|
297
|
+
|
|
298
|
+
# Video, Audio, and Film Production (590)
|
|
299
|
+
"producer" => ["590"], "director" => ["590"], "filmmaker" => ["590"], "videographer" => ["590"],
|
|
300
|
+
"cinematographer" => ["590"], "camera operator" => ["590"], "video editor" => ["590"], "film editor" => ["590"],
|
|
301
|
+
"sound engineer" => ["590"], "audio engineer" => ["590"], "sound technician" => ["590"],
|
|
302
|
+
"lighting technician" => ["590"], "grip" => ["590"], "gaffer" => ["590"], "production assistant" => ["590"],
|
|
303
|
+
"screenwriter" => ["590"], "scriptwriter" => ["590"], "storyboard artist" => ["590"],
|
|
304
|
+
"special effects artist" => ["590"], "visual effects artist" => ["590"], "animation artist" => ["590"],
|
|
305
|
+
"animator" => ["590"], "motion graphics designer" => ["590"], "broadcast technician" => ["590"],
|
|
306
|
+
"video producer" => ["590"], "podcast producer" => ["590"], "radio producer" => ["590"],
|
|
307
|
+
"streaming producer" => ["590"],
|
|
308
|
+
|
|
309
|
+
# Health Services (610)
|
|
310
|
+
"nurse" => ["610"], "doctor" => ["610"], "physician" => ["610"], "surgeon" => ["610"],
|
|
311
|
+
"medical assistant" => ["610"], "physician assistant" => ["610"], "medical technician" => ["610"],
|
|
312
|
+
"phlebotomist" => ["610"], "radiology technician" => ["610"], "x-ray technician" => ["610"],
|
|
313
|
+
"pharmacist" => ["610"], "dentist" => ["610"], "dental hygienist" => ["610"], "dental assistant" => ["610"],
|
|
314
|
+
"veterinarian" => ["610"], "veterinary technician" => ["610"], "physical therapist" => ["610"],
|
|
315
|
+
"occupational therapist" => ["610"], "respiratory therapist" => ["610"], "speech therapist" => ["610"],
|
|
316
|
+
"orderly" => ["610"], "medical orderly" => ["610"], "hospital worker" => ["610"],
|
|
317
|
+
"healthcare worker" => ["610"], "caregiver" => ["610"], "home health aide" => ["610"],
|
|
318
|
+
"personal care aide" => ["610"], "mental health worker" => ["610"], "counselor" => ["610"],
|
|
319
|
+
"therapist" => ["610"], "social worker" => ["610"], "psychologist" => ["610"], "psychiatrist" => ["610"],
|
|
320
|
+
"medical coder" => ["610"], "medical biller" => ["610"], "medical records" => ["610"],
|
|
321
|
+
"health information technician" => ["610"],
|
|
322
|
+
|
|
323
|
+
# Incarcerated (613)
|
|
324
|
+
"prison worker" => ["613"], "incarcerated worker" => ["613"], "jail worker" => ["613"],
|
|
325
|
+
"detention worker" => ["613"], "correctional worker" => ["613"],
|
|
326
|
+
|
|
327
|
+
# Education and Research (620)
|
|
328
|
+
"teacher" => ["620"], "professor" => ["620"], "educator" => ["620"], "school teacher" => ["620"],
|
|
329
|
+
"college professor" => ["620"], "university professor" => ["620"], "researcher" => ["620"], "scientist" => ["620"],
|
|
330
|
+
"academic researcher" => ["620"], "postdoc" => ["620"], "graduate assistant" => ["620"],
|
|
331
|
+
"teaching assistant" => ["620"], "substitute teacher" => ["620"], "tutor" => ["620"],
|
|
332
|
+
"instructor" => ["620"], "trainer" => ["620"], "education administrator" => ["620"],
|
|
333
|
+
"principal" => ["620"], "school administrator" => ["620"], "curriculum developer" => ["620"],
|
|
334
|
+
"educational consultant" => ["620"], "academic advisor" => ["620"], "student advisor" => ["620"],
|
|
335
|
+
|
|
336
|
+
# Performing arts, Recreation, and Tourism (630)
|
|
337
|
+
"musician" => ["630"], "performer" => ["630"], "character" => ["630"], "dancer" => ["630","690"],
|
|
338
|
+
"entertainer" => ["630","690"], "actor" => ["630"], "actress" => ["630"], "singer" => ["630"],
|
|
339
|
+
"vocalist" => ["630"], "comedian" => ["630"], "magician" => ["630"], "juggler" => ["630"],
|
|
340
|
+
"circus performer" => ["630"], "theater worker" => ["630"], "stagehand" => ["630"],
|
|
341
|
+
"theater technician" => ["630"], "concert technician" => ["630"], "roadie" => ["630"],
|
|
342
|
+
"tour manager" => ["630"], "band manager" => ["630"], "artist" => ["630"], "visual artist" => ["630"],
|
|
343
|
+
"sculptor" => ["630"], "photographer" => ["630"], "graphic artist" => ["630"], "model" => ["630"],
|
|
344
|
+
"fashion model" => ["630"], "runway model" => ["630"], "fitness instructor" => ["630"],
|
|
345
|
+
"yoga instructor" => ["630"], "personal trainer" => ["630"], "recreation worker" => ["630"],
|
|
346
|
+
"camp counselor" => ["630"], "lifeguard" => ["630"], "swim instructor" => ["630"],
|
|
347
|
+
"ski instructor" => ["630"], "snowboard instructor" => ["630"], "tour guide" => ["630"],
|
|
348
|
+
"museum guide" => ["630"], "gallery attendant" => ["630"], "tourism worker" => ["630"],
|
|
349
|
+
"hospitality worker" => ["630"], "hotel worker" => ["630"], "concierge" => ["630"],
|
|
350
|
+
"bellhop" => ["630"], "doorman" => ["630"], "event planner" => ["630"], "party planner" => ["630"],
|
|
351
|
+
"wedding planner" => ["630"], "caterer" => ["630"], "dj" => ["630"], "disc jockey" => ["630"],
|
|
352
|
+
"mc" => ["630"], "master of ceremonies" => ["630"], "emcee" => ["630"],
|
|
353
|
+
"streamer" => ["630"], "twitch streamer" => ["630"], "youtube creator" => ["630"],
|
|
354
|
+
"tiktok creator" => ["630"],
|
|
355
|
+
|
|
356
|
+
# Freelance and Temporary (631)
|
|
357
|
+
"freelancer" => ["631"], "freelance writer" => ["631"], "freelance designer" => ["631"],
|
|
358
|
+
"freelance developer" => ["631"], "freelance artist" => ["631"], "freelance photographer" => ["631"],
|
|
359
|
+
"freelance consultant" => ["631"], "contractor" => ["631"], "independent contractor" => ["631"],
|
|
360
|
+
"temp worker" => ["631"], "temporary worker" => ["631"], "seasonal worker" => ["631"],
|
|
361
|
+
"gig worker" => ["631"], "on-call worker" => ["631"], "self-employed" => ["631"],
|
|
362
|
+
"solopreneur" => ["631"], "small business owner" => ["631"],
|
|
363
|
+
|
|
364
|
+
# Food and Retail Workers (640)
|
|
365
|
+
"bartender" => ["640"], "barista" => ["640"], "server" => ["640"], "waiter" => ["640"],
|
|
366
|
+
"waitress" => ["640"], "hostess" => ["640"], "busser" => ["640","670"], "busboy" => ["640","670"],
|
|
367
|
+
"busgirl" => ["640","670"], "dishwasher" => ["640"], "retail worker" => ["640"], "sales associate" => ["640"],
|
|
368
|
+
"cashier" => ["640"], "stock clerk" => ["640"], "customer service" => ["640"],
|
|
369
|
+
"customer service representative" => ["640"], "call center worker" => ["640"], "fast food worker" => ["640"],
|
|
370
|
+
"restaurant worker" => ["640"], "coffee shop worker" => ["640"], "bakery worker" => ["640"],
|
|
371
|
+
"deli worker" => ["640"], "grocery worker" => ["640"], "supermarket worker" => ["640"],
|
|
372
|
+
"convenience store worker" => ["640"], "gas station worker" => ["640"], "beauty salon worker" => ["640"],
|
|
373
|
+
"hair stylist" => ["640"], "barber" => ["640"], "nail technician" => ["640"], "esthetician" => ["640"],
|
|
374
|
+
"massage therapist" => ["640"], "spa worker" => ["640"], "fitness center worker" => ["640"],
|
|
375
|
+
"gym worker" => ["640"],
|
|
376
|
+
|
|
377
|
+
# Financial Office (650)
|
|
378
|
+
"accountant" => ["650"], "bookkeeper" => ["650"], "financial advisor" => ["650"],
|
|
379
|
+
"insurance agent" => ["650"], "insurance adjuster" => ["650"], "claims adjuster" => ["650"],
|
|
380
|
+
"underwriter" => ["650"], "loan officer" => ["650"], "mortgage broker" => ["650"],
|
|
381
|
+
"real estate agent" => ["650"], "real estate broker" => ["650"], "tax preparer" => ["650"],
|
|
382
|
+
"payroll clerk" => ["650"], "billing clerk" => ["650"], "accounts payable" => ["650"],
|
|
383
|
+
"accounts receivable" => ["650"], "financial clerk" => ["650"], "budget analyst" => ["650"],
|
|
384
|
+
"cost analyst" => ["650"], "actuary" => ["650"], "comptroller" => ["650"], "controller" => ["650"],
|
|
385
|
+
"cfo" => ["650"], "financial manager" => ["650"],
|
|
386
|
+
|
|
387
|
+
# Government (651)
|
|
388
|
+
"government worker" => ["651"], "civil servant" => ["651"], "public servant" => ["651"],
|
|
389
|
+
"federal employee" => ["651"], "state employee" => ["651"], "municipal employee" => ["651"],
|
|
390
|
+
"city worker" => ["651"], "county worker" => ["651"], "administrative assistant" => ["651"],
|
|
391
|
+
"secretary" => ["651"], "receptionist" => ["651"], "office worker" => ["651"], "bureaucrat" => ["651"],
|
|
392
|
+
"public administrator" => ["651"], "policy analyst" => ["651"], "regulatory worker" => ["651"],
|
|
393
|
+
"inspector" => ["651"], "compliance officer" => ["651"], "auditor" => ["651"], "tax collector" => ["651"],
|
|
394
|
+
"social services worker" => ["651"], "public health worker" => ["651"], "election worker" => ["651"],
|
|
395
|
+
"court worker" => ["651"], "legal assistant" => ["651"], "paralegal" => ["651"],
|
|
396
|
+
|
|
397
|
+
# Retail (660)
|
|
398
|
+
"sales" => ["660"], "salesperson" => ["660"], "sales clerk" => ["660"], "retail sales" => ["660"],
|
|
399
|
+
"commission sales" => ["660"], "car salesperson" => ["660"], "real estate salesperson" => ["660"],
|
|
400
|
+
"insurance salesperson" => ["660"], "door-to-door sales" => ["660"], "shop clerk" => ["660"],
|
|
401
|
+
"retail clerk" => ["660"], "budtender" => ["660"], "cannabis worker" => ["660"], "dispensary worker" => ["660"],
|
|
402
|
+
"tobacco worker" => ["660"], "liquor store worker" => ["660"], "wine shop worker" => ["660"],
|
|
403
|
+
"beer store worker" => ["660"],
|
|
404
|
+
|
|
405
|
+
# Utility and Sanitation (670)
|
|
406
|
+
"sanitation worker" => ["670"], "garbage collector" => ["670"], "waste management" => ["670"],
|
|
407
|
+
"recycling worker" => ["670"], "environmental services" => ["670"], "sewer worker" => ["670"],
|
|
408
|
+
"water treatment worker" => ["670"], "wastewater treatment" => ["670"], "cleaning crew" => ["670"],
|
|
409
|
+
"janitorial staff" => ["670"], "maintenance staff" => ["670"], "environmental services worker" => ["670"],
|
|
410
|
+
"housekeeping" => ["670"], "laundry worker" => ["670"], "linen worker" => ["670"],
|
|
411
|
+
|
|
412
|
+
# Sex Industry (690)
|
|
413
|
+
"sex worker" => ["690"], "escort" => ["690"], "prostitute" => ["690"], "street worker" => ["690"],
|
|
414
|
+
"brothel worker" => ["690"], "erotic massage" => ["690"], "strip club worker" => ["690"],
|
|
415
|
+
"stripper" => ["690"], "exotic dancer" => ["690"], "peep show worker" => ["690"],
|
|
416
|
+
"adult film worker" => ["690"], "porn star" => ["690"], "adult performer" => ["690"],
|
|
417
|
+
"phone sex operator" => ["690"], "dominatrix" => ["690"], "professional submissive" => ["690"],
|
|
418
|
+
"sugar baby" => ["690"], "sugar daddy" => ["690"], "onlyfans" => ["690"], "fansly" => ["690"],
|
|
419
|
+
"adult content creator" => ["690"]
|
|
122
420
|
}
|
|
123
|
-
|
|
421
|
+
|
|
422
|
+
# Returns a flattened list of all job titles and division names
|
|
423
|
+
# @return [Array<String>] array containing all job titles and division names
|
|
424
|
+
# @example Get all jobs and divisions
|
|
425
|
+
# Iww.jobs
|
|
426
|
+
# #=> ["uber", "driver", "pedicabber", ..., "Agricultural", "Lumber", ...]
|
|
124
427
|
def self.jobs
|
|
125
428
|
[ @@MAP.keys, @@DIV.values ].flatten
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
# Adds a job title to a division number mapping
|
|
432
|
+
# @param k [String, Symbol] the job title key
|
|
433
|
+
# @param j [String] the division number to add
|
|
434
|
+
# @example Add a new job mapping
|
|
435
|
+
# Iww.job("mechanic", "310")
|
|
436
|
+
def self.job k, j
|
|
437
|
+
if !@@MAP.has_key? k.to_s
|
|
438
|
+
@@MAP[k.to_s] = []
|
|
439
|
+
end
|
|
440
|
+
@@MAP[k.to_s] << j
|
|
441
|
+
end
|
|
135
442
|
|
|
136
|
-
|
|
137
|
-
|
|
443
|
+
# Lookup divisions by job title, division number, or division name
|
|
444
|
+
# @param x [String, Symbol, Integer] the search query (job title, division number, or division name)
|
|
445
|
+
# @return [Hash<String, String>, false] hash mapping division numbers to names, or false if not found
|
|
446
|
+
# @example Lookup by job title
|
|
447
|
+
# Iww["programmer"]
|
|
448
|
+
# #=> {"570"=>"Communications and Internet Technology"}
|
|
449
|
+
# @example Lookup by division number
|
|
450
|
+
# Iww["570"]
|
|
451
|
+
# #=> {"570"=>"Communications and Internet Technology"}
|
|
452
|
+
# @example Lookup by division name
|
|
453
|
+
# Iww["Communications and internet technology"]
|
|
454
|
+
# #=> {"570"=>"Communications and Internet Technology"}
|
|
455
|
+
def self.[] x
|
|
138
456
|
xx = x.to_s.downcase
|
|
139
457
|
if @@MAP.has_key? xx
|
|
140
458
|
o = {}
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: iww
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Erik Olson
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-01-
|
|
11
|
+
date: 2026-01-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: A helpful ruby library to do union division lookups by job, number, or
|
|
14
14
|
description.
|