UNPKG

smartdown

Version:

A library for translating, rendering and interacting with Smartdown documents. Smartdown is an extension of Markdown that provides richer media support and reactive programming capability.

109 lines (93 loc) 3.54 kB
const smartdown = window.smartdown; function calcWikidataThumbs(key, body, done) { function lookupComplete() { /* eslint no-invalid-this: 0 */ var lookupResult = this.responseText; // console.log('lookupResult', JSON.parse(lookupResult)); var parsedResult = JSON.parse(lookupResult).query.pages; var thumbs = []; parsedResult.forEach(function(val, idx) { // console.log('...val', val); if (val.thumbnail) { thumbs.push(val.thumbnail.source); } }); thumbs.elementType = 'image'; done(thumbs); } var wdKey = body; if (body.indexOf('[') === 0) { var possibleJSONArray = JSON.parse(body); if (Array.isArray(possibleJSONArray)) { wdKey = ''; possibleJSONArray.forEach(function(val, idx) { wdKey += val; if (idx < possibleJSONArray.length - 1) { wdKey += '|'; } }); } } var oReq = new XMLHttpRequest(); oReq.addEventListener("load", lookupComplete); // https://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&format=json&prop=pageimages&titles=Albert+Einstein&piprop=thumbnail%7Cname%7Coriginal&pithumbsize=300 // /w/api.php?action=query&format=json&prop=pageimages&titles=Albert+Einstein&piprop=thumbnail%7Cname%7Coriginal&pithumbsize=300 var url = 'https://en.wikipedia.org/w/api.php?action=query&prop=pageimages%7Cpageterms&format=json&origin=*&wbptterms=description&redirects=&formatversion=2'; url += '&titles=' + encodeURI(wdKey); url += '&piprop=thumbnail%7Cname%7Coriginal&pithumbsize=300'; /* var oReq = new XMLHttpRequest(); oReq.addEventListener("load", lookupComplete); var url = 'https://en.wikipedia.org/w/api.php?action=query&formatversion=2&prop=pageimages%7Cpageterms&'; url += 'titles=' + encodeURI(wdKey); url += '&pilimit=3&piprop=thumbnail&wbptterms=description&redirects=&format=json&origin=*'; */ oReq.open('GET', url); oReq.send(); } function calcWikidata(key, body, done) { function lookupComplete() { /* eslint no-invalid-this: 0 */ var lookupResult = this.responseText; // console.log('calcWikidata', JSON.parse(lookupResult)); var parsedResult = JSON.parse(lookupResult).query.pages; // console.log('calcWikidata parsedResult', parsedResult); var info = []; window.lodashEach(parsedResult, function(val, idx) { // console.log('...val', val); info.push({ title: val.displaytitle, url: val.canonicalurl }); }); info.elementType = 'title/url'; done(info); } var wdKey = body; if (body.indexOf('[') === 0) { var possibleJSONArray = JSON.parse(body); if (Array.isArray(possibleJSONArray)) { wdKey = ''; possibleJSONArray.forEach(function(val, idx) { wdKey += val; if (idx < possibleJSONArray.length - 1) { wdKey += '|'; } }); } } var oReq = new XMLHttpRequest(); oReq.addEventListener("load", lookupComplete); var url = 'https://en.wikipedia.org/w/api.php?action=query&format=json&prop=info&origin=*&redirects='; url += '&titles=' + encodeURI(wdKey); url += '&inprop=displaytitle%7Curl'; // var url = 'https://en.wikipedia.org/w/api.php?action=query&formatversion=2&prop=pageimages%7Cpageterms&'; // url += 'titles=' + encodeURI(wdKey); // url += '&pilimit=3&piprop=thumbnail&wbptterms=description&redirects=&format=json&origin=*'; oReq.open('GET', url); oReq.send(); } smartdown.defaultCalcHandlers = { wikidataThumbs: calcWikidataThumbs, wikidata: calcWikidata };