Skip to content

Commit 30ee364

Browse files
committed
add two-way doi <-> partial_doi conversions
1 parent 8ca7b20 commit 30ee364

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

allofplos/transformations.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from . import get_corpus_dir
77

8-
from .plos_regex import validate_filename, validate_doi
8+
from .plos_regex import validate_filename, validate_doi, validate_partial_doi
99
from .elements import Journal
1010

1111
# URL bases for PLOS's Solr instances, that index PLOS articles
@@ -183,6 +183,22 @@ def doi_to_path(doi, directory=None):
183183
article_file = os.path.join(directory, doi.lstrip(PREFIX) + SUFFIX_LOWER)
184184
return article_file
185185

186+
def partial_to_doi(partial_doi):
187+
"""Convert a partial DOI into a DOI."""
188+
if validate_partial_doi(partial_doi) is False:
189+
raise Exception("Invalid format for PLOS partial DOI: {}".format(partial_doi))
190+
if partial_doi.startswith('annotation'):
191+
doi = PREFIX + partial_doi
192+
else:
193+
doi = ''.join([PREFIX, 'journal.', partial_doi])
194+
return doi
195+
196+
def doi_to_partial(doi):
197+
"""Convert a DOI into a partial DOI."""
198+
if validate_doi(doi) is False:
199+
raise Exception("Invalid format for PLOS DOI: {}".format(doi))
200+
return doi.lstrip('10.1371/').replace('journal.', '')
201+
186202

187203
def convert_country(country):
188204
"""

0 commit comments

Comments
 (0)