Skip to content

Commit 2148ccf

Browse files
committed
update Corpus() to take partial doi
The same as it can initialize an Article object from DOI, it can do that from a partial DOI as well.
1 parent 322e7d0 commit 2148ccf

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

allofplos/corpus/corpus.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
from itertools import islice
66

77
from .. import get_corpus_dir, Article
8-
from ..transformations import filename_to_doi, doi_to_path
8+
from ..transformations import filename_to_doi, doi_to_path, partial_to_doi
9+
from ..plos_regex import validate_doi, validate_partial_doi
910

1011

1112
class Corpus:
@@ -36,13 +37,16 @@ def __iter__(self):
3637
return (article for article in self.random_article_generator)
3738

3839
def __getitem__(self, key):
39-
4040
if isinstance(key, int):
4141
return Article(self.dois[key], directory=self.directory)
4242
elif isinstance(key, slice):
4343
return (Article(doi, directory=self.directory)
4444
for doi in self.dois[key])
4545
elif key not in self.dois:
46+
if partial_to_doi(key) in self.dois:
47+
return Article.from_partial_doi(key, directory=self.directory)
48+
elif validate_partial_doi(key):
49+
key = partial_to_doi(key)
4650
path= doi_to_path(key, directory=self.directory)
4751
raise IndexError(("You attempted get {doi} from "
4852
"the corpus at \n{directory}. \n"

0 commit comments

Comments
 (0)