Adds argument to ignore fields in export. [Closes #67]

`pubs export --ignore-fields abstract,note CiteKey`
main
Olivier Mangin 7 years ago
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…
Cancel
Save