123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044 |
- import { isBoolString } from 'src/app/utils/js-utils';
- import { xmlParser } from '.';
- import {
- AccMat, Acquisition, Additional, Additions, AdminInfo, AltIdentifier, Binding, BindingDesc, Collation, CollectionEl, Condition,
- CustEvent, CustodialHist, DecoDesc, DecoNote, Depth, Dim, Dimensions, Explicit, Filiation, FinalRubric, Foliation,
- G, HandDesc, HandNote, Head, Height, History, Identifier, Incipit, Institution, Layout, LayoutDesc, Locus, LocusGrp, MaterialValues,
- MsContents, MsDesc, MsFrag, MsIdentifier, MsItem, MsItemStruct, MsName, MsPart, MusicNotation, Note, ObjectDesc, OrigDate,
- Origin, OrigPlace, Paragraph, PhysDesc, Provenance, RecordHist, Repository, Rubric, ScriptDesc, Seal, SealDesc, Source, Summary,
- Support, SupportDesc, Surrogates, Text, TypeDesc, TypeNote, Width, XMLElement,
- } from '../../models/evt-models';
- import { GenericElemParser, queryAndParseElement, queryAndParseElements } from './basic-parsers';
- import { GParser } from './character-declarations-parser';
- import { createParser, getClass, getDefaultN, getID, parseChildren, Parser, unhandledElement } from './parser-models';
- class GAttrParser extends GenericElemParser {
- protected gParser = createParser(GParser, this.genericParse);
- }
- @xmlParser('dim', DimParser)
- export class DimParser extends GAttrParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Dim {
- const genericElem = super.parse(xml);
- const { dimType, scope, extent, unit, quantity, atLeast, atMost, min, max } = genericElem.attributes;
- return {
- ...genericElem,
- type: Dim,
- scope,
- extent,
- unit,
- quantity: quantity ? parseInt(quantity, 10) : undefined,
- atLeast: atLeast ? parseInt(atLeast, 10) : undefined,
- atMost: atMost ? parseInt(atMost, 10) : undefined,
- min: min ? parseInt(min, 10) : undefined,
- max: max ? parseInt(max, 10) : undefined,
- dimType,
- gEl: queryAndParseElements<G>(xml, 'g'),
- };
- }
- }
- @xmlParser('depth', DepthParser)
- export class DepthParser extends GAttrParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Depth {
- const genericElem = super.parse(xml);
- const { scope, extent, unit, quantity, atLeast, atMost, min, max } = genericElem.attributes;
- return {
- ...genericElem,
- type: Depth,
- scope,
- extent,
- unit,
- quantity: quantity ? parseInt(quantity, 10) : undefined,
- atLeast: atLeast ? parseInt(atLeast, 10) : undefined,
- atMost: atMost ? parseInt(atMost, 10) : undefined,
- min: min ? parseInt(min, 10) : undefined,
- max: max ? parseInt(max, 10) : undefined,
- gEl: queryAndParseElements<G>(xml, 'g'),
- };
- }
- }
- @xmlParser('width', WidthParser)
- export class WidthParser extends GAttrParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Width {
- const genericElem = super.parse(xml);
- const { scope, extent, unit, quantity, atLeast, atMost, min, max } = genericElem.attributes;
- return {
- ...genericElem,
- type: Width,
- scope,
- extent,
- unit,
- quantity: quantity ? parseInt(quantity, 10) : undefined,
- atLeast: atLeast ? parseInt(atLeast, 10) : undefined,
- atMost: atMost ? parseInt(atMost, 10) : undefined,
- min: min ? parseInt(min, 10) : undefined,
- max: max ? parseInt(max, 10) : undefined,
- gEl: queryAndParseElements<G>(xml, 'g'),
- };
- }
- }
- @xmlParser('height', HeightParser)
- export class HeightParser extends GAttrParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Height {
- const genericElem = super.parse(xml);
- const { scope, extent, unit, quantity, atLeast, atMost, min, max } = genericElem.attributes;
- return {
- ...genericElem,
- type: Height,
- scope,
- extent,
- unit,
- quantity: quantity ? parseInt(quantity, 10) : undefined,
- atLeast: atLeast ? parseInt(atLeast, 10) : undefined,
- atMost: atMost ? parseInt(atMost, 10) : undefined,
- min: min ? parseInt(min, 10) : undefined,
- max: max ? parseInt(max, 10) : undefined,
- gEl: queryAndParseElements<G>(xml, 'g'),
- };
- }
- }
- @xmlParser('dimensions', DimensionsParser)
- export class DimensionsParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Dimensions {
- const genericElem = super.parse(xml);
- const { dimensionsType, scope, extent, unit, quantity, atLeast, atMost, min, max } = genericElem.attributes;
- return {
- ...genericElem,
- type: Dimensions,
- dimensionsType,
- scope,
- extent,
- unit,
- quantity: quantity ? parseInt(quantity, 10) : undefined,
- atLeast: atLeast ? parseInt(atLeast, 10) : undefined,
- atMost: atMost ? parseInt(atMost, 10) : undefined,
- min: min ? parseInt(min, 10) : undefined,
- max: max ? parseInt(max, 10) : undefined,
- height: queryAndParseElement<Height>(xml, 'height'),
- width: queryAndParseElement<Width>(xml, 'width'),
- depth: queryAndParseElement<Depth>(xml, 'depth'),
- dim: queryAndParseElement<Dim>(xml, 'dim'),
- };
- }
- }
- @xmlParser('acquisition', AcquisitionParser)
- export class AcquisitionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Acquisition {
- const genericElem = super.parse(xml);
- const { notBefore, notAfter } = genericElem.attributes;
- return {
- ...genericElem,
- type: Acquisition,
- notBefore,
- notAfter,
- name: unhandledElement(xml, 'name', this.genericParse),
- };
- }
- }
- @xmlParser('origDate', OrigDateParser)
- export class OrigDateParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): OrigDate {
- const genericElem = super.parse(xml);
- const { notBefore, notAfter, when, origDateType } = genericElem.attributes;
- return {
- ...genericElem,
- type: OrigDate,
- notBefore,
- notAfter,
- when,
- origDateType,
- };
- }
- }
- @xmlParser('origPlace', OrigPlaceParser)
- export class OrigPlaceParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): OrigPlace {
- const genericElem = super.parse(xml);
- const { key, origPlaceType } = genericElem.attributes;
- return {
- ...genericElem,
- type: OrigPlace,
- key,
- origPlaceType,
- };
- }
- }
- @xmlParser('origin', OriginParser)
- export class OriginParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Origin {
- const genericElem = super.parse(xml);
- const { notBefore, notAfter, evidence, resp } = genericElem.attributes;
- return {
- ...genericElem,
- type: Origin,
- notBefore,
- notAfter,
- evidence,
- resp,
- origDate: queryAndParseElement(xml, 'origDate'),
- origPlace: queryAndParseElement(xml, 'origPlace'),
- };
- }
- }
- @xmlParser('provenance', ProvenanceParser)
- export class ProvenanceParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Provenance {
- const genericElem = super.parse(xml);
- const { when } = genericElem.attributes;
- return {
- ...genericElem,
- type: Acquisition,
- when,
- };
- }
- }
- @xmlParser('history', HistoryParser)
- export class HistoryParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): History {
- return {
- ...super.parse(xml),
- type: History,
- acquisition: queryAndParseElement(xml, 'acquisition'),
- origin: queryAndParseElement(xml, 'origin'),
- provenance: queryAndParseElements(xml, 'provenance'),
- summary: queryAndParseElement(xml, 'summary'),
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('layout', LayoutParser)
- export class LayoutParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Layout {
- const genericElem = super.parse(xml);
- const { columns, streams, ruledLines, writtenLines } = genericElem.attributes;
- return {
- ...genericElem,
- type: LayoutDesc,
- columns: columns ? parseInt(columns, 10) : undefined,
- streams: streams ? parseInt(streams, 10) : undefined,
- ruledLines: ruledLines ? parseInt(ruledLines, 10) : undefined,
- writtenLines: writtenLines ? parseInt(writtenLines, 10) : undefined,
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('layoutDesc', LayoutDescParser)
- export class LayoutDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): LayoutDesc {
- return {
- ...super.parse(xml),
- type: LayoutDesc,
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- ab: unhandledElement(xml, 'ab', this.genericParse),
- summary: queryAndParseElement(xml, 'provenance'),
- layout: queryAndParseElement(xml, 'layout'),
- };
- }
- }
- @xmlParser('support', SupportParser)
- export class SupportParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Support {
- return {
- ...super.parse(xml),
- type: Support,
- material: unhandledElement(xml, 'material', this.genericParse),
- watermark: unhandledElement(xml, 'watermark', this.genericParse),
- };
- }
- }
- @xmlParser('collation', CollationParser)
- export class CollationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Collation {
- return {
- ...super.parse(xml),
- type: Collation,
- pEl: queryAndParseElements(xml, 'p'),
- };
- }
- }
- @xmlParser('condition', ConditionParser)
- export class ConditionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Condition {
- return {
- ...super.parse(xml),
- type: Condition,
- pEl: queryAndParseElements(xml, 'p'),
- };
- }
- }
- @xmlParser('foliation', FoliationParser)
- export class FoliationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Foliation {
- return {
- ...super.parse(xml),
- type: Foliation,
- id: getID(xml),
- pEl: queryAndParseElements(xml, 'p'),
- };
- }
- }
- @xmlParser('supportDesc', SupportDescParser)
- export class SupportDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): SupportDesc {
- return {
- ...super.parse(xml),
- type: SupportDesc,
- material: xml.getAttribute('material') as MaterialValues,
- pEl: queryAndParseElements(xml, 'p'),
- ab: unhandledElement(xml, 'ab', this.genericParse),
- extents: unhandledElement(xml, 'extent', this.genericParse),
- support: queryAndParseElement(xml, 'support'),
- collation: queryAndParseElement(xml, 'collation'),
- foliation: queryAndParseElement(xml, 'foliation'),
- condition: queryAndParseElement(xml, 'condition'),
- };
- }
- }
- @xmlParser('objectDesc', ObjectDescParser)
- export class ObjectDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): ObjectDesc {
- const genericElem = super.parse(xml);
- const { form } = genericElem.attributes;
- return {
- ...genericElem,
- type: ObjectDesc,
- form,
- layoutDesc: queryAndParseElement(xml, 'layoutDesc'),
- supportDesc: queryAndParseElement(xml, 'supportDesc'),
- pEl: queryAndParseElements(xml, 'p'),
- };
- }
- }
- @xmlParser('decoNote', DecoNoteParser)
- export class DecoNoteParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): DecoNote {
- const genericElem = super.parse(xml);
- const { decoNoteType } = genericElem.attributes;
- return {
- ...genericElem,
- type: DecoNote,
- decoNoteType,
- watermark: unhandledElement(xml, 'watermark', this.genericParse),
- };
- }
- }
- @xmlParser('binding', BindingParser)
- export class BindingParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Binding {
- return {
- ...super.parse(xml),
- type: Binding,
- contemporary: true || false,
- decoNote: queryAndParseElements(xml, 'decoNote'),
- pEl: queryAndParseElements(xml, 'p'),
- condition: unhandledElement(xml, 'condition', this.genericParse),
- ab: unhandledElement(xml, 'ab', this.genericParse),
- };
- }
- }
- @xmlParser('bindingDesc', BindingDescParser)
- export class BindingDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): BindingDesc {
- return {
- ...super.parse(xml),
- type: BindingDesc,
- condition: unhandledElement(xml, 'condition', this.genericParse),
- decoNote: queryAndParseElements(xml, 'decoNote'),
- binding: queryAndParseElements(xml, 'binding'),
- pEl: queryAndParseElements(xml, 'p'),
- };
- }
- }
- @xmlParser('summary', SummaryParser)
- export class SummaryParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Summary {
- return {
- ...super.parse(xml),
- type: Summary,
- pEl: queryAndParseElements(xml, 'p'),
- };
- }
- }
- @xmlParser('decoDesc', DecoDescParser)
- export class DecoDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): DecoDesc {
- return {
- ...super.parse(xml),
- type: DecoDesc,
- decoNote: queryAndParseElement(xml, 'decoNote'),
- pEl: queryAndParseElements(xml, 'p'),
- summary: queryAndParseElement(xml, 'summary'),
- ab: unhandledElement(xml, 'ab', this.genericParse),
- };
- }
- }
- @xmlParser('handDesc', HandDescParser)
- export class HandDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): HandDesc {
- const genericElem = super.parse(xml);
- const { hands } = genericElem.attributes;
- return {
- ...genericElem,
- type: HandDesc,
- hands,
- handNote: queryAndParseElements<HandNote>(xml, 'handNote'),
- };
- }
- }
- @xmlParser('additions', AdditionsParser)
- export class AdditionsParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Additions {
- return {
- ...super.parse(xml),
- type: Additions,
- pEl: queryAndParseElements(xml, 'p'),
- };
- }
- }
- @xmlParser('scriptDesc', ScriptDescParser)
- export class ScriptDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): ScriptDesc {
- return {
- ...super.parse(xml),
- type: ScriptDesc,
- content: parseChildren(xml, this.genericParse),
- attributes: this.attributeParser.parse(xml),
- summary: queryAndParseElement(xml, 'summary'),
- scriptNote: unhandledElement(xml, 'scriptNote', this.genericParse),
- };
- }
- }
- @xmlParser('seal', SealParser)
- export class SealParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Seal {
- const genericElem = super.parse(xml);
- const { n, sealType } = genericElem.attributes;
- return {
- ...genericElem,
- type: Seal,
- contemporary: isBoolString(xml.getAttribute('contemporary')),
- decoNote: queryAndParseElement(xml, 'decoNote'),
- sealType,
- n: getDefaultN(n),
- pEl: queryAndParseElements(xml, 'p'),
- ab: unhandledElement(xml, 'ab', this.genericParse),
- };
- }
- }
- @xmlParser('sealDesc', SealDescParser)
- export class SealDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): SealDesc {
- return {
- ...super.parse(xml),
- type: SealDesc,
- seal: queryAndParseElement(xml, 'seal'),
- };
- }
- }
- @xmlParser('typeNote', TypeNoteParser)
- export class TypeNoteParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): TypeNote {
- const genericElem = super.parse(xml);
- const { scope } = genericElem.attributes;
- return {
- ...genericElem,
- type: TypeNote,
- id: getID(xml),
- scope,
- };
- }
- }
- @xmlParser('typeDesc', TypeDescParser)
- export class TypeDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): TypeDesc {
- return {
- ...super.parse(xml),
- type: TypeDesc,
- summary: queryAndParseElement(xml, 'summary'),
- typeNote: queryAndParseElement(xml, 'typeNote'),
- };
- }
- }
- @xmlParser('accMat', AccMatParser)
- export class AccMatParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): AccMat {
- return {
- ...super.parse(xml),
- type: AccMat,
- pEl: queryAndParseElements(xml, 'p'),
- };
- }
- }
- @xmlParser('musicNotation', MusicNotationParser)
- export class MusicNotationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): MusicNotation {
- return {
- ...super.parse(xml),
- type: MusicNotation,
- term: unhandledElement(xml, 'term', this.genericParse),
- };
- }
- }
- @xmlParser('physDesc', PhysDescParser)
- export class PhysDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): PhysDesc {
- return {
- ...super.parse(xml),
- type: PhysDesc,
- objectDesc: queryAndParseElement(xml, 'objectDesc'),
- bindingDesc: queryAndParseElement(xml, 'bindingDesc'),
- decoDesc: queryAndParseElement(xml, 'decoDesc'),
- handDesc: queryAndParseElement(xml, 'handDesc'),
- accMat: queryAndParseElement(xml, 'accMat'),
- additions: queryAndParseElement(xml, 'additions'),
- musicNotation: queryAndParseElement(xml, 'musicNotation'),
- scriptDesc: queryAndParseElement(xml, 'scriptDesc'),
- sealDesc: queryAndParseElement(xml, 'sealDesc'),
- typeDesc: queryAndParseElement(xml, 'typeDesc'),
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('finalRubric', FinalRubricParser)
- export class FinalRubricParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): FinalRubric {
- return {
- ...super.parse(xml),
- type: FinalRubric,
- lbEl: queryAndParseElements(xml, 'lb'),
- };
- }
- }
- @xmlParser('locus', LocusParser)
- export class LocusParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Locus {
- const genericElem = super.parse(xml);
- const { scheme, from, to, facs, target } = genericElem.attributes;
- return {
- ...genericElem,
- type: Locus,
- scheme,
- from,
- to,
- facs,
- target,
- gEl: queryAndParseElements(xml, 'g'),
- locus: queryAndParseElement(xml, 'locus'),
- hi: unhandledElement(xml, 'hi', this.genericParse),
- };
- }
- }
- @xmlParser('locusGrp', LocusGrpParser)
- export class LocusGrpParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): LocusGrp {
- const genericElem = super.parse(xml);
- const { scheme } = genericElem.attributes;
- return {
- ...genericElem,
- type: LocusGrp,
- scheme,
- locus: queryAndParseElement(xml, 'locus'),
- };
- }
- }
- @xmlParser('incipit', IncipitParser)
- export class IncipitParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Incipit {
- const genericElem = super.parse(xml);
- const { lang } = genericElem.attributes;
- return {
- ...genericElem,
- type: Incipit,
- defective: isBoolString(xml.getAttribute('defective')),
- lang,
- lbEl: queryAndParseElements(xml, 'lb'),
- locus: queryAndParseElement(xml, 'locus'),
- };
- }
- }
- @xmlParser('explicit', ExplicitParser)
- export class ExplicitParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Explicit {
- const genericElem = super.parse(xml);
- const { lang } = genericElem.attributes;
- return {
- ...genericElem,
- type: Explicit,
- defective: isBoolString(xml.getAttribute('defective')),
- lang,
- locus: queryAndParseElement(xml, 'locus'),
- };
- }
- }
- @xmlParser('rubric', RubricParser)
- export class RubricParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Rubric {
- const genericElem = super.parse(xml);
- const { lang, rend } = genericElem.attributes;
- return {
- ...genericElem,
- type: Rubric,
- lang,
- rend,
- lbEl: queryAndParseElements(xml, 'lb'),
- locus: queryAndParseElement(xml, 'locus'),
- stamp: unhandledElement(xml, 'stamp', this.genericParse),
- };
- }
- }
- @xmlParser('filiation', FiliationParser)
- export class FiliationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Filiation {
- const genericElem = super.parse(xml);
- const { filiationType } = genericElem.attributes;
- return {
- ...genericElem,
- type: Filiation,
- filiationType,
- };
- }
- }
- @xmlParser('msItemStruct', MsItemStructParser)
- export class MsItemStructParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): MsItemStruct {
- const genericElem = super.parse(xml);
- const { n } = genericElem.attributes;
- return {
- ...genericElem,
- type: MsItemStruct,
- n: getDefaultN(n),
- defective: isBoolString(xml.getAttribute('defective')),
- authors: unhandledElement(xml, 'author', this.genericParse),
- titles: unhandledElement(xml, 'title', this.genericParse),
- textLangs: unhandledElement(xml, 'textLang', this.genericParse),
- bibl: unhandledElement(xml, 'bibl', this.genericParse),
- respStmt: unhandledElement(xml, 'respStmt', this.genericParse),
- quote: unhandledElement(xml, 'quote', this.genericParse),
- listBibl: unhandledElement(xml, 'listBibl', this.genericParse),
- colophons: unhandledElement(xml, 'colophon', this.genericParse),
- rubric: queryAndParseElement<Rubric>(xml, 'rubric'),
- incipit: queryAndParseElement<Incipit>(xml, 'incipit'),
- explicit: queryAndParseElement<Explicit>(xml, 'explicit'),
- finalRubric: queryAndParseElement<FinalRubric>(xml, 'finalRubric'),
- decoNote: queryAndParseElement<DecoNote>(xml, 'decoNote'),
- filiation: queryAndParseElements<Filiation>(xml, 'filiation'),
- locus: queryAndParseElement<Locus>(xml, 'locus'),
- noteEl: queryAndParseElements<Note>(xml, 'note'),
- };
- }
- }
- @xmlParser('msItem', MsItemParser)
- export class MsItemParser extends MsItemStructParser implements Parser<XMLElement> {
- parse(xml: XMLElement): MsItem {
- return {
- ...super.parse(xml),
- type: MsItem,
- docAuthors: unhandledElement(xml, 'docAuthor', this.genericParse),
- docTitles: unhandledElement(xml, 'docTitle', this.genericParse),
- docImprints: unhandledElement(xml, 'docImprint', this.genericParse),
- docDate: unhandledElement(xml, 'docDate', this.genericParse),
- locusGrp: queryAndParseElement<LocusGrp>(xml, 'locusGrp'),
- gapEl: queryAndParseElements(xml, 'gap'),
- msItem: queryAndParseElements(xml, 'msItem'),
- };
- }
- }
- @xmlParser('custEvent', CustEventParser)
- export class CustEventParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CustEvent {
- const genericElem = super.parse(xml);
- const { notBefore, notAfter, when, from, to, custEventType } = genericElem.attributes;
- return {
- ...super.parse(xml),
- type: CustEvent,
- notBefore,
- notAfter,
- when,
- from,
- to,
- custEventType,
- };
- }
- }
- @xmlParser('custodialHist', CustodialHistParser)
- export class CustodialHistParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CustodialHist {
- return {
- ...super.parse(xml),
- type: CustodialHist,
- custEvent: queryAndParseElements(xml, 'custEvent'),
- ab: unhandledElement(xml, 'ab', this.genericParse),
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('source', SourceParser)
- export class SourceParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Source {
- return {
- ...super.parse(xml),
- type: Source,
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('recordHist', RecordHistParser)
- export class RecordHistParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): RecordHist {
- return {
- ...super.parse(xml),
- type: RecordHist,
- changes: unhandledElement(xml, 'change', this.genericParse),
- source: queryAndParseElements(xml, 'source'),
- ab: unhandledElement(xml, 'ab', this.genericParse),
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('adminInfo', AdminInfoParser)
- export class AdminInfoParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): AdminInfo {
- return {
- ...super.parse(xml),
- type: AdminInfo,
- noteEl: queryAndParseElements(xml, 'note'),
- availabilities: unhandledElement(xml, 'availability', this.genericParse),
- custodialHist: queryAndParseElement(xml, 'custodialHist'),
- recordHist: queryAndParseElement(xml, 'recordHist'),
- };
- }
- }
- @xmlParser('surrogates', SurrogatesParser)
- export class SurrogatesParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Surrogates {
- return {
- ...super.parse(xml),
- type: Surrogates,
- bibls: unhandledElement(xml, 'bibl', this.genericParse),
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('additional', AdditionalParser)
- export class AdditionalParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Additional {
- return {
- ...super.parse(xml),
- type: Summary,
- class: getClass(xml),
- content: parseChildren(xml, this.genericParse),
- attributes: this.attributeParser.parse(xml),
- listBibls: unhandledElement(xml, 'listBibl', this.genericParse),
- adminInfo: queryAndParseElement(xml, 'adminInfo'),
- surrogates: queryAndParseElement(xml, 'surrogates'),
- };
- }
- }
- @xmlParser('repository', RepositoryParser)
- export class RepositoryParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Repository {
- const genericElem = super.parse(xml);
- const { lang } = genericElem.attributes;
- return {
- ...genericElem,
- type: Repository,
- lang,
- };
- }
- }
- @xmlParser('msContents', MsContentsParser)
- export class MsContentsParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): MsContents {
- return {
- ...super.parse(xml),
- type: MsContents,
- summary: queryAndParseElement(xml, 'summary'),
- msItem: queryAndParseElements(xml, 'msItem'),
- msItemStruct: queryAndParseElement(xml, 'msItemStruct'),
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- textLangs: unhandledElement(xml, 'textLang', this.genericParse),
- };
- }
- }
- @xmlParser('collection', CollectionParser)
- export class CollectionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CollectionEl {
- const genericElem = super.parse(xml);
- const { collectionType } = genericElem.attributes;
- return {
- ...genericElem,
- type: CollectionEl,
- collectionType,
- };
- }
- }
- @xmlParser('evt-identifier-parser', IdentifierParser)
- class IdentifierParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Identifier {
- return {
- ...super.parse(xml),
- type: Identifier,
- collection: queryAndParseElements(xml, 'collection'),
- repository: queryAndParseElement(xml, 'repository'),
- idnos: unhandledElement(xml, 'idno', this.genericParse),
- regions: unhandledElement(xml, 'region', this.genericParse),
- settlements: unhandledElement(xml, 'settlement', this.genericParse),
- countries: unhandledElement(xml, 'country', this.genericParse),
- };
- }
- }
- @xmlParser('altIdentifier', AltIdentifierParser)
- export class AltIdentifierParser extends IdentifierParser implements Parser<XMLElement> {
- parse(xml: XMLElement): AltIdentifier {
- return {
- ...super.parse(xml),
- type: AltIdentifier,
- noteEl: queryAndParseElements(xml, 'note'),
- };
- }
- }
- @xmlParser('msName', MsNameParser)
- export class MsNameParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): MsName {
- return {
- ...super.parse(xml),
- type: AltIdentifier,
- name: unhandledElement(xml, 'name', this.genericParse),
- rs: unhandledElement(xml, 'rs', this.genericParse),
- gEl: queryAndParseElements(xml, 'g'),
- };
- }
- }
- @xmlParser('institution', InstitutionParser)
- export class InstitutionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Institution {
- return {
- ...super.parse(xml),
- type: Institution,
- country: unhandledElement(xml, 'country', this.genericParse),
- region: unhandledElement(xml, 'region', this.genericParse),
- };
- }
- }
- @xmlParser('msIdentifier', MsIdentifierParser)
- export class MsIdentifierParser extends IdentifierParser implements Parser<XMLElement> {
- parse(xml: XMLElement): MsIdentifier {
- return {
- ...super.parse(xml),
- type: MsIdentifier,
- id: getID(xml),
- institution: queryAndParseElement(xml, 'institution'),
- altIdentifier: queryAndParseElements(xml, 'altIdentifier'),
- msName: queryAndParseElements(xml, 'msName'),
- };
- }
- }
- @xmlParser('head', HeadParser)
- export class HeadParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Head {
- const genericElem = super.parse(xml);
- const { place, rend, style, rendition, facs, n } = genericElem.attributes;
- return {
- ...genericElem,
- type: Head,
- n: getDefaultN(n),
- place,
- rend,
- rendition,
- style,
- facs,
- lbEl: queryAndParseElements(xml, 'lb'),
- hi: unhandledElement(xml, 'hi', this.genericParse),
- title: unhandledElement(xml, 'title', this.genericParse),
- origPlace: queryAndParseElement(xml, 'origPlace'),
- origDate: queryAndParseElement(xml, 'origDate'),
- };
- }
- }
- @xmlParser('msFrag', MsFragParser)
- export class MsFragParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): MsFrag {
- return {
- ...super.parse(xml),
- type: MsFrag,
- additional: queryAndParseElement(xml, 'additional'),
- altIdentifier: queryAndParseElement(xml, 'altIdentifier'),
- history: queryAndParseElement(xml, 'history'),
- msContents: queryAndParseElement(xml, 'msContents'),
- msIdentifier: queryAndParseElement(xml, 'msIdentifier'),
- physDesc: queryAndParseElement(xml, 'physDesc'),
- pEl: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('msPart', MsPartParser)
- export class MsPartParser extends MsFragParser implements Parser<XMLElement> {
- parse(xml: XMLElement): MsPart {
- return {
- ...super.parse(xml),
- type: MsPart,
- msParts: queryAndParseElements(xml, 'msPart'),
- head: queryAndParseElement(xml, 'head'),
- };
- }
- }
- @xmlParser('msDesc', MsDescParser)
- export class MsDescParser extends MsPartParser implements Parser<XMLElement> {
- private msDescCounter = 0;
- parse(xml: XMLElement): MsDesc {
- const genericElem = super.parse(xml);
- const { n, label } = genericElem.attributes;
- let firstIdnoValue = '';
- const msDesc: MsDesc = {
- ...super.parse(xml),
- type: MsDesc,
- id: getID(xml),
- n: getDefaultN(n),
- label,
- msFrags: queryAndParseElements(xml, 'msFrag'),
- };
- firstIdnoValue = this.getFirstIdnoValue(msDesc);
- msDesc.label = xml.getAttribute('n') || xml.getAttribute('xml:id') || firstIdnoValue;
- return msDesc;
- }
- getFirstIdnoValue(ms) {
- this.msDescCounter++;
- if (ms.msIdentifier.idnos.length > 0) {
- const item = ms.msIdentifier.idnos[0].filter((el: Text) => el.text?.trim() || el.content?.length > 0);
- if (item[0].text) {
- return item[0].text.trim();
- }
- if (item[0].content.length > 0){
- return (item[0].content[0].text);
- }
- }
- return `MS Desc ${this.msDescCounter}`;
- }
- }
|