Jump to content

User:Diegodlh/Web2Cit/script.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Diegodlh (talk | contribs) at 15:33, 4 May 2022 (Created page with 'const ajax = $.ajax; $.ajax = function(url, options) { // If url is an object, simulate pre-1.5 signature if ( typeof url === "object" ) { options = url; url = undefined; } // Force options to be an object options = options || {}; url = url || options.url; const match = url.match( /^\/api\/rest_v1\/data\/citation\/mediawiki\/(?<search>.+)/ ); if (match !== null) { let { search } = match.groups; search = decodeURICo...'). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
const ajax = $.ajax;
$.ajax = function(url, options) {
    // If url is an object, simulate pre-1.5 signature
  if ( typeof url === "object" ) {
    options = url;
    url = undefined;
  }
  // Force options to be an object
  options = options || {};
  
  url = url || options.url;
  const match = url.match(
    /^\/api\/rest_v1\/data\/citation\/mediawiki\/(?<search>.+)/
  );
  if (match !== null) {
    let { search } = match.groups;
    search = decodeURIComponent(search);
    
    // mimick citoid's CitoidService.js
    search = search.trim().toLowerCase();

    // if the query does not begin with either http:// or https://
    // only assume that the user meant a url if it follows the pattern
    // www.something.somethingelse
    // otherwise, we may miss DOIs, QIDs, PMCIDs, ISBNs or PMIDs
    // which are handled by Citoid differently
    // instruct the user to always add http:// or https:// at the beginning
    // to explicitly mean a url
    if (search.match(/^www\..+\..+/)) {
      search = "http://" + search;
    };
    if (
      search.match(/^https?:\/\/.+/) &&
      // to prevent an endless loop, continue using web2cit through citoid
      // if user explicitly asks to translate a web2cit url
      !search.match(/^https?:\/\/web2cit.toolforge.org\/.+/)
    ) {
      console.log('Search will be resolved using Web2Cit + Citoid...')
      url = "https://web2cit.toolforge.org/translate";
      options.data = {
        "citoid": "true",
        "format": "mediawiki",
        "url": search
      };
    }
  }
  return ajax.bind(this)(url, options);
}