about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDaniel Thwaites <danthwaites30@btinternet.com>2022-04-22 17:43:25 +0100
committerGitHub <noreply@github.com>2022-04-22 12:43:25 -0400
commit4f9b8a07024c3397d33df3f26906839cd03f0297 (patch)
tree7a72fb7d1a1bfb8440a00d5a8ba7abfd6d6e7289
parent114bfa7d5c4e618c1eafe79cc42975389307048e (diff)
lib/strings: optimise hasInfix function (#168175)
* lib/strings: optimise hasInfix function

* lib/strings: optimise hasInfix further using regex

* rstudio: call hasInfix with a string

* lib/strings: remove let from hasInfix

Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>

Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>
-rw-r--r--lib/strings.nix5
-rw-r--r--pkgs/applications/editors/rstudio/default.nix2
2 files changed, 2 insertions, 5 deletions
diff --git a/lib/strings.nix b/lib/strings.nix
index 820d1901f945b..11066890ec3d3 100644
--- a/lib/strings.nix
+++ b/lib/strings.nix
@@ -253,10 +253,7 @@ rec {
       => false
   */
   hasInfix = infix: content:
-    let
-      drop = x: substring 1 (stringLength x) x;
-    in hasPrefix infix content
-      || content != "" && hasInfix infix (drop content);
+    builtins.match ".*${escapeRegex infix}.*" content != null;
 
   /* Convert a string to a list of characters (i.e. singleton strings).
      This allows you to, e.g., map a function over each character.  However,
diff --git a/pkgs/applications/editors/rstudio/default.nix b/pkgs/applications/editors/rstudio/default.nix
index eada77eea8433..8d4aa112cdb66 100644
--- a/pkgs/applications/editors/rstudio/default.nix
+++ b/pkgs/applications/editors/rstudio/default.nix
@@ -154,7 +154,7 @@ in
     hunspellDictionaries = with lib; filter isDerivation (unique (attrValues hunspellDicts));
     # These dicts contain identically-named dict files, so we only keep the
     # -large versions in case of clashes
-    largeDicts = with lib; filter (d: hasInfix "-large-wordlist" d) hunspellDictionaries;
+    largeDicts = with lib; filter (d: hasInfix "-large-wordlist" d.name) hunspellDictionaries;
     otherDicts = with lib; filter
       (d: !(hasAttr "dictFileName" d &&
         elem d.dictFileName (map (d: d.dictFileName) largeDicts)))