Skip to content

Commit ab985e0

Browse files
authored
Release v0.1.0 (#2)
Public interface all good.
1 parent 114b1af commit ab985e0

File tree

3 files changed

+78
-27
lines changed

3 files changed

+78
-27
lines changed

docs/jmd/api.jmd

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
## Public
44

5-
```@docs
6-
EconJobMarket
7-
fetch_ads
5+
```@autodocs
6+
Modules = [EconJobMarket]
7+
Private = false
88
```
99

1010
## Private
1111

1212
```@autodocs
1313
Modules = [EconJobMarket]
14-
Private = true
14+
Public = false
1515
```

src/01_utils.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
Normalize the value such that it qualifies as a lowercase valid identifier.
44
# Example
55
```jldoctest
6-
julia> EconJobMarket.clean_name(Symbol("3This is a Cat:egory!4cΩ"))
7-
:_3this_is_a_cat_egory!4cΩ
6+
julia> EconJobMarket.clean_name(Symbol("3This is a Cat:egory!4cΩ."))
7+
:_3this_is_a_cat_egory!4cΩ_
88
```
99
"""
1010
clean_name(obj)::Symbol =

src/02_job_ads.jl

Lines changed: 72 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,48 @@ const OPENINGS_URL = "https://backend.econjobmarket.org/data/zz_public/json/Ads"
99
"""
1010
const CATEGORIES_URL = "https://backend.econjobmarket.org/data/zz_public/json/Categories"
1111
"""
12-
CATEGORIES::Vector{Symbol}
12+
CATEGORIES::Vector{String}
1313
Job opening advertisements categories.
14+
```jldoctest
15+
julia> EconJobMarket.CATEGORIES
16+
34-element Array{String,1}:
17+
"Development; Growth"
18+
"Econometrics"
19+
"Economic History"
20+
"Environmental; Ag. Econ."
21+
"Experimental Economics"
22+
"Finance"
23+
"Industrial Organization"
24+
"International Finance/Macro"
25+
"International Trade"
26+
"Labor; Demographic Economics"
27+
"Law and Economics"
28+
"Macroeconomics; Monetary"
29+
"Microeconomics"
30+
"Public Economics"
31+
"Theory"
32+
"Behavioral Economics"
33+
34+
"Urban; Rural; Regional Economics"
35+
"Health; Education; Welfare"
36+
"Business Economics"
37+
"Computational Economics"
38+
"Political Economy"
39+
"Accounting"
40+
"Decision Sciences"
41+
"Insurance"
42+
"Management, General"
43+
"Management, Health Care"
44+
"Management, Information Technology"
45+
"Marketing"
46+
"Operations Research"
47+
"Organizational Behavior"
48+
"Real Estate"
49+
"Statistics"
50+
```
1451
"""
1552
const CATEGORIES = JSON3.read(read(joinpath(dirname(@__DIR__), "data", "Categories.json"))) |>
16-
(obj -> Symbol.(getproperty.(obj, :name)))
53+
(obj -> getproperty.(obj, :name))
1754
"""
1855
categories_indicator(obj::AbstractString)::BitVector
1956
Given a string, it provides indicators for whether the job ad listed each opening category.
@@ -71,8 +108,9 @@ function parse_opening(node)
71108
latitude = isnothing(node.latitude) ? missing : parse(Float64, node.latitude)
72109
name = isnothing(node.name) ? missing : node.shortname
73110
cats = isnothing(node.categories) ? missing : categories_indicator(node.categories)
74-
(; zip(Tuple(Symbol(clean_name(elem)) for elem propertynames(node)
75-
if clean_name(elem) "categories"),
111+
(; zip(Tuple(append!([ Symbol(clean_name(elem)) for elem propertynames(node)
112+
if clean_name(elem) :categories ],
113+
clean_name.(CATEGORIES))),
76114
(posid, oid, adtitle, position_type_id, position_type,
77115
adtext, startdate, enddate, country_code, position_country,
78116
department, shortname, address, longitude, latitude, name,
@@ -90,23 +128,36 @@ julia> data = joinpath(dirname(@__DIR__), "data", "ads.tsv") |>
90128
91129
julia> Tables.schema(data)
92130
Tables.Schema:
93-
:posid Int64
94-
:oid Int64
95-
:adtitle String
96-
:position_type_id Int64
97-
:position_type String
98-
:adtext String
99-
:categories Date
100-
:startdate Date
101-
:enddate Union{Missing, String}
102-
:country_code Union{Missing, String}
103-
:position_country String
104-
:department String
105-
:shortname Union{Missing, String}
106-
:address Union{Missing, Float64}
107-
:longitude Union{Missing, Float64}
108-
:latitude String
109-
:name Bool
131+
:posid Int64
132+
:oid Int64
133+
:adtitle String
134+
:position_type_id String
135+
:position_type String
136+
:adtext String
137+
:startdate Date
138+
:enddate Date
139+
:country_code String
140+
:position_country String
141+
:department String
142+
:shortname String
143+
:address Missing
144+
:longitude Float64
145+
:latitude Float64
146+
147+
:business_economics Bool
148+
:computational_economics Bool
149+
:political_economy Bool
150+
:accounting Bool
151+
:decision_sciences Bool
152+
:insurance Bool
153+
:management_general Bool
154+
:management_health_care Bool
155+
:management_information_technology Bool
156+
:marketing Bool
157+
:operations_research Bool
158+
:organizational_behavior Bool
159+
:real_estate Bool
160+
:statistics Bool
110161
```
111162
"""
112163
fetch_ads(filepath::AbstractString; delim::Union{Char,AbstractString} = '\t') =

0 commit comments

Comments
 (0)