Blame bibutils/isitypes.c

Packit 89ede9
/*
Packit 89ede9
 * isitypes.c
Packit 89ede9
 *
Packit 89ede9
 * Copyright (c) Chris Putnam 2004-2018
Packit 89ede9
 *
Packit 89ede9
 * Program and source code released under the GPL version 2
Packit 89ede9
 *
Packit 89ede9
 */
Packit 89ede9
#include <stdio.h>
Packit 89ede9
#include <string.h>
Packit 89ede9
#include "is_ws.h"
Packit 89ede9
#include "fields.h"
Packit 89ede9
#include "reftypes.h"
Packit 89ede9
Packit 89ede9
static lookups article[] = {
Packit 89ede9
	{ "AU",     "AUTHOR",                PERSON,   LEVEL_MAIN },
Packit 89ede9
	{ "AF",     "AUTHOR",                PERSON,   LEVEL_MAIN },
Packit 89ede9
	{ "TI",     "TITLE",                 TITLE,    LEVEL_MAIN },
Packit 89ede9
	{ "SO",     "TITLE",                 TITLE,    LEVEL_HOST }, /* full journal name */
Packit 89ede9
	{ "JI",     "SHORTTITLE",            TITLE,    LEVEL_HOST }, /* abbr journal name */
Packit 89ede9
	{ "J9",     "SHORTTITLE",            TITLE,    LEVEL_HOST }, /* 29char journal name */
Packit 89ede9
	{ "PU",     "PUBLISHER",             SIMPLE,   LEVEL_HOST },
Packit 89ede9
	{ "PI",     "ADDRESS",               SIMPLE,   LEVEL_HOST }, /* publisher city */
Packit 89ede9
	{ "C1",     "ADDRESS",               SIMPLE,   LEVEL_MAIN }, /* author address */
Packit 89ede9
	{ "PA",     "ADDRESS",               SIMPLE,   LEVEL_HOST }, /* publisher address */
Packit 89ede9
	{ "RP",     "REPRINTADDRESS",        SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PY",     "PARTDATE:YEAR",         SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PD",     "PARTDATE:MONTH",        SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "VL",     "VOLUME",                SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "AR",     "ARTICLENUMBER",         SIMPLE,   LEVEL_MAIN }, /* AR=article number that Phys. Rev. B uses instead of page numbers */
Packit 89ede9
	{ "BP",     "PAGES:START",           SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "EP",     "PAGES:STOP",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PG",     "PAGES:TOTAL",           SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "IS",     "ISSUE",                 SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "SN",     "SERIALNUMBER",          SERIALNO, LEVEL_HOST },
Packit 89ede9
	{ "AB",     "ABSTRACT",              SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "NF",     "NOTES",                 NOTES,    LEVEL_MAIN },
Packit 89ede9
	{ "DE",     "KEYWORD",               KEYWORD,  LEVEL_MAIN }, /* author keywords */
Packit 89ede9
	{ "ID",     "KEYWORD",               KEYWORD,  LEVEL_MAIN }, /* new ISI keywords */
Packit 89ede9
	{ "LA",     "LANGUAGE",              SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "TC",     "TIMESCITED",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "NR",     "NUMBERREFS",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "CR",     "CITEDREFS",             SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PT",     " ",                     TYPE,     LEVEL_HOST },
Packit 89ede9
	{ "DT",     "DOCUMENTTYPE",          TYPE,     LEVEL_MAIN },
Packit 89ede9
	{ "GA",     "ISIDELIVERNUM",         SIMPLE,   LEVEL_MAIN }, /* ISI document delivery number */
Packit 89ede9
	{ "UT",     "ISIREFNUM",             SIMPLE,   LEVEL_MAIN }, /* ISI unique article identifer */
Packit 89ede9
	{ "DI",     "DOI",                   SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ " ",      "INTERNAL_TYPE|ARTICLE",           ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "ISSUANCE|continuing",             ALWAYS, LEVEL_HOST },
Packit 89ede9
	{ " ",      "RESOURCE|text",                   ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "GENRE:BIBUTILS|journal article",  ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "GENRE:MARC|periodical",           ALWAYS, LEVEL_HOST },
Packit 89ede9
	{ " ",      "GENRE:BIBUTILS|academic journal", ALWAYS, LEVEL_HOST }
Packit 89ede9
};
Packit 89ede9
Packit 89ede9
static lookups book[] = {
Packit 89ede9
	{ "AU",     "AUTHOR",                PERSON,   LEVEL_MAIN },
Packit 89ede9
	{ "AF",     "AUTHOR",                PERSON,   LEVEL_MAIN },
Packit 89ede9
	{ "TI",     "TITLE",                 TITLE,    LEVEL_MAIN },
Packit 89ede9
	{ "SO",     "TITLE",                 TITLE,    LEVEL_HOST }, /* full journal name */
Packit 89ede9
	{ "JI",     "SHORTTITLE",            TITLE,    LEVEL_HOST }, /* abbr journal name */
Packit 89ede9
	{ "J9",     "SHORTTITLE",            TITLE,    LEVEL_HOST }, /* 29char journal name */
Packit 89ede9
	{ "PU",     "PUBLISHER",             SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PI",     "ADDRESS",               SIMPLE,   LEVEL_MAIN }, /* publisher city */
Packit 89ede9
	{ "C1",     "ADDRESS",               SIMPLE,   LEVEL_MAIN }, /* author address */
Packit 89ede9
	{ "PA",     "ADDRESS",               SIMPLE,   LEVEL_MAIN }, /* publisher address */
Packit 89ede9
	{ "RP",     "REPRINTADDRESS",        SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PY",     "DATE:YEAR",             SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PD",     "DATE:MONTH",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "VL",     "VOLUME",                SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "BP",     "PAGES:START",           SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "EP",     "PAGES:STOP",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PG",     "PAGES:TOTAL",           SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "IS",     "ISSUE",                 SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "SN",     "SERIALNUMBER",          SERIALNO, LEVEL_HOST },
Packit 89ede9
	{ "AB",     "ABSTRACT",              SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "NF",     "NOTES",                 NOTES,    LEVEL_MAIN },
Packit 89ede9
	{ "DE",     "KEYWORD",               KEYWORD,  LEVEL_MAIN }, /* author keywords */
Packit 89ede9
	{ "ID",     "KEYWORD",               KEYWORD,  LEVEL_MAIN }, /* new ISI keywords */
Packit 89ede9
	{ "LA",     "LANGUAGE",              SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "TC",     "TIMESCITED",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "NR",     "NUMBERREFS",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "CR",     "CITEDREFS",             SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PT",     " ",                     TYPE,     LEVEL_MAIN },
Packit 89ede9
	{ "DT",     "DOCUMENTTYPE",          TYPE,     LEVEL_MAIN },
Packit 89ede9
	{ "GA",     "ISIDELIVERNUM",         SIMPLE,   LEVEL_MAIN }, /* ISI document delivery number */
Packit 89ede9
	{ "UT",     "ISIREFNUM",             SIMPLE,   LEVEL_MAIN }, /* ISI unique article identifer */
Packit 89ede9
	{ "PT",     " ",                     TYPE,     LEVEL_HOST },
Packit 89ede9
	{ "DI",     "DOI",                   SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ " ",      "INTERNAL_TYPE|BOOK",              ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "ISSUANCE|monographic",            ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "RESOURCE|text",                   ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "GENRE:MARC|book",                 ALWAYS, LEVEL_MAIN }
Packit 89ede9
};
Packit 89ede9
Packit 89ede9
static lookups inbook[] = {
Packit 89ede9
	{ "AU",     "AUTHOR",                PERSON,   LEVEL_MAIN },
Packit 89ede9
	{ "AF",     "AUTHOR",                PERSON,   LEVEL_MAIN },
Packit 89ede9
	{ "TI",     "TITLE",                 TITLE,    LEVEL_MAIN },
Packit 89ede9
	{ "SO",     "TITLE",                 TITLE,    LEVEL_HOST }, /* full journal name */
Packit 89ede9
	{ "JI",     "SHORTTITLE",            TITLE,    LEVEL_HOST }, /* abbr journal name */
Packit 89ede9
	{ "J9",     "SHORTTITLE",            TITLE,    LEVEL_HOST }, /* 29char journal name */
Packit 89ede9
	{ "PU",     "PUBLISHER",             SIMPLE,   LEVEL_HOST },
Packit 89ede9
	{ "PI",     "ADDRESS",               SIMPLE,   LEVEL_HOST }, /* publisher city */
Packit 89ede9
	{ "C1",     "ADDRESS",               SIMPLE,   LEVEL_MAIN }, /* author address */
Packit 89ede9
	{ "PA",     "ADDRESS",               SIMPLE,   LEVEL_HOST }, /* publisher address */
Packit 89ede9
	{ "RP",     "REPRINTADDRESS",        SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PY",     "PARTDATE:YEAR",         SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PD",     "PARTDATE:MONTH",        SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "VL",     "VOLUME",                SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "BP",     "PAGES:START",           SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "EP",     "PAGES:STOP",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PG",     "PAGES:TOTAL",           SIMPLE,   LEVEL_HOST },
Packit 89ede9
	{ "IS",     "ISSUE",                 SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "SN",     "SERIALNUMBER",          SERIALNO, LEVEL_HOST },
Packit 89ede9
	{ "AB",     "ABSTRACT",              SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "NF",     "NOTES",                 NOTES,    LEVEL_MAIN },
Packit 89ede9
	{ "DE",     "KEYWORD",               KEYWORD,  LEVEL_MAIN }, /* author keywords */
Packit 89ede9
	{ "ID",     "KEYWORD",               KEYWORD,  LEVEL_MAIN }, /* new ISI keywords */
Packit 89ede9
	{ "LA",     "LANGUAGE",              SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "TC",     "TIMESCITED",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "NR",     "NUMBERREFS",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "CR",     "CITEDREFS",             SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PT",     " ",                     TYPE,     LEVEL_HOST },
Packit 89ede9
	{ "DT",     "DOCUMENTTYPE",          TYPE,     LEVEL_MAIN },
Packit 89ede9
	{ "GA",     "ISIDELIVERNUM",         SIMPLE,   LEVEL_MAIN }, /* ISI document delivery number */
Packit 89ede9
	{ "UT",     "ISIREFNUM",             SIMPLE,   LEVEL_MAIN }, /* ISI unique article identifer */
Packit 89ede9
	{ "DI",     "DOI",                   SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ " ",      "INTERNAL_TYPE|INBOOK",            ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "RESOURCE|text",                   ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "ISSUANCE|monographic",            ALWAYS, LEVEL_HOST },
Packit 89ede9
        { " ",      "GENRE:BIBUTILS|book chapter",     ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "GENRE:MARC|book",                 ALWAYS, LEVEL_HOST }
Packit 89ede9
};
Packit 89ede9
Packit 89ede9
static lookups bookinseries[] = {
Packit 89ede9
	{ "AU",     "AUTHOR",                PERSON,   LEVEL_MAIN },
Packit 89ede9
	{ "AF",     "AUTHOR",                PERSON,   LEVEL_MAIN },
Packit 89ede9
	{ "TI",     "TITLE",                 TITLE,    LEVEL_MAIN },
Packit 89ede9
	{ "SO",     "TITLE",                 TITLE,    LEVEL_MAIN },
Packit 89ede9
	{ "SE",     "TITLE",                 TITLE,    LEVEL_HOST },
Packit 89ede9
	{ "BS",     "SUBTITLE",              TITLE,    LEVEL_HOST },
Packit 89ede9
	{ "JI",     "SHORTTITLE",            TITLE,    LEVEL_HOST }, /* abbr journal name */
Packit 89ede9
	{ "J9",     "SHORTTITLE",            TITLE,    LEVEL_HOST }, /* 29char journal name */
Packit 89ede9
	{ "PU",     "PUBLISHER",             SIMPLE,   LEVEL_HOST },
Packit 89ede9
	{ "PI",     "ADDRESS",               SIMPLE,   LEVEL_HOST }, /* publisher city */
Packit 89ede9
	{ "C1",     "ADDRESS",               SIMPLE,   LEVEL_MAIN }, /* author address */
Packit 89ede9
	{ "PA",     "ADDRESS",               SIMPLE,   LEVEL_HOST }, /* publisher address */
Packit 89ede9
	{ "RP",     "REPRINTADDRESS",        SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PY",     "PARTDATE:YEAR",         SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PD",     "PARTDATE:MONTH",        SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "VL",     "VOLUME",                SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "BP",     "PAGES:START",           SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "EP",     "PAGES:STOP",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PG",     "PAGES:TOTAL",           SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "IS",     "ISSUE",                 SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "SN",     "SERIALNUMBER",          SERIALNO, LEVEL_HOST },
Packit 89ede9
	{ "AB",     "ABSTRACT",              SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "NF",     "NOTES",                 NOTES,    LEVEL_MAIN },
Packit 89ede9
	{ "DE",     "KEYWORD",               KEYWORD,  LEVEL_MAIN }, /* author keywords */
Packit 89ede9
	{ "ID",     "KEYWORD",               KEYWORD,  LEVEL_MAIN }, /* new ISI keywords */
Packit 89ede9
	{ "LA",     "LANGUAGE",              SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "TC",     "TIMESCITED",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "NR",     "NUMBERREFS",            SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "CR",     "CITEDREFS",             SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ "PT",     " ",                     TYPE,     LEVEL_HOST },
Packit 89ede9
	{ "DT",     "DOCUMENTTYPE",          TYPE,     LEVEL_MAIN },
Packit 89ede9
	{ "GA",     "ISIDELIVERNUM",         SIMPLE,   LEVEL_MAIN }, /* ISI document delivery number */
Packit 89ede9
	{ "UT",     "ISIREFNUM",             SIMPLE,   LEVEL_MAIN }, /* ISI unique article identifer */
Packit 89ede9
	{ "DI",     "DOI",                   SIMPLE,   LEVEL_MAIN },
Packit 89ede9
	{ " ",      "INTERNAL_TYPE|INCOLLECTION",      ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "ISSUANCE|monographic",            ALWAYS, LEVEL_HOST },
Packit 89ede9
	{ " ",      "RESOURCE|text",                   ALWAYS, LEVEL_MAIN },
Packit 89ede9
	{ " ",      "GENRE:BIBUTILS|collection",       ALWAYS, LEVEL_MAIN }
Packit 89ede9
};
Packit 89ede9
Packit 89ede9
#define ORIG(a) ( &(a[0]) )
Packit 89ede9
#define SIZE(a) ( sizeof( a ) / sizeof( lookups ) )
Packit 89ede9
#define REFTYPE(a,b) { a, ORIG(b), SIZE(b) }
Packit 89ede9
Packit 89ede9
variants isi_all[] = {
Packit 89ede9
	REFTYPE( "Journal", article ),
Packit 89ede9
	REFTYPE( "J", article ),
Packit 89ede9
	REFTYPE( "Book", book ),
Packit 89ede9
	REFTYPE( "B", book ),
Packit 89ede9
	REFTYPE( "Chapter", inbook ),
Packit 89ede9
	REFTYPE( "S", bookinseries ),
Packit 89ede9
};
Packit 89ede9
Packit 89ede9
int isi_nall = sizeof( isi_all ) / sizeof( variants );
Packit 89ede9