UNPKG

fp-ts-std

Version:

The missing pseudo-standard library for fp-ts.

31 lines (30 loc) 1.64 kB
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));