summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/levenshtein.js.map
blob: d7149c49603f9092fc37edc1565ed821924424c3 (plain) (blame)
1
{"version":3,"sources":["../../../src/php/strings/levenshtein.js"],"names":["module","exports","levenshtein","s1","s2","costIns","costRep","costDel","l1","length","l2","split","e","p1","Array","p2","i1","i2","c0","c1","c2","tmp"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,WAAT,CAAsBC,EAAtB,EAA0BC,EAA1B,EAA8BC,OAA9B,EAAuCC,OAAvC,EAAgDC,OAAhD,EAAyD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEAF,YAAUA,WAAW,IAAX,GAAkB,CAAlB,GAAsB,CAACA,OAAjC;AACAC,YAAUA,WAAW,IAAX,GAAkB,CAAlB,GAAsB,CAACA,OAAjC;AACAC,YAAUA,WAAW,IAAX,GAAkB,CAAlB,GAAsB,CAACA,OAAjC;;AAEA,MAAIJ,OAAOC,EAAX,EAAe;AACb,WAAO,CAAP;AACD;;AAED,MAAII,KAAKL,GAAGM,MAAZ;AACA,MAAIC,KAAKN,GAAGK,MAAZ;;AAEA,MAAID,OAAO,CAAX,EAAc;AACZ,WAAOE,KAAKL,OAAZ;AACD;AACD,MAAIK,OAAO,CAAX,EAAc;AACZ,WAAOF,KAAKD,OAAZ;AACD;;AAED;AACA;AACA;AACA;;AAEA,MAAII,QAAQ,KAAZ;AACA,MAAI;AACFA,YAAQ,CAAE,GAAD,CAAM,CAAN,CAAT;AACD,GAFD,CAEE,OAAOC,CAAP,EAAU;AACV;AACAD,YAAQ,IAAR;AACD;;AAED,MAAIA,KAAJ,EAAW;AACTR,SAAKA,GAAGQ,KAAH,CAAS,EAAT,CAAL;AACAP,SAAKA,GAAGO,KAAH,CAAS,EAAT,CAAL;AACD;;AAED,MAAIE,KAAK,IAAIC,KAAJ,CAAUJ,KAAK,CAAf,CAAT;AACA,MAAIK,KAAK,IAAID,KAAJ,CAAUJ,KAAK,CAAf,CAAT;;AAEA,MAAIM,EAAJ,EAAQC,EAAR,EAAYC,EAAZ,EAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,GAAxB;;AAEA,OAAKJ,KAAK,CAAV,EAAaA,MAAMP,EAAnB,EAAuBO,IAAvB,EAA6B;AAC3BJ,OAAGI,EAAH,IAASA,KAAKZ,OAAd;AACD;;AAED,OAAKW,KAAK,CAAV,EAAaA,KAAKR,EAAlB,EAAsBQ,IAAtB,EAA4B;AAC1BD,OAAG,CAAH,IAAQF,GAAG,CAAH,IAAQN,OAAhB;;AAEA,SAAKU,KAAK,CAAV,EAAaA,KAAKP,EAAlB,EAAsBO,IAAtB,EAA4B;AAC1BC,WAAKL,GAAGI,EAAH,KAAWd,GAAGa,EAAH,MAAWZ,GAAGa,EAAH,CAAZ,GAAsB,CAAtB,GAA0BX,OAApC,CAAL;AACAa,WAAKN,GAAGI,KAAK,CAAR,IAAaV,OAAlB;;AAEA,UAAIY,KAAKD,EAAT,EAAa;AACXA,aAAKC,EAAL;AACD;;AAEDC,WAAKL,GAAGE,EAAH,IAASZ,OAAd;;AAEA,UAAIe,KAAKF,EAAT,EAAa;AACXA,aAAKE,EAAL;AACD;;AAEDL,SAAGE,KAAK,CAAR,IAAaC,EAAb;AACD;;AAEDG,UAAMR,EAAN;AACAA,SAAKE,EAAL;AACAA,SAAKM,GAAL;AACD;;AAEDH,OAAKL,GAAGH,EAAH,CAAL;;AAEA,SAAOQ,EAAP;AACD,CA1FD","file":"levenshtein.js","sourcesContent":["module.exports = function levenshtein (s1, s2, costIns, costRep, costDel) {\n  //       discuss at: http://locutus.io/php/levenshtein/\n  //      original by: Carlos R. L. Rodrigues (http://www.jsfromhell.com)\n  //      bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)\n  //       revised by: Andrea Giammarchi (http://webreflection.blogspot.com)\n  // reimplemented by: Brett Zamir (http://brett-zamir.me)\n  // reimplemented by: Alexander M Beedie\n  // reimplemented by: Rafał Kukawski (http://blog.kukawski.pl)\n  //        example 1: levenshtein('Kevin van Zonneveld', 'Kevin van Sommeveld')\n  //        returns 1: 3\n  //        example 2: levenshtein(\"carrrot\", \"carrots\")\n  //        returns 2: 2\n  //        example 3: levenshtein(\"carrrot\", \"carrots\", 2, 3, 4)\n  //        returns 3: 6\n\n  // var LEVENSHTEIN_MAX_LENGTH = 255 // PHP limits the function to max 255 character-long strings\n\n  costIns = costIns == null ? 1 : +costIns\n  costRep = costRep == null ? 1 : +costRep\n  costDel = costDel == null ? 1 : +costDel\n\n  if (s1 === s2) {\n    return 0\n  }\n\n  var l1 = s1.length\n  var l2 = s2.length\n\n  if (l1 === 0) {\n    return l2 * costIns\n  }\n  if (l2 === 0) {\n    return l1 * costDel\n  }\n\n  // Enable the 3 lines below to set the same limits on string length as PHP does\n  // if (l1 > LEVENSHTEIN_MAX_LENGTH || l2 > LEVENSHTEIN_MAX_LENGTH) {\n  //   return -1;\n  // }\n\n  var split = false\n  try {\n    split = !('0')[0]\n  } catch (e) {\n    // Earlier IE may not support access by string index\n    split = true\n  }\n\n  if (split) {\n    s1 = s1.split('')\n    s2 = s2.split('')\n  }\n\n  var p1 = new Array(l2 + 1)\n  var p2 = new Array(l2 + 1)\n\n  var i1, i2, c0, c1, c2, tmp\n\n  for (i2 = 0; i2 <= l2; i2++) {\n    p1[i2] = i2 * costIns\n  }\n\n  for (i1 = 0; i1 < l1; i1++) {\n    p2[0] = p1[0] + costDel\n\n    for (i2 = 0; i2 < l2; i2++) {\n      c0 = p1[i2] + ((s1[i1] === s2[i2]) ? 0 : costRep)\n      c1 = p1[i2 + 1] + costDel\n\n      if (c1 < c0) {\n        c0 = c1\n      }\n\n      c2 = p2[i2] + costIns\n\n      if (c2 < c0) {\n        c0 = c2\n      }\n\n      p2[i2 + 1] = c0\n    }\n\n    tmp = p1\n    p1 = p2\n    p2 = tmp\n  }\n\n  c0 = p1[l2]\n\n  return c0\n}\n"]}