changeset 30026:d3298a58049e stable

pkg: Improve similar package name suggestion (bug #61067). * scripts/pkg/private/get_forge_pkg.m (fdist): Reduce distance added for additional characters or wrong case. Minor style changes.
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 21 Aug 2021 15:02:48 +0200
parents 106aa8480569
children 4ee0cac00a10 55eeb7f0850b
files scripts/pkg/private/get_forge_pkg.m
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/pkg/private/get_forge_pkg.m	Mon Aug 16 14:57:45 2021 +0200
+++ b/scripts/pkg/private/get_forge_pkg.m	Sat Aug 21 15:02:48 2021 +0200
@@ -43,11 +43,11 @@
   name = tolower (name);
 
   ## Try to download package's index page.
-  [html, succ] = urlread (sprintf ("https://packages.octave.org/%s/index.html",
+  [html, succ] = urlread (sprintf ("https://packages.octave.org/%s/index.html", ...
                                    name));
   if (succ)
     ## Remove blanks for simpler matching.
-    html(isspace(html)) = [];
+    html(isspace (html)) = [];
     ## Good.  Let's grep for the version.
     pat = "<tdclass=""package_table"">PackageVersion:</td><td>([\\d.]*)</td>";
     t = regexp (html, pat, "tokens");
@@ -80,14 +80,16 @@
       len1 = length (name);
       len2 = length (x);
       if (len1 <= len2)
-        d = sum (abs (name(1:len1) - x(1:len1))) + sum (x(len1+1:end));
+        d = sum (abs (tolower (name(1:len1)) - tolower (x(1:len1)))) ...
+            + (len2 - len1)*23;
       else
-        d = sum (abs (name(1:len2) - x(1:len2))) + sum (name(len2+1:end));
+        d = sum (abs (tolower (name(1:len2)) - tolower (x(1:len2)))) ...
+            + (len1 - len2)*23;
       endif
     endfunction
     dist = cellfun ("fdist", t);
     [~, i] = min (dist);
-    error ("get_forge_pkg: package not found: ""%s"".  Maybe you meant ""%s?""",
+    error ("get_forge_pkg: package not found: ""%s"".  Did you mean ""%s""?", ...
            name, t{i});
   endif