{"version":3,"names":["System","register","_export","_context","Parser","FileIndex","latexconv","Strings","Bibliography","__SystemJSRewritingHack","setters","_srcExternalBibtexParseJs","default","_srcClientFileindexJs","_srcExternalLatexToUnicodeConverterJs","_srcClientStringsJs","execute","_recorder_","_src_client_bibliography_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","splitAuthors","authorString","authors","split","result","map","ea","m","match","replace","cleanTitle","titleString","generateCitationKey","entry","entryTags","undefined","tags","author","year","title","convertLaTeXToUnicode","e","console","warn","firstAuthor","lastName","last","fixUmlauts","cleanLastName","normalizedLastName","i","toUpperCase","toLowerCase","join","threeSignificantInitialsFromTitle","filter","length","includes","slice","filenameToKey","filename","a","titleAndRest","urlToKey","url","toString","searchCitationKey","key","current","db","files","each","file","push","searchFilename","searchString","patchBibtexEntryInSource","source","entries","toJSON","replaced","replacedEntries","citationKey","Error","toBibtex","patchBibtexEntryInURL","lively","loadFile","newsource","saveFile"],"sources":["bibliography.js"],"sourcesContent":["\"enable examples\"\n/*MD # Bibliography \n\nMETA: #ExamplesInCode #BabylonianProgramming #Lightweight\n\n<edit://test/bibliography-test.js>\nMD*/\n\n/*MD ## Example\n\n<lively-bibtex-entry>\n@inproceedings{berger2016efficiency,\n  title={Efficiency of projectional editing: A controlled experiment},\n  author={Berger, Thorsten and V{\\\"o}lter, Markus and Jensen, Hans Peter and Dangprasert, Taweesap and Siegmund, Janet},\n  booktitle={Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering},\n  Keywords = {Foo, Bar},\n  pages={763--774},\n  year={2016},\n  organization={ACM}\n  }\n</lively-bibtex-entry>\n\n```javascript{.example}\n\n```\n\n<script>  \nimport Parser from 'src/external/bibtexParse.js';\nimport Bibliography from 'src/client/bibliography.js';\n  \nvar html = lively.query(this, \"lively-bibtex-entry\");\nvar source = html.textContent\nvar bib = Parser.toJSON(source, false)\nvar json = JSON.stringify(bib, undefined, 2)\nvar key =  Bibliography.generateCitationKey(bib[0])\n;(<dl>\n  <dt>Bibtex</dt><dd><pre>{source}</pre></dd>\n  <dt>Parser.toJSON</dt><dd><pre>{json}</pre></dd>\n  <dt>generateCitationKey</dt><dd><pre>{key}</pre></dd>\n</dl>)\n</script>  \n\nMD*/\n\n\nimport Parser from 'src/external/bibtexParse.js'\nimport FileIndex from 'src/client/fileindex.js'\nimport latexconv from \"src/external/latex-to-unicode-converter.js\";\nimport Strings from \"src/client/strings.js\"\n\nexport default class Bibliography {\n\n  \n      /*MD\n<style>* {background-color:lightgray}</style>\n```javascript\n[Bibliography.splitAuthors(\"Abi Bulbus and Deus, Curus \"),\nBibliography.splitAuthors(`Dan Ingalls and Marko R\\\\\"{o}der`)]\n```\n\n<script>\n  // #TODO refactor and hide tooling code\n  import Bibliography from 'src/client/bibliography.js';\n  var start = performance.now();\n  var result =   eval(this.parentElement.querySelector(\"code\").textContent);\n  var time = performance.now() - start;\n  <div>{result} <i>({time} ms)</i></div>\n</script>\n  MD*/\n\n  \n  \n  static /*example:*//*example:*/splitAuthors/*{\"id\":\"92ad_8212_2876\",\"name\":{\"mode\":\"input\",\"value\":\"e1\"},\"color\":\"hsl(60, 30%, 70%)\",\"values\":{\"authorString\":{\"mode\":\"input\",\"value\":\"\\\"Abi Bulbus and Deus, Curus \\\"\"}},\"instanceId\":{\"mode\":\"input\",\"value\":\"\"},\"prescript\":\"\",\"postscript\":\"\"}*//*{\"id\":\"c7bc_6730_6783\",\"name\":{\"mode\":\"input\",\"value\":\"e2\"},\"color\":\"hsl(180, 30%, 70%)\",\"values\":{\"authorString\":{\"mode\":\"input\",\"value\":\"`Dan Ingalls and Marko R\\\\\\\\\\\"{o}der`\"}},\"instanceId\":{\"mode\":\"input\",\"value\":\"\"},\"prescript\":\"\",\"postscript\":\"\"}*/(authorString=\"\") {\n    var /*probe:*/authors/*{}*/ = authorString.split(\" and \")\n    \n    var result = authors.map(ea => {\n       var m = ea.match(/(.*),(.*)/)\n       if (m) {\n         return /*probe:*/m[2]/*{}*/ + \" \" + m[1] // take care of comma separated author\n       } else {\n         /*probe:*/return/*{}*/ ea\n       }\n     }).map(ea => ea.replace(/[{}]/g,\"\")\n            .replace(/\\\\\"a/g,\"ä\").replace(/\\\\\"A/g,\"Ä\") // take care of some umlauts\n            .replace(/\\\\\"o/g,\"ö\").replace(/\\\\\"O/g,\"Ö\")\n            .replace(/\\\\\"u/g,\"ü\").replace(/\\\\\"U/g,\"Ü\")\n            .replace(/^ */,\"\").replace(/ *$/,\"\").replace(/ +/g,\" \")) // unify whitespace...\n \n  \n    \n    /*probe:*/return/*{}*/ result\n  }\n  \n  \n  \n    /*MD\n<style>* {background-color:lightgray}</style>\n```javascript\nBibliography.cleanTitle(\"{{This is my Title}}\")\n```\n\n<script>\n  // #TODO refactor and hide tooling code\n  import Bibliography from 'src/client/bibliography.js';\n  var start = performance.now();\n  var result =   eval(this.parentElement.querySelector(\"code\").textContent);\n  // var time = performance.now() - start;\n  <div>{result} </div> // <i>({time} ms)</i>\n</script>\n  MD*/\n  \n  static cleanTitle(titleString=\"\") {\n     return titleString\n       .replace(/'s /g,\"s \")\n       .replace(/[{}\\[\\]]/g,\"\").replace(/[—‘’“”'`,.;:\"] ?/g,\" \")\n  }\n\n  // #TODO this method obviously will need a lot of tweaking...\n  static generateCitationKey(entry) {\n    if (!entry || !entry.entryTags) return undefined\n    var tags = entry.entryTags\n    if (!tags.author ||  !tags.year || !tags.title) return undefined\n    try {\n      var author = latexconv.convertLaTeXToUnicode(tags.author)\n    } catch(e) {\n      debugger\n      console.warn(\"[bibliography] could not convertLaTeXToUnicode: \" + author)\n      author = tags.author.replace(/[^A-Za-z  ,]/g, \"\") // just remove everything else.... \n     }\n\n    var firstAuthor = author.split(/ and /g)[0]\n    if (firstAuthor.match(\",\")) {\n      var lastName = firstAuthor.replace(/,.*/,\"\")\n    } else {\n      lastName = firstAuthor.replace(/ *$/,\"\").split(\" \").last\n    }\n    // TO SIMPLE\n    // lastName = lastName.replace(/[^A-Za-z]/g, \"\")\n    // keep üäöß etc...\n    \n    // but convert them\n    lastName = Strings.fixUmlauts(lastName)\n    var cleanLastName = lastName.replace(/[ \\-']/g,\"\")\n    var normalizedLastName = cleanLastName.split(\"\").map((ea,i) => i == 0 ? ea.toUpperCase() : ea.toLowerCase()).join(\"\")\n\n    var year  =  tags.year\n  \n    return normalizedLastName + year + this.threeSignificantInitialsFromTitle(tags.title)\n  }\n  \n  static threeSignificantInitialsFromTitle(title) {\n    return this.cleanTitle(title)\n      .replace(/-based /g,\"based \")\n      .replace(/-the-/g,\"the\") // on-the-fly -> onthefly\n      .split(/[ -\\/_]|(?=[0-9]+)/g)\n      .map(ea => ea.toLowerCase())\n      .filter(ea => ea.length > 0)\n      .filter(ea => ![\"a\",\"am\",\"an\",\"as\",\"at\",\"be\",\"by\",\"in\",\"is\",\"it\",\"of\",\"on\", \"to\", \"the\", \"and\", \"from\", \"out\", \"for\", \"but\"].includes(ea))\n      .filter(ea => ![\"so\", \"als\", \"der\", \"die\", \"das\", \"und\", \"oder\", \"aber\", \"für\"].includes(ea))\n      .filter(ea => !ea.match(/^[0-9]/))\n      .filter(ea => !ea.match(/^[\\(\\)\\[\\]\\/\\\\]/))\n      .slice(0,3)\n      .map(ea => ea[0])\n      .join(\"\")\n      .toUpperCase()\n  } \n  \n  /*MD\n<style>* {background-color:lightgray}</style>\n```javascript\n[Bibliography.filenameToKey(\"AuthorSecondauthor_1981_TitleInCammelCase_BOOK.pdf\"),\nBibliography.filenameToKey(\"00_Winograd_1996_Introduction.pdf\")]\n```\n\n<script>\n  // #TODO refactor and hide tooling code\n  import Bibliography from 'src/client/bibliography.js';\n  var start = performance.now();\n  var result =   eval(this.parentElement.querySelector(\"code\").textContent);\n  var time = performance.now() - start;\n  <div>{result} <i>({time} ms)</i></div>\n</script>\n  MD*/\n  \n  static filenameToKey(filename) {\n    filename = filename.replace(/\\.[a-z]{3}$/,\"\") // strip ending\n    filename = filename.replace(/^[0-9][0-9]*[A-Z]?_/,\"\") // strip index number\n    \n    var a = filename.split(\"_\")\n    if (a.length < 3) return\n    var authors = a[0]\n    var year = a[1]\n    var titleAndRest = a[2]\n    \n    var firstAuthor = authors.split(/(?=[A-Z])/)[0]\n    \n    \n    var title = titleAndRest\n      .replace(/(?<=[a-z])(?=[A-Z0-9])/g, \" \")\n      .replace(/(?<=[0-9])(?=[A-Z])/g, \" \")\n    return firstAuthor + year + this.threeSignificantInitialsFromTitle(title)\n  }\n\n  static urlToKey(url) {\n    if (!url) return\n    var filename = url.toString().replace(/[#?].*]/,\"\").replace(/.*\\//,\"\")\n    return this.filenameToKey(filename)    \n  }\n\n  /*MD\n<style>* {background-color:lightgray}</style>\n```javascript\nBibliography.searchCitationKey(\"Fog2019MLL\")\n```\n<script>\n  import Bibliography from 'src/client/bibliography.js';\n  (async () => {\n    var start = performance.now()\n    var result = await eval(this.parentElement.querySelector(\"code\").textContent)\n    var time = performance.now() - start\n    return <div><ul>{...result.map(ea => <li>{ea.url}</li>)}</ul>in {time}ms</div>\n  })()   \n</script>\n  MD*/\n  // find all files that map to that key\n  static async searchCitationKey(key) {\n   \n    var result = []\n    await FileIndex.current().db.files.each(file => {\n      // if (file.url.match(/foobar/)) {\n      //     result.push(file)\n      // }\n      \n      if (file.url && this.urlToKey(file.url) == key) {\n          result.push(file)\n      }\n    })\n    return result\n  }\n  \n  /*MD\n<style>* {background-color:lightgray}</style>  \n```javascript\nBibliography.searchFilename(\"foobar\")\n```\n<script>\n  import Bibliography from 'src/client/bibliography.js';\n  (async () => {\n    return <ul>{...(await eval(this.parentElement.querySelector(\"code\").textContent))\n          .map(ea => <li>{ea.url}</li>)}</ul>\n  })()   \n</script>\nMD*/  \n  \n  static async searchFilename(searchString) {\n    var result = []\n    await FileIndex.current().db.files.each(file => {\n      if (file.url.match(searchString)) {\n           result.push(file)\n\n      }\n    }) \n    return result\n  }\n  \n  static patchBibtexEntryInSource(source, key, entry) {\n    var entries = Parser.toJSON(source)\n    var replaced = false\n    var replacedEntries = entries.map(ea => {\n      if (ea.citationKey == key) {\n        replaced = true\n        return entry\n      }\n      return ea\n    })\n    if (!replaced) throw new Error(\"Could not find \" + key + \" to patch it!\")\n    return Parser.toBibtex(replacedEntries, false)\n  }\n\n  static async patchBibtexEntryInURL(url, key, entry) {\n    var source = await lively.files.loadFile(url)\n    var newsource = this.patchBibtexEntryInSource(source, key, entry) \n    return lively.files.saveFile(url, newsource)\n  }\n}\n/* Context: {\"context\":{\"prescript\":\"\",\"postscript\":\"\"},\"customInstances\":[]} */"],"mappings":"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"}