finos/morphir-elm/16.0.0

NOTE: the latest version is 22.0.2

Formerly Morgan-Stanley/morphir-elm. Search finds this package by either name.

Morphir.SDK.String

Utilities to extends the basic String operations provided by elm/core.

Constraints

Constraints provide a way to add value level constraints to types that are stored as Strings. While the Elm compiler doesn't support checking such constraints statically we can use the information in Morphir backends to generate more specific types. For example given the below definition:

type alias Trade =
    { productID : Cusip
    , comment : Maybe Comment
    }


type Cusip
    = Cusip String


cusip =
    String.ofLength 9 Cusip


type Comment
    = Comment String


comment =
    String.ofMaxLength 100 Comment

We can generate the following DDL in our relational backend:

CREATE TABLE
    trade
    ( product_id CHAR 9 NOT NULL
    , comment VARCHAR 100 NULL
    )
ofLength : Int -> (String -> a) -> String -> Maybe a

Checks the exact length of a string and wraps it using the specified constructor.

currency =
    String.ofLength 3 Currency


currency "USD" == Just (Currency "USD")
currency "us" == Nothing
currency "LONG" == Nothing
ofMaxLength : Int -> (String -> a) -> String -> Maybe a

Checks the max length of a string and wraps it using the specified constructor.

name =
    String.ofMaxLength 15 Name


name "" == Just (Name "")
name "A name" == Just (Name "")
name "A very long name" == Nothing