123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876 |
- import { isNestedInElem } from 'src/app/utils/dom-utils';
- import { isBoolString } from 'src/app/utils/js-utils';
- import { xmlParser } from '.';
- import {
- Abstract, Calendar, CalendarDesc, CatRef, Change, Channel, ChannelMode, ClassCode, Constitution,
- Correction, CorrectionMethod, CorrectionStatus, CorrespAction, CorrespActionType, CorrespContext, CorrespDesc, Creation, CRefPattern,
- Degree, Derivation, Description, Domain, EditionStmt, EditorialDecl, EncodingDesc, Extent, Factuality, FileDesc, GenericElement,
- HandNote, HandNotes, HandNoteScope, Hyphenation, HyphenationEol, Interaction, Interpretation,
- Keywords, Language, LangUsage, ListChange, ListTranspose, MsDesc, NamedEntitiesList, NamedEntityRef, Namespace, Normalization,
- NormalizationMethod, Note, NotesStmt, Paragraph, ParticDesc, Preparedness, ProfileDesc, ProjectDesc, Ptr, PublicationStmt,
- Punctuation, PunctuationMarks, PunctuationPlacement,
- Purpose, Quotation, QuotationMarks, RefsDecl, RefState, Rendition, RenditionScope, Resp, RespStmt, RevisionDesc,
- SamplingDecl, Scheme, Segmentation, SeriesStmt, Setting, SettingDesc, SourceDesc, Status, StdVals,
- TagsDecl, TagUsage, Term, TextClass, TextDesc, TitleStmt, Transpose, XMLElement,
- } from '../../models/evt-models';
- import { GenericElemParser, GenericParser, parseElement, queryAndParseElement, queryAndParseElements } from './basic-parsers';
- import { NamedEntityRefParser } from './named-entity-parsers';
- import { complexElements, createParser, getDefaultAttr, getID, Parser } from './parser-models';
- @xmlParser('resp', RespParser)
- export class RespParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Resp {
- const { ref, when } = this.attributeParser.parse(xml);
- const normalizedResp = ref?.indexOf('http://') < 0 && ref?.indexOf('https://') < 0 ? `http://${ref}` : ref ?? '';
- return {
- ...super.parse(xml),
- type: Resp,
- normalizedResp,
- date: when || '',
- };
- }
- }
- @xmlParser('respStmt', RespStmtParser)
- export class RespStmtParser extends GenericElemParser implements Parser<XMLElement> {
- private namedEntityRefParser = createParser(NamedEntityRefParser, this.genericParse);
- parse(xml: XMLElement): RespStmt {
- const people = Array.from(xml.querySelectorAll<XMLElement>(':scope > name, :scope > orgName, :scope > persName'))
- .map(p => {
- if (['orgName', 'persName'].includes(p.tagName)) {
- return this.namedEntityRefParser.parse(p) as NamedEntityRef;
- }
- return this.genericParse(p) as GenericElement;
- });
- return {
- ...super.parse(xml),
- type: RespStmt,
- responsibility: queryAndParseElement<Resp>(xml, 'resp'),
- notes: queryAndParseElements<Note>(xml, 'note'),
- people,
- };
- }
- }
- @xmlParser('titleStmt', TitleStmtParser)
- export class TitleStmtParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): TitleStmt {
- const title = queryAndParseElements<GenericElement>(xml, 'title[type="main"]');
- return {
- ...super.parse(xml),
- type: TitleStmt,
- titles: title.length > 0 ? title : queryAndParseElements<GenericElement>(xml, 'title:not([type="sub"])'),
- subtitles: queryAndParseElements<GenericElement>(xml, 'title[type="sub"]'),
- authors: queryAndParseElements<GenericElement>(xml, 'author'),
- editors: queryAndParseElements<GenericElement>(xml, 'editor'),
- sponsors: queryAndParseElements<GenericElement>(xml, 'sponsor'),
- funders: queryAndParseElements<GenericElement>(xml, 'funder'),
- principals: queryAndParseElements<GenericElement>(xml, 'principal'),
- respStmts: queryAndParseElements<RespStmt>(xml, 'respStmt'),
- };
- }
- }
- @xmlParser('editionStmt', EditionStmtParser)
- export class EditionStmtParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): EditionStmt {
- return {
- ...super.parse(xml),
- type: EditionStmt,
- edition: queryAndParseElements<GenericElement>(xml, 'edition'),
- respStmt: queryAndParseElements<RespStmt>(xml, 'respStmt'),
- structuredData: Array.from(xml.children).filter(el => el.tagName === 'p').length !== xml.children.length,
- };
- }
- }
- @xmlParser('publicationStmt', PublicationStmtParser)
- export class PublicationStmtParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): PublicationStmt {
- return {
- ...super.parse(xml),
- type: PublicationStmt,
- structuredData: Array.from(xml.children).filter(el => el.tagName === 'p').length !== xml.children.length,
- publisher: queryAndParseElements<GenericElement>(xml, 'publisher'),
- distributor: queryAndParseElements<GenericElement>(xml, 'distributor'),
- authority: queryAndParseElements<GenericElement>(xml, 'authority'),
- pubPlace: queryAndParseElements<GenericElement>(xml, 'pubPlace'),
- address: queryAndParseElements<GenericElement>(xml, 'address'),
- idno: queryAndParseElements<GenericElement>(xml, 'idno'),
- availability: queryAndParseElements<GenericElement>(xml, 'availability'),
- date: queryAndParseElements<GenericElement>(xml, 'date'),
- licence: queryAndParseElements<GenericElement>(xml, 'licence'),
- };
- }
- }
- @xmlParser('seriesStmt', SeriesStmtParser)
- export class SeriesStmtParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): SeriesStmt {
- return {
- ...super.parse(xml),
- type: SeriesStmt,
- structuredData: Array.from(xml.querySelectorAll(':scope > p')).length === 0,
- title: queryAndParseElements<GenericElement>(xml, 'title'),
- idno: queryAndParseElements<GenericElement>(xml, 'idno'),
- respStmt: queryAndParseElements<RespStmt>(xml, 'respStmt'),
- editor: queryAndParseElements<GenericElement>(xml, 'editor'),
- biblScope: queryAndParseElements<GenericElement>(xml, 'biblScope'),
- };
- }
- }
- @xmlParser('notesStmt', NotesStmtParser)
- export class NotesStmtParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): NotesStmt {
- return {
- ...super.parse(xml),
- type: NotesStmt,
- notes: queryAndParseElements<Note>(xml, 'note').map(el => ({
- ...el,
- noteLayout: 'plain-text',
- })),
- relatedItems: queryAndParseElements<GenericElement>(xml, 'relatedItem'),
- };
- }
- }
- @xmlParser('sourceDesc', SourceDescParser)
- export class SourceDescParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): SourceDesc {
- return {
- ...super.parse(xml),
- type: SourceDesc,
- structuredData: Array.from(xml.children).filter(el => el.tagName === 'p').length !== xml.children.length,
- msDescs: queryAndParseElements<MsDesc>(xml, 'msDesc'),
- bibl: queryAndParseElements<GenericElement>(xml, 'bibl'),
- biblFull: queryAndParseElements<GenericElement>(xml, 'biblFull'),
- biblStruct: queryAndParseElements<GenericElement>(xml, 'biblStruct'),
- recordingStmt: queryAndParseElements<GenericElement>(xml, 'recordingStmt'),
- scriptStmt: queryAndParseElements<GenericElement>(xml, 'scriptStmt'),
- };
- }
- }
- @xmlParser('extent', ExtentParser)
- export class ExtentParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Extent {
- return {
- ...super.parse(xml),
- type: Extent,
- };
- }
- }
- @xmlParser('fileDesc', FileDescParser)
- export class FileDescParser extends GenericElemParser implements Parser<XMLElement> {
- private excludeFromParsing = [
- 'listBibl',
- 'listEvent',
- 'listOrg',
- 'listPerson',
- 'listPlace',
- 'listWit',
- // 'sourceDesc list',
- // 'list'
- ];
- parse(xml: XMLElement): FileDesc {
- xml = xml.cloneNode(true) as XMLElement;
- Array.from(xml.querySelectorAll<XMLElement>(this.excludeFromParsing.toString()))
- .filter((list) => !isNestedInElem(list, list.tagName))
- .forEach(el => el.remove());
- return {
- ...super.parse(xml),
- type: FileDesc,
- titleStmt: queryAndParseElement<TitleStmt>(xml, 'titleStmt'),
- editionStmt: queryAndParseElement<EditionStmt>(xml, 'editionStmt'),
- publicationStmt: queryAndParseElement<PublicationStmt>(xml, 'publicationStmt'),
- sourceDesc: queryAndParseElement<SourceDesc>(xml, 'sourceDesc'),
- extent: queryAndParseElement<Extent>(xml, 'extent'),
- notesStmt: queryAndParseElement<NotesStmt>(xml, 'notesStmt'),
- seriesStmt: queryAndParseElement<SeriesStmt>(xml, 'seriesStmt'),
- };
- }
- }
- @xmlParser('projectDesc', ProjectDescParser)
- export class ProjectDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): ProjectDesc {
- return {
- ...super.parse(xml),
- type: ProjectDesc,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('samplingDecl', SamplingDeclParser)
- export class SamplingDeclParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): SamplingDecl {
- return {
- ...super.parse(xml),
- type: SamplingDecl,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('correction', CorrectionParser)
- export class CorrectionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Correction {
- return {
- ...super.parse(xml),
- type: Correction,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- status: xml.getAttribute('status') as CorrectionStatus,
- method: xml.getAttribute('method') as CorrectionMethod || 'silent',
- };
- }
- }
- @xmlParser('normalization', NormalizationParser)
- export class NormalizationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Normalization {
- return {
- ...super.parse(xml),
- type: Normalization,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- sources: xml.getAttribute('source')?.split(' ') || [],
- method: xml.getAttribute('method') as NormalizationMethod || 'silent',
- };
- }
- }
- @xmlParser('punctuation', PunctuationParser)
- export class PunctuationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Punctuation {
- return {
- ...super.parse(xml),
- type: Punctuation,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- marks: xml.getAttribute('marks') as PunctuationMarks,
- placement: xml.getAttribute('placement') as PunctuationPlacement,
- };
- }
- }
- @xmlParser('quotation', QuotationParser)
- export class QuotationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Quotation {
- return {
- ...super.parse(xml),
- type: Quotation,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- marks: xml.getAttribute('marks') as QuotationMarks,
- };
- }
- }
- @xmlParser('hyphenation', HyphenationParser)
- export class HyphenationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Hyphenation {
- return {
- ...super.parse(xml),
- type: Hyphenation,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- eol: xml.getAttribute('eol') as HyphenationEol,
- };
- }
- }
- @xmlParser('segmentation', SegmentationParser)
- export class SegmentationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Segmentation {
- return {
- ...super.parse(xml),
- type: Segmentation,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('stdVals', StdValsParser)
- export class StdValsParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): StdVals {
- return {
- ...super.parse(xml),
- type: StdVals,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('interpretation', InterpretationParser)
- export class InterpretationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Interpretation {
- return {
- ...super.parse(xml),
- type: Interpretation,
- content: queryAndParseElements<Paragraph>(xml, 'p'),
- };
- }
- }
- @xmlParser('editorialDecl', EditorialDeclParser)
- export class EditorialDeclParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): EditorialDecl {
- return {
- ...super.parse(xml),
- type: EditorialDecl,
- structuredData: Array.from(xml.children).filter(el => el.tagName === 'p').length !== xml.children.length,
- correction: queryAndParseElements<Correction>(xml, 'correction'),
- hyphenation: queryAndParseElements<Hyphenation>(xml, 'hyphenation'),
- interpretation: queryAndParseElements<Interpretation>(xml, 'interpretation'),
- normalization: queryAndParseElements<Normalization>(xml, 'normalization'),
- punctuation: queryAndParseElements<Punctuation>(xml, 'punctuation'),
- quotation: queryAndParseElements<Quotation>(xml, 'quotation'),
- segmentation: queryAndParseElements<Segmentation>(xml, 'segmentation'),
- stdVals: queryAndParseElements<StdVals>(xml, 'stdVals'),
- };
- }
- }
- @xmlParser('rendition', RenditionParser)
- export class RenditionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Rendition {
- return {
- ...super.parse(xml),
- type: Rendition,
- id: getID(xml),
- scope: xml.getAttribute('scope') as RenditionScope || '',
- selector: xml.getAttribute('selector') || '',
- scheme: xml.getAttribute('scheme') as Scheme || undefined,
- schemeVersion: xml.getAttribute('schemeVersion') || '',
- };
- }
- }
- @xmlParser('tagUsage', TagUsageParser)
- export class TagUsageParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): TagUsage {
- return {
- ...super.parse(xml),
- type: TagUsage,
- gi: xml.getAttribute('gi'),
- occurs: parseInt(xml.getAttribute('occurs'), 10) || undefined,
- withId: parseInt(xml.getAttribute('withId'), 10) || undefined,
- };
- }
- }
- @xmlParser('namespace', NamespaceParser)
- export class NamespaceParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Namespace {
- return {
- ...super.parse(xml),
- type: Namespace,
- name: xml.getAttribute('name') || '',
- tagUsage: queryAndParseElements<TagUsage>(xml, 'tagUsage'),
- };
- }
- }
- @xmlParser('tagsDecl', TagsDeclParser)
- export class TagsDeclParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): TagsDecl {
- return {
- ...super.parse(xml),
- type: TagsDecl,
- rendition: queryAndParseElements<Rendition>(xml, 'rendition'),
- namespace: queryAndParseElements<Namespace>(xml, 'namespace'),
- };
- }
- }
- @xmlParser('cRefPattern', CRefPatternParser)
- export class CRefPatternParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CRefPattern {
- return {
- ...super.parse(xml),
- type: CRefPattern,
- matchPattern: xml.getAttribute('matchPattern'),
- replacementPattern: xml.getAttribute('replacementPattern'),
- };
- }
- }
- @xmlParser('refState', RefStateParser)
- export class RefStateParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): RefState {
- return {
- ...super.parse(xml),
- type: RefState,
- ed: xml.getAttribute('ed'),
- unit: xml.getAttribute('unit'),
- length: parseInt(xml.getAttribute('length'), 10) || 0,
- delim: xml.getAttribute('delim'),
- };
- }
- }
- @xmlParser('refsDecl', RefsDeclParser)
- export class RefsDeclParser extends GenericElemParser implements Parser<XMLElement> {
- cRefPatternParser = createParser(CRefPatternParser, this.genericParse);
- refStateParser = createParser(RefStateParser, this.genericParse);
- parse(xml: XMLElement): RefsDecl {
- return {
- ...super.parse(xml),
- type: RefsDecl,
- structuredData: Array.from(xml.children).filter(el => el.tagName === 'p').length !== xml.children.length,
- cRefPattern: queryAndParseElements<CRefPattern>(xml, 'cRefPattern'),
- refState: queryAndParseElements<RefState>(xml, 'refState'),
- };
- }
- }
- @xmlParser('encodingDesc', EncodingDescParser)
- export class EncodingDescParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): EncodingDesc {
- return {
- ...super.parse(xml),
- type: EncodingDesc,
- structuredData: Array.from(xml.children).filter(el => el.tagName === 'p').length !== xml.children.length,
- projectDesc: queryAndParseElements<ProjectDesc>(xml, 'projectDesc'),
- samplingDecl: queryAndParseElements<SamplingDecl>(xml, 'samplingDecl'),
- editorialDecl: queryAndParseElements<EditorialDecl>(xml, 'editorialDecl'),
- tagsDecl: queryAndParseElements<TagsDecl>(xml, 'tagsDecl'),
- styleDefDecl: queryAndParseElement<GenericElement>(xml, 'styleDefDecl'),
- refsDecl: queryAndParseElements<RefsDecl>(xml, 'refsDecl'),
- classDecl: queryAndParseElements<GenericElement>(xml, 'classDecl'),
- geoDecl: queryAndParseElements<GenericElement>(xml, 'geoDecl'),
- unitDecl: queryAndParseElements<GenericElement>(xml, 'unitDecl'),
- schemaSpec: queryAndParseElements<GenericElement>(xml, 'schemaSpec'),
- schemaRef: queryAndParseElements<GenericElement>(xml, 'schemaRef'),
- };
- }
- }
- @xmlParser('abstract', AbstractParser)
- export class AbstractParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Abstract {
- return {
- ...super.parse(xml),
- type: Abstract,
- resp: xml.getAttribute('resp'),
- lang: xml.getAttribute('xml:lang'),
- };
- }
- }
- @xmlParser('calendar', CalendarParser)
- export class CalendarParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Calendar {
- return {
- ...super.parse(xml),
- type: Calendar,
- id: xml.getAttribute('xml:id'),
- target: xml.getAttribute('target'),
- };
- }
- }
- @xmlParser('calendarDesc', CalendarDescParser)
- export class CalendarDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CalendarDesc {
- return {
- ...super.parse(xml),
- type: CalendarDesc,
- calendars: queryAndParseElements<Calendar>(xml, 'calendar'),
- };
- }
- }
- @xmlParser('correspAction', CorrespActionParser)
- export class CorrespActionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CorrespAction {
- return {
- ...super.parse(xml),
- type: CorrespAction,
- actionType: xml.getAttribute('type') as CorrespActionType,
- };
- }
- }
- @xmlParser('correspContext', CorrespContextParser)
- export class CorrespContextParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CorrespContext {
- return {
- ...super.parse(xml),
- type: CorrespContext,
- };
- }
- }
- @xmlParser('correspDesc', CorrespDescParser)
- export class CorrespDescParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CorrespDesc {
- return {
- ...super.parse(xml),
- type: CorrespDesc,
- content: queryAndParseElements<CorrespAction | CorrespContext | Note | Paragraph>(xml, 'correspAction, correspContext, note, p'),
- };
- }
- }
- @xmlParser('creation', CreationParser)
- export class CreationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Creation {
- return {
- ...super.parse(xml),
- type: Creation,
- };
- }
- }
- @xmlParser('language', LanguageParser)
- export class LanguageParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Language {
- return {
- ...super.parse(xml),
- type: Language,
- ident: xml.getAttribute('ident'),
- usage: parseInt(xml.getAttribute('usage'), 10) || undefined,
- };
- }
- }
- @xmlParser('langUsage', LangUsageParser)
- export class LangUsageParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): LangUsage {
- return {
- ...super.parse(xml),
- type: LangUsage,
- structuredData: Array.from(xml.querySelectorAll<XMLElement>(':scope > p')).length > 0,
- languages: queryAndParseElements<Language>(xml, 'language'),
- };
- }
- }
- @xmlParser('classCode', ClassCodeParser)
- export class ClassCodeParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): ClassCode {
- return {
- ...super.parse(xml),
- type: ClassCode,
- scheme: xml.getAttribute('scheme'),
- };
- }
- }
- @xmlParser('catRef', CatRefParser)
- export class CatRefParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): CatRef {
- return {
- ...super.parse(xml),
- type: CatRef,
- scheme: xml.getAttribute('scheme'),
- target: xml.getAttribute('target'),
- };
- }
- }
- @xmlParser('keywords', KeywordsParser)
- export class KeywordsParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Keywords {
- return {
- ...super.parse(xml),
- type: Keywords,
- scheme: xml.getAttribute('scheme'),
- terms: queryAndParseElements<Term>(xml, 'term'),
- };
- }
- }
- @xmlParser('textClass', TextClassParser)
- export class TextClassParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): TextClass {
- return {
- ...super.parse(xml),
- type: TextClass,
- keywords: queryAndParseElements<Keywords>(xml, 'keywords'),
- catRef: queryAndParseElements<CatRef>(xml, 'catRef'),
- classCode: queryAndParseElements<ClassCode>(xml, 'classCode'),
- };
- }
- }
- @xmlParser('handNote', HandNoteParser)
- export class HandNoteParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): HandNote {
- return {
- ...super.parse(xml),
- type: HandNote,
- id: getID(xml),
- scribe: xml.getAttribute('scribe'),
- scribeRef: xml.getAttribute('scribeRef'),
- script: xml.getAttribute('script'),
- scriptRef: xml.getAttribute('scriptRef'),
- medium: xml.getAttribute('medium'),
- scope: xml.getAttribute('scope') as HandNoteScope,
- };
- }
- }
- @xmlParser('handNotes', HandNotesParser)
- export class HandNotesParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): HandNotes {
- return {
- ...super.parse(xml),
- type: HandNotes,
- content: queryAndParseElements<HandNote>(xml, 'keywords'),
- };
- }
- }
- @xmlParser('transpose', TransposeParser)
- export class TransposeParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Transpose {
- return {
- ...super.parse(xml),
- type: Transpose,
- content: queryAndParseElements<Ptr>(xml, 'ptr'),
- };
- }
- }
- @xmlParser('listTranspose', ListTransposeParser)
- export class ListTransposeParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): ListTranspose {
- return {
- ...super.parse(xml),
- type: ListTranspose,
- description: queryAndParseElements<Description>(xml, 'desc'),
- transposes: queryAndParseElements<Transpose>(xml, 'transpose'),
- };
- }
- }
- @xmlParser('channel', ChannelParser)
- export class ChannelParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Channel {
- return {
- ...super.parse(xml),
- type: Channel,
- mode: xml.getAttribute('mode') as ChannelMode,
- };
- }
- }
- @xmlParser('constitution', ConstitutionParser)
- export class ConstitutionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Constitution {
- return {
- ...super.parse(xml),
- type: Constitution,
- constitutionType: xml.getAttribute('type'),
- };
- }
- }
- @xmlParser('derivation', DerivationParser)
- export class DerivationParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Derivation {
- return {
- ...super.parse(xml),
- type: Derivation,
- derivationType: xml.getAttribute('type'),
- };
- }
- }
- @xmlParser('domain', DomainParser)
- export class DomainParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Domain {
- return {
- ...super.parse(xml),
- type: Domain,
- domainType: xml.getAttribute('type'),
- };
- }
- }
- @xmlParser('factuality', FactualityParser)
- export class FactualityParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Factuality {
- return {
- ...super.parse(xml),
- type: Factuality,
- factualityType: xml.getAttribute('type'),
- };
- }
- }
- @xmlParser('interaction', InteractionParser)
- export class InteractionParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Interaction {
- return {
- ...super.parse(xml),
- type: Interaction,
- interactionType: xml.getAttribute('type'),
- active: xml.getAttribute('type'),
- passive: xml.getAttribute('type'),
- };
- }
- }
- @xmlParser('preparedness', PreparednessParser)
- export class PreparednessParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Preparedness {
- return {
- ...super.parse(xml),
- type: Preparedness,
- preparednessType: xml.getAttribute('type'),
- };
- }
- }
- @xmlParser('purpose', PurposeParser)
- export class PurposeParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Purpose {
- return {
- ...super.parse(xml),
- type: Purpose,
- purposeType: xml.getAttribute('type'),
- degree: xml.getAttribute('degree') as Degree,
- };
- }
- }
- @xmlParser('change', ChangeParser)
- export class ChangeParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Change {
- return {
- ...super.parse(xml),
- type: Change,
- id: getID(xml),
- who: getDefaultAttr(xml.getAttribute('who')).replace('#', ''),
- status: xml.getAttribute('status') as Status,
- when: xml.getAttribute('when'),
- notBefore: xml.getAttribute('notBefore'),
- notAfter: xml.getAttribute('notAfter'),
- targets: getDefaultAttr(xml.getAttribute('target')).split(' ').map(t => t.replace('#', '')),
- };
- }
- }
- @xmlParser('textDesc', TextDescParser)
- export class TextDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): TextDesc {
- return {
- ...super.parse(xml),
- type: TextDesc,
- channel: queryAndParseElements<Channel>(xml, 'channel'),
- constitution: queryAndParseElements<Constitution>(xml, 'constitution'),
- derivation: queryAndParseElements<Derivation>(xml, 'derivation'),
- domain: queryAndParseElements<Domain>(xml, 'domain'),
- factuality: queryAndParseElements<Factuality>(xml, 'factuality'),
- interaction: queryAndParseElements<Interaction>(xml, 'interaction'),
- preparedness: queryAndParseElements<Preparedness>(xml, 'preparedness'),
- purpose: queryAndParseElements<Purpose>(xml, 'purpose'),
- };
- }
- }
- @xmlParser('particDesc', ParticDescParser)
- export class ParticDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): ParticDesc {
- return {
- ...super.parse(xml),
- type: ParticDesc,
- structuredData: Array.from(xml.children).filter(el => el.tagName === 'p').length !== xml.children.length,
- participants: queryAndParseElements<NamedEntitiesList>(xml, 'listPerson').concat(queryAndParseElements<NamedEntitiesList>(xml, 'listOrg')),
- };
- }
- }
- @xmlParser('setting', SettingParser)
- export class SettingParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): Setting {
- const names = queryAndParseElements<GenericElement>(xml, 'name');
- const orgNames = queryAndParseElements<GenericElement>(xml, 'orgName');
- const persNames = queryAndParseElements<GenericElement>(xml, 'persName');
- const placeNames = queryAndParseElements<GenericElement>(xml, 'placeName');
-
- return {
- ...super.parse(xml),
- type: Setting,
- who: xml.getAttribute('who'),
- name: names.concat(orgNames).concat(persNames).concat(placeNames),
- date: queryAndParseElements(xml, 'date'),
- time: queryAndParseElements(xml, 'time'),
- locale: queryAndParseElements(xml, 'locale'),
- activity: queryAndParseElements(xml, 'activity'),
- };
- }
- }
- @xmlParser('settingDesc', SettingDescParser)
- export class SettingDescParser extends GenericElemParser implements Parser<XMLElement> {
- parse(xml: XMLElement): SettingDesc {
- return {
- ...super.parse(xml),
- type: SettingDesc,
- structuredData: Array.from(xml.children).filter(el => el.tagName === 'p').length !== xml.children.length,
- settings: queryAndParseElements<Setting>(xml, 'setting'),
- places: queryAndParseElements<NamedEntitiesList>(xml, 'listPlace'),
- };
- }
- }
- @xmlParser('listChange', ListChangeParser)
- export class ListChangeParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): ListChange {
- return {
- ...super.parse(xml),
- type: ListChange,
- content: complexElements(xml.childNodes, true).filter((child: XMLElement) => child.tagName !== 'desc')
- .map(child => parseElement<ListChange | Change>(child as XMLElement)),
- description: queryAndParseElement<Description>(xml, 'desc'),
- id: getID(xml),
- ordered: isBoolString(xml.getAttribute('ordered')),
- };
- }
- }
- @xmlParser('profileDesc', ProfileDescParser)
- export class ProfileDescParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): ProfileDesc {
- return {
- ...super.parse(xml),
- type: ProfileDesc,
- abstract: queryAndParseElements<Abstract>(xml, 'abstract'),
- calendarDesc: queryAndParseElements<CalendarDesc>(xml, 'calendarDesc'),
- correspDesc: queryAndParseElements<CorrespDesc>(xml, 'correspDesc'),
- creation: queryAndParseElements<Creation>(xml, 'creation'),
- handNotes: queryAndParseElements<HandNotes>(xml, 'handNotes'),
- langUsage: queryAndParseElements<LangUsage>(xml, 'langUsage'),
- listTranspose: queryAndParseElements<ListTranspose>(xml, 'listTranspose'),
- particDesc: queryAndParseElements<ParticDesc>(xml, 'particDesc'),
- settingDesc: queryAndParseElements<SettingDesc>(xml, 'settingDesc'),
- textClass: queryAndParseElements<TextClass>(xml, 'textClass'),
- textDesc: queryAndParseElements<TextDesc>(xml, 'textDesc'),
- };
- }
- }
- @xmlParser('revisionDesc', RevisionDescParser)
- export class RevisionDescParser extends GenericParser implements Parser<XMLElement> {
- parse(xml: XMLElement): RevisionDesc {
- return {
- ...super.parse(xml),
- type: RevisionDesc,
- content: complexElements(xml.childNodes, true).map(child => parseElement<ListChange | Change>(child as XMLElement)),
- status: xml.getAttribute('status') as Status,
- };
- }
- }
|