1use serde::Serialize;
2
3#[derive(Debug, Clone, Default, Serialize)]
4#[serde(rename_all = "lowercase")]
5#[allow(dead_code)]
6pub enum PublicationType {
7 #[serde(rename = "abstract_only")]
8 AbstractOnly,
9 #[serde(rename = "full_text")]
10 #[default]
11 FullText,
12 #[serde(rename = "bibliographic_record")]
13 BibliographicRecord,
14}
15
16#[derive(Default, Clone, Debug, Serialize)]
17#[allow(dead_code)]
18pub enum Archive {
19 ADS,
20 BL,
21 #[serde(rename = "Cariniana Network")]
22 CarinianaNetwork,
23 CLOCKSS,
24 DWT,
25 HathiTrust,
26 #[serde(rename = "Internet Archive")]
27 #[default]
28 InternetArchive,
29 KB,
30 LOCKSS,
31 LOC,
32 NAA,
33 NARA,
34 NDPP,
35 NSK,
36 #[serde(rename = "PKP PN")]
37 PkpPn,
38 Portico,
39 PSNC,
40 #[serde(rename = "Scholars Portal")]
41 ScholarsPortal,
42 TNA,
43}
44
45#[derive(Debug, Clone, Default, Serialize)]
46#[serde(rename_all = "lowercase")]
47#[allow(dead_code)]
48pub enum ContentVersion {
49 #[default]
50 Vor, Am, }
53
54#[derive(Debug, Clone, Copy, Default, Serialize)]
55#[serde(rename_all = "lowercase")]
56#[allow(dead_code)]
57pub enum Iso639_1 {
58 Aa,
59 Ab,
60 Ae,
61 Af,
62 Ak,
63 Am,
64 An,
65 Ar,
66 As,
67 Av,
68 Ay,
69 Az,
70 Ba,
71 Be,
72 Bg,
73 Bh,
74 Bi,
75 Bm,
76 Bn,
77 Bo,
78 Br,
79 Bs,
80 Ca,
81 Ce,
82 Ch,
83 Co,
84 Cr,
85 Cs,
86 Cu,
87 Cv,
88 Cy,
89 Da,
90 De,
91 Dv,
92 Dz,
93 Ee,
94 El,
95 #[default]
96 En,
97 Eo,
98 Es,
99 Et,
100 Eu,
101 Fa,
102 Ff,
103 Fi,
104 Fj,
105 Fo,
106 Fr,
107 Fy,
108 Ga,
109 Gd,
110 Gl,
111 Gn,
112 Gu,
113 Gv,
114 Ha,
115 He,
116 Hi,
117 Ho,
118 Hr,
119 Ht,
120 Hu,
121 Hy,
122 Hz,
123 Ia,
124 Id,
125 Ie,
126 Ig,
127 Ii,
128 Ik,
129 Io,
130 Is,
131 It,
132 Iu,
133 Ja,
134 Jv,
135 Jw,
136 Ka,
137 Kg,
138 Ki,
139 Kj,
140 Kk,
141 Kl,
142 Km,
143 Kn,
144 Ko,
145 Kr,
146 Ks,
147 Ku,
148 Kv,
149 Kw,
150 Ky,
151 La,
152 Lb,
153 Lg,
154 Li,
155 Ln,
156 Lo,
157 Lt,
158 Lu,
159 Lv,
160 Mg,
161 Mh,
162 Mi,
163 Mk,
164 Ml,
165 Mn,
166 Mr,
167 Ms,
168 Mt,
169 Mu,
170 My,
171 Na,
172 Nb,
173 Nd,
174 Ne,
175 Ng,
176 Nl,
177 Nn,
178 No,
179 Nr,
180 Nv,
181 Ny,
182 Oc,
183 Oj,
184 Om,
185 Or,
186 Os,
187 Pa,
188 Pi,
189 Pl,
190 Ps,
191 Pt,
192 Qu,
193 Rm,
194 Rn,
195 Ro,
196 Ru,
197 Rw,
198 Sa,
199 Sc,
200 Sd,
201 Se,
202 Sg,
203 Si,
204 Sk,
205 Sl,
206 Sm,
207 Sn,
208 So,
209 Sq,
210 Sr,
211 Ss,
212 St,
213 Su,
214 Sv,
215 Sw,
216 Ta,
217 Te,
218 Tg,
219 Th,
220 Ti,
221 Tk,
222 Tl,
223 Tn,
224 To,
225 Tr,
226 Ts,
227 Tt,
228 Tw,
229 Ty,
230 Ug,
231 Uk,
232 Ur,
233 Uz,
234 Ve,
235 Vi,
236 Vo,
237 Wa,
238 Wo,
239 Xh,
240 Yi,
241 Yo,
242 Za,
243 Zh,
244 Zu,
245}
246
247impl Iso639_1 {
248 pub fn from_str(s: &str) -> Option<Self> {
249 match s {
250 "en" => Some(Iso639_1::En),
251 "de" => Some(Iso639_1::De),
252 "fr" => Some(Iso639_1::Fr),
253 "es" => Some(Iso639_1::Es),
254 "it" => Some(Iso639_1::It),
255 _ => None,
256 }
257 }
258}
259
260#[derive(Debug, Clone, Default, Serialize)]
261#[serde(rename_all = "lowercase")]
262#[allow(dead_code)]
263pub enum MediaType {
264 Print,
265 #[default]
266 Electronic,
267}
268
269#[derive(Debug, Clone, Default, Serialize)]
270#[serde(rename_all = "lowercase")]
271#[allow(dead_code)]
272pub enum MediaTypeDate {
273 Print,
274 #[default]
275 Online,
276 Other,
277}
278
279#[derive(Debug, Clone, Default, Serialize)]
280#[serde(rename_all = "lowercase")]
281#[allow(dead_code)]
282pub enum InstitutionIdType {
283 #[default]
284 Ror,
285 Isni,
286 Wikidata,
287}
288
289#[derive(Debug, Clone, Default, Serialize)]
290#[serde(rename_all = "lowercase")]
291#[allow(dead_code)]
292pub enum Sequence {
293 First,
294 #[default]
295 Additional,
296}
297
298#[derive(Debug, Clone, Default, Serialize)]
299#[serde(rename_all = "lowercase")]
300#[allow(dead_code)]
301pub enum ContributorRole {
302 #[default]
303 Author,
304 Editor,
305 Chair,
306 Reviewer,
307 #[serde(rename = "review-assistant")]
308 ReviewAssistant,
309 #[serde(rename = "stats-reviewer")]
310 StatsReviewer,
311 #[serde(rename = "reviewer-external")]
312 ReviewerExternal,
313 Reader,
314 Translator,
315}
316
317impl ContributorRole {
318 pub fn from_str(s: &str) -> Option<Self> {
319 match s {
320 "author" => Some(ContributorRole::Author),
321 "editor" => Some(ContributorRole::Editor),
322 "chair" => Some(ContributorRole::Chair),
323 "reviewer" => Some(ContributorRole::Reviewer),
324 "review-assistant" => Some(ContributorRole::ReviewAssistant),
325 "stats-reviewer" => Some(ContributorRole::StatsReviewer),
326 "reviewer-external" => Some(ContributorRole::ReviewerExternal),
327 "reader" => Some(ContributorRole::Reader),
328 "translator" => Some(ContributorRole::Translator),
329 _ => None,
330 }
331 }
332}
333
334#[derive(Debug, Clone, Default, Serialize)]
335#[serde(rename_all = "lowercase")]
336#[allow(dead_code)]
337pub enum NameStyle {
338 #[default]
339 Western,
340 Eastern,
341 Islensk,
342 #[serde(rename = "given-only")]
343 GivenOnly,
344}
345
346#[derive(Debug, Clone, Serialize)]
347#[serde(rename_all = "lowercase")]
348#[allow(dead_code)]
349pub enum UpdateType {
350 Addendum,
351 Clarification,
352 Correction,
353 Corrigendum,
354 Erratum,
355 #[serde(rename = "expression_of_concern")]
356 ExpressionOfConcern,
357 #[serde(rename = "new_edition")]
358 NewEdition,
359 #[serde(rename = "new_version")]
360 NewVersion,
361 #[serde(rename = "partial_retraction")]
362 PartialRetraction,
363 Removal,
364 Retraction,
365 Withdrawal,
366}
367
368#[derive(Debug, Clone, Default, Serialize)]
369#[allow(dead_code)]
370pub enum ParentRelation {
371 #[serde(rename = "isPartOf")]
372 #[default]
373 IsPartOf,
374 #[serde(rename = "isReferencedBy")]
375 IsReferencedBy,
376 #[serde(rename = "isRequiredBy")]
377 IsRequiredBy,
378 #[serde(rename = "isTranslationOf")]
379 IsTranslationOf,
380}
381
382#[derive(Debug, Clone, Serialize)]
383#[serde(rename_all = "lowercase")]
384#[allow(dead_code)]
385pub enum IdType {
386 Pii,
387 Sici,
388 Doi,
389 Dai,
390 #[serde(rename = "Z39.23")]
391 Z39_23,
392 #[serde(rename = "ISO-std-ref")]
393 IsoStdRef,
394 #[serde(rename = "std-designation")]
395 StdDesignation,
396 #[serde(rename = "report-number")]
397 ReportNumber,
398 Pmid,
399 Other,
400}