nix-dotfiles/lib/strings.nix

40 lines
1.1 KiB
Nix
Raw Permalink Normal View History

{ stdlib }:
2022-03-07 16:01:52 +01:00
let
inherit (stdlib.lists) length replicate;
inherit (stdlib.strings) concatStringsSep replaceStrings splitString;
in rec {
2022-03-07 16:01:52 +01:00
# String -> [String]
lines = splitString "\n";
# String -> (String -> String) -> String -> String
splitMap = splitter: f: string:
concatStringsSep splitter (map f (splitString splitter string));
# (String -> String) -> String -> String
mapLines = splitMap "\n";
# String -> Int -> String
repeatString = string: times: concatStringsSep "" (replicate times string);
2022-03-07 16:01:52 +01:00
# Replaces any occurences in a list of strings with a single replacement.
# NOTE: This function does not support regex patterns.
#
# [String] -> String -> String -> String
replaceStrings' = from: to: replaceStrings from (replicate (length from) to);
2022-03-07 16:01:52 +01:00
# [String] -> String
unlines = concatStringsSep "\n";
# [String] -> String
unwords = concatStringsSep " ";
# String -> [String]
words = builtins.split "\\s+";
# String -> String -> String -> String
wrap = start: end: string: start + string + end;
# String -> String -> String
wrap' = wrapper: wrap wrapper wrapper;
}