Metadata-Version: 2.0
Name: RISparser
Version: 0.4.3
Summary: Reads RIS files into dictionaries via a generator for large files
Home-page: https://github.com/mrtango/RISparser
Author: Maik Derstappen (MrTango)
Author-email: md@derico.de
License: GNU General Public License v2 (GPLv2)
Keywords: RIS parser bibliograph
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Provides-Extra: dev
Requires-Dist: check-manifest; extra == 'dev'
Requires-Dist: wheel; extra == 'dev'
Provides-Extra: test
Requires-Dist: coverage; extra == 'test'
Requires-Dist: pytest; extra == 'test'

Pure Python RIS files parser
============================

Usage
-----

.. code:: python

   >>> import os
   >>> from pprint import pprint
   >>> from RISparser import readris
   >>> filepath = 'tests/example_full.ris'
   >>> with open(filepath, 'r') as bibliography_file:
   ...     entries = readris(bibliography_file)
   ...     for entry in entries:
   ...         print(entry['id'])
   ...         print(entry['first_authors'])
   12345
   ['Marx, Karl', 'Lindgren, Astrid']
   12345
   ['Marxus, Karlus', 'Lindgren, Astrid']


Example RIS entry
-----------------

.. code:: text

   1.
   TY  - JOUR
   ID  - 12345
   T1  - Title of reference
   A1  - Marx, Karl
   A1  - Lindgren, Astrid
   A2  - Glattauer, Daniel
   Y1  - 2014//
   N2  - BACKGROUND: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.  RESULTS: Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. CONCLUSIONS: Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium.
   KW  - Pippi
   KW  - Nordwind
   KW  - Piraten
   JF  - Lorem
   JA  - lorem
   VL  - 9
   IS  - 3
   SP  - e0815
   CY  - United States
   PB  - Fun Factory
   PB  - Fun Factory USA
   SN  - 1932-6208
   M1  - 1008150341
   L2  - http://example.com
   ER  -


TAG_KEY_MAPPING
---------------

The most fields contain string values, but some like first_authors (A1) are parsed into lists.

Complete list of ListType tags
******************************

.. code:: python

    >>> from RISparser.config import LIST_TYPE_TAGS
    >>> pprint(LIST_TYPE_TAGS)
    ('A1', 'A2', 'A3', 'A4', 'AU', 'KW', 'N1')


Complete default mapping
************************

.. code:: python

    >>> from RISparser.config import TAG_KEY_MAPPING
    >>> pprint(TAG_KEY_MAPPING)
    {'A1': 'first_authors',
     'A2': 'secondary_authors',
     'A3': 'tertiary_authors',
     'A4': 'subsidiary_authors',
     'AB': 'abstract',
     'AD': 'author_address',
     'AN': 'accession_number',
     'AU': 'authors',
     'C1': 'custom1',
     'C2': 'custom2',
     'C3': 'custom3',
     'C4': 'custom4',
     'C5': 'custom5',
     'C6': 'custom6',
     'C7': 'custom7',
     'C8': 'custom8',
     'CA': 'caption',
     'CN': 'call_number',
     'CY': 'place_published',
     'DA': 'date',
     'DB': 'name_of_database',
     'DO': 'doi',
     'DP': 'database_provider',
     'EP': 'end_page',
     'ER': 'end_of_reference',
     'ET': 'edition',
     'ID': 'id',
     'IS': 'number',
     'J2': 'alternate_title1',
     'JA': 'alternate_title2',
     'JF': 'alternate_title3',
     'JO': 'journal_name',
     'KW': 'keywords',
     'L1': 'file_attachments1',
     'L2': 'file_attachments2',
     'L4': 'figure',
     'LA': 'language',
     'LB': 'label',
     'M1': 'note',
     'M3': 'type_of_work',
     'N1': 'notes',
     'N2': 'abstract',
     'NV': 'number_of_Volumes',
     'OP': 'original_publication',
     'PB': 'publisher',
     'PY': 'year',
     'RI': 'reviewed_item',
     'RN': 'research_notes',
     'RP': 'reprint_edition',
     'SE': 'version',
     'SN': 'issn',
     'SP': 'start_page',
     'ST': 'short_title',
     'T1': 'primary_title',
     'T2': 'secondary_title',
     'T3': 'tertiary_title',
     'TA': 'translated_author',
     'TI': 'title',
     'TT': 'translated_title',
     'TY': 'type_of_reference',
     'UK': 'unknown_tag',
     'UR': 'url',
     'VL': 'volume',
     'Y1': 'publication_year',
     'Y2': 'access_date'}

Override key mapping
********************

The parser use a ``TAG_KEY_MAPPING``, which one can override by calling ``readris()`` with a custom mapping.

.. code:: python

   >>> import os
   >>> from RISparser import readris, TAG_KEY_MAPPING
   >>> from pprint import pprint

   >>> filepath = 'tests/example_full.ris'
   >>> mapping = TAG_KEY_MAPPING
   >>> mapping["SP"] = "pages_this_is_my_fun"
   >>> with open(filepath, 'r') as bibliography_file:
   ...     entries = list(readris(bibliography_file, mapping=mapping))
   ...     pprint(sorted(entries[0].keys()))
   ['abstract',
    'alternate_title2',
    'alternate_title3',
    'file_attachments2',
    'first_authors',
    'id',
    'issn',
    'keywords',
    'note',
    'number',
    'pages_this_is_my_fun',
    'place_published',
    'primary_title',
    'publication_year',
    'publisher',
    'secondary_authors',
    'type_of_reference',
    'url',
    'volume']


Tests
-----

Tests are launched via the command-line using pytest_:

.. _pytest: https://pypi.python.org/pypi/pytest

.. code:: bash

   $ cd <path_to_the_repo>/RISparser
   $ py.test


