fp-ts-std
Version:
The missing pseudo-standard library for fp-ts.
31 lines (30 loc) • 1.64 kB
JavaScript
import * as O from "fp-ts/Option";
import { not } from "fp-ts/Predicate";
import { flow } from "fp-ts/function";
import { Eq as _Eq, Ord as _Ord, Semigroup as _Semigroup, Show as _Show, includes as _includes, isEmpty as _isEmpty, size as _size, split as _split, toLowerCase as _toLowerCase, toUpperCase as _toUpperCase, } from "fp-ts/string";
import { getEq, getOrd, getSemigroup } from "newtype-ts";
import { over, pack, unpack } from "./Newtype";
import { unsafeExpect, unsafeUnwrap } from "./Option";
import * as Str from "./String";
export const fromString = flow(O.fromPredicate(not(_isEmpty)), O.map((pack)));
export const unsafeFromString = flow(fromString, unsafeExpect("Failed to lift an empty string to NonEmptyString"));
export const fromNumber = flow(Str.fromNumber, unsafeFromString);
export const unNonEmptyString = unpack;
export const toString = unNonEmptyString;
export const Eq = getEq(_Eq);
export const Ord = getOrd(_Ord);
export const Semigroup = getSemigroup(_Semigroup);
export const Show = {
show: flow(unNonEmptyString, _Show.show),
};
export const head = over(flow(Str.head, unsafeUnwrap));
export const last = over(flow(Str.last, unsafeUnwrap));
export const toUpperCase = over(_toUpperCase);
export const toLowerCase = over(_toLowerCase);
export const prepend = flow(Str.prepend, over);
export const append = flow(Str.append, over);
export const surround = flow(Str.surround, over);
export const reverse = over(Str.reverse);
export const size = flow(toString, _size);
export const split = (separator) => flow(toString, _split(separator));
export const includes = (search) => flow(toString, _includes(search));