From 18ed2a762975d4486e89d85f89e4470a94a9e8d7 Mon Sep 17 00:00:00 2001 From: Olivier Mangin Date: Wed, 19 Jun 2013 16:43:18 +0200 Subject: [PATCH] Simplifies paper retrieval from repo. - Removes old paper_from_ref from repo. - Changes papers_from_citekey to get_paper. - Switches texnote plugin to new ref argument helpers. --- papers/commands/edit_cmd.py | 2 +- papers/commands/export_cmd.py | 2 +- papers/commands/open_cmd.py | 2 +- papers/plugins/texnote/texnote_cmd.py | 5 +++-- papers/repo.py | 10 +++------- tests/test_repo.py | 10 +++++----- 6 files changed, 14 insertions(+), 17 deletions(-) diff --git a/papers/commands/edit_cmd.py b/papers/commands/edit_cmd.py index d055150..dd630ef 100644 --- a/papers/commands/edit_cmd.py +++ b/papers/commands/edit_cmd.py @@ -16,7 +16,7 @@ def parser(subparsers, config): def command(config, ui, meta, reference): rp = repo.Repository.from_directory(config) key = parse_reference(ui, rp, reference) - paper = rp.paper_from_citekey(key) + paper = rp.get_paper(key) to_edit = 'bib' if meta: to_edit = 'meta' diff --git a/papers/commands/export_cmd.py b/papers/commands/export_cmd.py index f995f49..338026a 100644 --- a/papers/commands/export_cmd.py +++ b/papers/commands/export_cmd.py @@ -21,7 +21,7 @@ def command(config, ui, bib_format, references): :param bib_format (in 'bibtex', 'yaml') """ rp = repo.Repository.from_directory(config) - papers = [rp.paper_from_citekey(c) + papers = [rp.get_paper(c) for c in parse_references(ui, rp, references)] if len(papers) == 0: papers = rp.all_papers() diff --git a/papers/commands/open_cmd.py b/papers/commands/open_cmd.py index f4cd142..ad1c832 100644 --- a/papers/commands/open_cmd.py +++ b/papers/commands/open_cmd.py @@ -19,7 +19,7 @@ def parser(subparsers, config): def command(config, ui, with_command, reference): rp = repo.Repository.from_directory(config) key = parse_reference(ui, rp, reference) - paper = rp.paper_from_citekey(key) + paper = rp.get_paper(key) if with_command is None: with_command = config.get(configs.MAIN_SECTION, 'open-cmd') try: diff --git a/papers/plugins/texnote/texnote_cmd.py b/papers/plugins/texnote/texnote_cmd.py index cce803e..83b1ce3 100644 --- a/papers/plugins/texnote/texnote_cmd.py +++ b/papers/plugins/texnote/texnote_cmd.py @@ -19,6 +19,7 @@ from ... import repo from ...paper import NoDocumentFile from ... import configs from ... import files +from ...commands.helpers import add_references_argument, parse_reference TEXNOTE_SECTION = 'texnote' TEXNOTE_SAMPLE_FILE = os.path.join(os.path.dirname(__file__), 'note_sample.tex') @@ -26,8 +27,8 @@ TEXNOTE_DIR = 'texnote' def parser(subparsers, config): parser = subparsers.add_parser('texnote', help="edit advance note in latex") - parser.add_argument('ref', help='the paper associated citekey or number') parser.add_argument('-v', '--view', action='store_true', help='open the paper in a pdf viewer', default=None) + add_references_argument(parser, single=True) return parser @@ -43,7 +44,7 @@ def command(config, ui, ref, view): def open_texnote(config, ui, ref): rp = repo.Repository.from_directory(config) - paper = rp.paper_from_ref(ref, fatal=True) + paper = rp.get_paper(parse_reference(ui, rp, ref)) if not paper.metadata.has_key('texnote'): texnote_dir = os.path.join(rp.papersdir, TEXNOTE_DIR) diff --git a/papers/repo.py b/papers/repo.py index db4b1a5..4db7a67 100644 --- a/papers/repo.py +++ b/papers/repo.py @@ -34,7 +34,7 @@ class Repository(object): def has_paper(self, citekey): return citekey in self.citekeys - def paper_from_citekey(self, citekey): + def get_paper(self, citekey): """Load a paper by its citekey from disk, if necessary.""" return PaperInRepo.load( self, self.path_to_paper_file(citekey, 'bib'), @@ -52,10 +52,6 @@ class Repository(object): except (IndexError, ValueError): raise(InvalidReference) - def paper_from_ref(self, ref): - key = self.citekey_from_ref(ref) - return self.paper_from_citekey(key) - # creating new papers def add_paper(self, p): @@ -111,7 +107,7 @@ class Repository(object): self.remove(old_citekey) def remove(self, citekey): - paper = self.paper_from_citekey(citekey) + paper = self.get_paper(citekey) self.citekeys.remove(citekey) self.save() for f in ('bib', 'meta'): @@ -188,7 +184,7 @@ class Repository(object): def all_papers(self): for key in self.citekeys: - yield self.paper_from_citekey(key) + yield self.get_paper(key) def import_document(self, citekey, doc_file): if citekey not in self.citekeys: diff --git a/tests/test_repo.py b/tests/test_repo.py index 3717f61..730c44c 100644 --- a/tests/test_repo.py +++ b/tests/test_repo.py @@ -72,16 +72,16 @@ class TestUpdatePaper(TestRepo): self.repo.update(fixtures.turing1950, old_citekey='Doe2013') def test_updates_same_key(self): - new = self.repo.paper_from_citekey('Turing1950') + new = self.repo.get_paper('Turing1950') new.bibentry.fields['journal'] = u'Mind' self.repo.update(new) - self.assertEqual(new, self.repo.paper_from_citekey('Turing1950')) + self.assertEqual(new, self.repo.get_paper('Turing1950')) def test_updates_same_key_with_old_arg(self): - new = self.repo.paper_from_citekey('Turing1950') + new = self.repo.get_paper('Turing1950') new.bibentry.fields['journal'] = u'Mind' self.repo.update(new, old_citekey='Turing1950') - self.assertEqual(new, self.repo.paper_from_citekey('Turing1950')) + self.assertEqual(new, self.repo.get_paper('Turing1950')) def test_update_new_key_removes_old(self): self.repo.update(fixtures.doe2013, old_citekey='Turing1950') @@ -90,7 +90,7 @@ class TestUpdatePaper(TestRepo): def test_update_new_key_updates(self): self.repo.update(fixtures.doe2013, old_citekey='Turing1950') self.assertTrue(self.repo.has_paper('Doe2013')) - self.assertEqual(self.repo.paper_from_citekey('Doe2013'), + self.assertEqual(self.repo.get_paper('Doe2013'), PaperInRepo.from_paper(fixtures.doe2013, self.repo)) def test_update_new_key_moves_doc(self):