Skip to main content

crossref_xml/
enums.rs

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, // "Version of Record"
51    Am, // "Author Manuscript"
52}
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}