Adds argument to ignore fields in export. [Closes #67]
`pubs export --ignore-fields abstract,note CiteKey`
This commit is contained in:
parent
07be993d02
commit
860181e278
@ -1,5 +1,7 @@
|
||||
from __future__ import print_function
|
||||
|
||||
import argparse
|
||||
|
||||
from .. import repo
|
||||
from ..uis import get_ui
|
||||
from .. import endecoder
|
||||
@ -7,8 +9,17 @@ from ..utils import resolve_citekey_list
|
||||
from ..completion import CiteKeyCompletion
|
||||
|
||||
|
||||
class CommaSeparatedList(argparse.Action):
|
||||
|
||||
def __call__(self, parser, namespace, values, option_string=None):
|
||||
setattr(namespace, self.dest, [s for s in values.split(',') if s])
|
||||
|
||||
|
||||
def parser(subparsers, conf):
|
||||
parser = subparsers.add_parser('export', help='export bibliography')
|
||||
parser.add_argument(
|
||||
'--ignore-fields', default=[], action=CommaSeparatedList,
|
||||
help='exclude field(s) from output (comma separated if multiple)')
|
||||
# parser.add_argument('-f', '--bib-format', default='bibtex',
|
||||
# help='export format')
|
||||
parser.add_argument('citekeys', nargs='*', help='one or several citekeys'
|
||||
@ -36,7 +47,7 @@ def command(conf, args):
|
||||
bib[p.citekey] = p.bibdata
|
||||
|
||||
exporter = endecoder.EnDecoder()
|
||||
bibdata_raw = exporter.encode_bibdata(bib)
|
||||
bibdata_raw = exporter.encode_bibdata(bib, args.ignore_fields)
|
||||
ui.message(bibdata_raw)
|
||||
|
||||
rp.close()
|
||||
|
@ -669,6 +669,16 @@ class TestUsecase(DataCommandTestCase):
|
||||
self.assertEqual(endecoder.EnDecoder().decode_bibdata(outs[2]),
|
||||
fixtures.page_bibentry)
|
||||
|
||||
def test_export_ignore_field(self):
|
||||
cmds = ['pubs init',
|
||||
('pubs add', [str_fixtures.bibtex_external0]),
|
||||
'pubs export --ignore-fields author,title Page99',
|
||||
]
|
||||
outs = self.execute_cmds(cmds)
|
||||
expected = endecoder.EnDecoder().encode_bibdata(
|
||||
fixtures.page_bibentry, ignore_fields=['author', 'title'])
|
||||
self.assertEqual(outs[2], expected + os.linesep)
|
||||
|
||||
def test_import(self):
|
||||
cmds = ['pubs init',
|
||||
'pubs import data/',
|
||||
|
Loading…
x
Reference in New Issue
Block a user