summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/similar_text.js.map
blob: 056a17477a945655d1d5cbb7f0ba5debe15fba7b (plain) (blame)
1
{"version":3,"sources":["../../../src/php/strings/similar_text.js"],"names":["module","exports","similar_text","first","second","percent","pos1","pos2","max","firstLength","length","secondLength","p","q","l","sum","charAt","substr"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,YAAT,CAAuBC,KAAvB,EAA8BC,MAA9B,EAAsCC,OAAtC,EAA+C;AAAE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIF,UAAU,IAAV,IACFC,WAAW,IADT,IAEF,OAAOD,KAAP,KAAiB,WAFf,IAGF,OAAOC,MAAP,KAAkB,WAHpB,EAGiC;AAC/B,WAAO,CAAP;AACD;;AAEDD,WAAS,EAAT;AACAC,YAAU,EAAV;;AAEA,MAAIE,OAAO,CAAX;AACA,MAAIC,OAAO,CAAX;AACA,MAAIC,MAAM,CAAV;AACA,MAAIC,cAAcN,MAAMO,MAAxB;AACA,MAAIC,eAAeP,OAAOM,MAA1B;AACA,MAAIE,CAAJ;AACA,MAAIC,CAAJ;AACA,MAAIC,CAAJ;AACA,MAAIC,GAAJ;;AAEA,OAAKH,IAAI,CAAT,EAAYA,IAAIH,WAAhB,EAA6BG,GAA7B,EAAkC;AAChC,SAAKC,IAAI,CAAT,EAAYA,IAAIF,YAAhB,EAA8BE,GAA9B,EAAmC;AACjC,WAAKC,IAAI,CAAT,EAAaF,IAAIE,CAAJ,GAAQL,WAAT,IAA0BI,IAAIC,CAAJ,GAAQH,YAAlC,IAAoDR,MAAMa,MAAN,CAAaJ,IAAIE,CAAjB,MAAwBV,OAAOY,MAAP,CAAcH,IAAIC,CAAlB,CAAxF,EAA+GA,GAA/G,EAAoH,CAAE;AACpH;AACD;AACD,UAAIA,IAAIN,GAAR,EAAa;AACXA,cAAMM,CAAN;AACAR,eAAOM,CAAP;AACAL,eAAOM,CAAP;AACD;AACF;AACF;;AAEDE,QAAMP,GAAN;;AAEA,MAAIO,GAAJ,EAAS;AACP,QAAIT,QAAQC,IAAZ,EAAkB;AAChBQ,aAAOb,aAAaC,MAAMc,MAAN,CAAa,CAAb,EAAgBX,IAAhB,CAAb,EAAoCF,OAAOa,MAAP,CAAc,CAAd,EAAiBV,IAAjB,CAApC,CAAP;AACD;;AAED,QAAKD,OAAOE,GAAP,GAAaC,WAAd,IAA+BF,OAAOC,GAAP,GAAaG,YAAhD,EAA+D;AAC7DI,aAAOb,aACLC,MAAMc,MAAN,CAAaX,OAAOE,GAApB,EAAyBC,cAAcH,IAAd,GAAqBE,GAA9C,CADK,EAELJ,OAAOa,MAAP,CAAcV,OAAOC,GAArB,EACAG,eAAeJ,IAAf,GAAsBC,GADtB,CAFK,CAAP;AAID;AACF;;AAED,MAAI,CAACH,OAAL,EAAc;AACZ,WAAOU,GAAP;AACD;;AAED,SAAQA,MAAM,GAAP,IAAeN,cAAcE,YAA7B,CAAP;AACD,CAhED","file":"similar_text.js","sourcesContent":["module.exports = function similar_text (first, second, percent) { // eslint-disable-line camelcase\n  //  discuss at: http://locutus.io/php/similar_text/\n  // original by: Rafał Kukawski (http://blog.kukawski.pl)\n  // bugfixed by: Chris McMacken\n  // bugfixed by: Jarkko Rantavuori original by findings in stackoverflow (http://stackoverflow.com/questions/14136349/how-does-similar-text-work)\n  // improved by: Markus Padourek (taken from http://www.kevinhq.com/2012/06/php-similartext-function-in-javascript_16.html)\n  //   example 1: similar_text('Hello World!', 'Hello locutus!')\n  //   returns 1: 8\n  //   example 2: similar_text('Hello World!', null)\n  //   returns 2: 0\n\n  if (first === null ||\n    second === null ||\n    typeof first === 'undefined' ||\n    typeof second === 'undefined') {\n    return 0\n  }\n\n  first += ''\n  second += ''\n\n  var pos1 = 0\n  var pos2 = 0\n  var max = 0\n  var firstLength = first.length\n  var secondLength = second.length\n  var p\n  var q\n  var l\n  var sum\n\n  for (p = 0; p < firstLength; p++) {\n    for (q = 0; q < secondLength; q++) {\n      for (l = 0; (p + l < firstLength) && (q + l < secondLength) && (first.charAt(p + l) === second.charAt(q + l)); l++) { // eslint-disable-line max-len\n        // @todo: ^-- break up this crazy for loop and put the logic in its body\n      }\n      if (l > max) {\n        max = l\n        pos1 = p\n        pos2 = q\n      }\n    }\n  }\n\n  sum = max\n\n  if (sum) {\n    if (pos1 && pos2) {\n      sum += similar_text(first.substr(0, pos1), second.substr(0, pos2))\n    }\n\n    if ((pos1 + max < firstLength) && (pos2 + max < secondLength)) {\n      sum += similar_text(\n        first.substr(pos1 + max, firstLength - pos1 - max),\n        second.substr(pos2 + max,\n        secondLength - pos2 - max))\n    }\n  }\n\n  if (!percent) {\n    return sum\n  }\n\n  return (sum * 200) / (firstLength + secondLength)\n}\n"]}