@eagleoutice/flowr - v2.13.14
    Preparing search index...
    StringFns: {
        basename: {
            fold: (path: string) => string;
            params: readonly ["path"];
            pkg: Base;
        };
        dirname: {
            fold: (path: string) => string;
            params: readonly ["path"];
            pkg: Base;
        };
        "file.path": {
            defaults: { fsep: "/" };
            fold: (parts: string[], fsep: string) => string;
            params: readonly ["...", "fsep"];
            pkg: Base;
        };
        here: {
            fold: (parts: string[]) => string;
            params: readonly ["..."];
            pkg: Here;
        };
        nchar: { fold: (s: string) => number; params: readonly ["x"]; pkg: Base };
        paste: {
            defaults: { sep: " " };
            fold: (parts: string[], sep: string) => string;
            ignored: readonly ["collapse"];
            params: readonly ["...", "sep"];
            pkg: Base;
        };
        paste0: {
            defaults: { sep: "" };
            fold: (parts: string[], sep: string) => string;
            ignored: readonly ["collapse"];
            params: readonly ["...", "sep"];
            pkg: Base;
        };
        tolower: { fold: (s: string) => string; params: readonly ["x"]; pkg: Base };
        toupper: { fold: (s: string) => string; params: readonly ["x"]; pkg: Base };
        trimws: { fold: (s: string) => string; params: readonly ["x"]; pkg: Base };
    } = ...

    Every string built-in the value solver folds, the joining ones included: paste is an entry like toupper is, and both are reached through resolveAsStringFn. Teaching flowR one more is a line here plus the matching evalHandler in the built-in configuration -- a test checks that the two agree.

    An entry with a ... parameter joins what it collected, which is why its separator is just another parameter with a default. The rest take a fixed number of arguments under the names R documents.

    Type Declaration

    • Readonlybasename: { fold: (path: string) => string; params: readonly ["path"]; pkg: Base }
      • Readonlyfold: (path: string) => string
      • Readonlyparams: readonly ["path"]
      • Readonlypkg: Base
    • Readonlydirname: { fold: (path: string) => string; params: readonly ["path"]; pkg: Base }
      • Readonlyfold: (path: string) => string
      • Readonlyparams: readonly ["path"]
      • Readonlypkg: Base
    • Readonlyfile.path: {
          defaults: { fsep: "/" };
          fold: (parts: string[], fsep: string) => string;
          params: readonly ["...", "fsep"];
          pkg: Base;
      }
    • Readonlyhere: { fold: (parts: string[]) => string; params: readonly ["..."]; pkg: Here }
    • Readonlynchar: { fold: (s: string) => number; params: readonly ["x"]; pkg: Base }

      R counts characters, so we count code points rather than UTF-16 units

    • Readonlypaste: {
          defaults: { sep: " " };
          fold: (parts: string[], sep: string) => string;
          ignored: readonly ["collapse"];
          params: readonly ["...", "sep"];
          pkg: Base;
      }
    • Readonlypaste0: {
          defaults: { sep: "" };
          fold: (parts: string[], sep: string) => string;
          ignored: readonly ["collapse"];
          params: readonly ["...", "sep"];
          pkg: Base;
      }
    • Readonlytolower: { fold: (s: string) => string; params: readonly ["x"]; pkg: Base }
    • Readonlytoupper: { fold: (s: string) => string; params: readonly ["x"]; pkg: Base }
    • Readonlytrimws: { fold: (s: string) => string; params: readonly ["x"]; pkg: Base }