{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-jens/demos/bibliographie/swa-bibliographie.js"],"names":["BibtexParser","Bibliography","Strings","SWABibliographie","constructor","importURL","exportURL","bibURL","url","bibtoJSON","source1","fetch","then","resp","text","bib1","toJSON","source2","bib2","compare","a","b","comp","ea","citationKey","inAandB","onlyInA","onlyInB","found","eaA","find","eaB","push","merge","merged","this","import","items","htmlElement","innerHTML","pubList","querySelectorAll","list","childNodes","localName","entries","parseItems","bibtexGen","item","split","Error","authors","map","replace","i","field","year","allYears","matchAll","last","entry","entryType","entryTags","author","join","title","published","generateCitationKey","bibString","toBibtex","export","method","body"],"mappings":"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","file":"swa-bibliographie.js","sourcesContent":["import BibtexParser from \"src/external/bibtexParse.js\";\nimport Bibliography from \"src/client/bibliography.js\"\nimport Strings from 'src/client/strings.js'  \n\nexport default class SWABibliographie {\n  constructor(importURL, exportURL, bibURL) {\n    this.url = importURL\n    this.exportURL = exportURL\n    this.bibURL = bibURL\n  }\n\n  async bibtoJSON() {\n    var source1 = await fetch(this.exportURL).then(resp => resp.text())\n    this.bib1 = BibtexParser.toJSON(source1, false)\n    var source2 = await fetch(this.bibURL).then(resp => resp.text())\n    this.bib2 = BibtexParser.toJSON(source2, false)\n    return this.bib1, this.bib2\n  }\n\n  compare() {\n    var a = this.bib1\n    var b = this.bib2\n    var comp = ea => ea.citationKey\n    this.inAandB = []\n    this.onlyInA = []\n    this.onlyInB = []\n\n    var found\n    for (var eaA of a) {\n      found = b.find(eaB => comp(eaB) == comp(eaA))\n      if (found) {\n        this.inAandB.push(eaA)\n      } else {\n        this.onlyInA.push(eaA)\n      }\n    }\n\n    for (var eaB of b) {\n      found = a.find(eaA => comp(eaA) == comp(eaB))\n      if (!found) {\n        this.onlyInB.push(eaB)\n      }\n    }\n    return this.inAandB, this.onlyInA, this.onlyInB\n  }\n  \n  merge(a, b) {\n    this.merged = [a]\n    this.merged.push(this.compare().this.onlyInB)\n    return this.merged\n  }\n\n  async import() {\n    this.items = [];\n    var text = await fetch(this.url).then(resp => resp.text());\n    var htmlElement = < div > < /div>\n    htmlElement.innerHTML = text\n\n    var pubList = htmlElement.querySelectorAll(\".publist\")\n\n    for (var list of pubList) {\n      for (var ea of list.childNodes) {\n        if (ea.localName == \"li\") {\n          this.items.push(ea.innerHTML)\n        }\n      }\n    }\n    this.entries = this.parseItems(this.items)\n    return this.entries\n  }\n\n  bibtexGen(item) {\n    var a = item.split(/<.*?>/g)\n    if (!a) {\n      throw new Error(\"could not parse item: \" + item)\n    }\n\n    var authors = a[0].split(/, /g).map(ea =>\n      ea.replace(/^and /, \"\").replace(/\\. $/, \"\"))\n\n    for (var i = 1; i < 5; i++) {\n      var field = a[i]\n      if (field && !year) {\n        var allYears = Strings.matchAll(/(((20)|(19))[0-9]{2})/g, field)\n        if (allYears.last) {\n          var year = allYears.last[0]\n        }\n      }\n      \n    }\n\n    if (!year) {\n      throw new Error(\"could not find year in \" + a[2], item)\n    }\n\n    var entry = {\n      entryType: 'article',\n      entryTags: {\n        author: authors.join(\" and \"),\n        year: year,\n        title: a[1].replace(/\\. $/, \"\").replace(/^ /, \"\"),\n        published: a[2].replace(/\\(/, \"\").replace(/^ /, \"\").replace(/\\. $/, \"\")\n      }\n    }\n    \n    // if (entry.entryTags.published.match(/(Conference)|(Workshop)/)) {\n    //   entry.entryType = \"inproceedings\"\n    //   entry.entryTags.booktitle = entry.entryTags.published \n    // }\n    \n    entry.citationKey = Bibliography.generateCitationKey(entry)\n\n    var bibString = BibtexParser.toBibtex([entry], false);\n    return bibString\n\n  }\n  parseItems(items) {\n    var entries = []\n    for (var ea of items) {\n      entries.push(this.bibtexGen(ea))\n    }\n    return entries\n  }\n\n  async export () {\n    return fetch(this.exportURL, {\n      method: \"PUT\",\n      body: this.entries.join(\"\")\n    })\n  }\n}\n"]}