[{"name":"PersonalNumber.Norwegian","comment":" Parse Norwegian personal numbers.\n\n\n# Definition\n\n@docs PersonalNumber\n\n\n# Errors\n\n@docs ValidationError\n\n\n# Strings\n\n@docs fromString, toString, display\n\n\n# JSON\n\n@docs decoder, encode\n\n","unions":[{"name":"PersonalNumber","comment":" An opaque type representing a valid personal number.\n","args":[],"cases":[]},{"name":"ValidationError","comment":" If the parsing fails an error of this type is returned.\n","args":[],"cases":[["InvalidFormat",[]],["InvalidLength",[]],["InvalidDate",[]],["InvalidChecksum",[]]]}],"aliases":[],"values":[{"name":"decoder","comment":" Decode a personal number.\n","type":"Json.Decode.Decoder PersonalNumber.Norwegian.PersonalNumber"},{"name":"display","comment":" Format a personal number into a user readable string (DDMMYY-XXX-CC).\n","type":"PersonalNumber.Norwegian.PersonalNumber -> String.String"},{"name":"encode","comment":" Encode a personal number into a JSON value.\n","type":"PersonalNumber.Norwegian.PersonalNumber -> Json.Encode.Value"},{"name":"fromString","comment":" Parse a string into a personal number.\n","type":"String.String -> Result.Result PersonalNumber.Norwegian.ValidationError PersonalNumber.Norwegian.PersonalNumber"},{"name":"toString","comment":" Converts a personal number to string representation in the long format that is commonly used for database storage (DDMMYYXXXCC).\n","type":"PersonalNumber.Norwegian.PersonalNumber -> String.String"}],"binops":[]},{"name":"PersonalNumber.Swedish","comment":" Parse Swedish personal numbers. Supports both ordinary \"personnummer\" and \"sammordningsnummer\" assigned to foreign temporary visitors.\n\n\n# Definition\n\n@docs PersonalNumber, isPNR, isSAM\n\n\n# Errors\n\n@docs ValidationError\n\n\n# Strings\n\n@docs fromString, toString, display\n\n\n# JSON\n\n@docs decoder, encode\n\n","unions":[{"name":"PersonalNumber","comment":" An opaque type representing a valid personal number.\n","args":[],"cases":[]},{"name":"ValidationError","comment":" If the parsing fails an error of this type is returned.\n","args":[],"cases":[["InvalidFormat",[]],["InvalidLength",[]],["InvalidDate",[]],["InvalidChecksum",[]]]}],"aliases":[],"values":[{"name":"decoder","comment":" Decode a personal number.\n","type":"Json.Decode.Decoder PersonalNumber.Swedish.PersonalNumber"},{"name":"display","comment":" Format a personal number into a user readable string (YYYYMMDD-XXXX).\n","type":"PersonalNumber.Swedish.PersonalNumber -> String.String"},{"name":"encode","comment":" Encode a personal number into a JSON value.\n","type":"PersonalNumber.Swedish.PersonalNumber -> Json.Encode.Value"},{"name":"fromString","comment":" Parse a string into a personal number.\n","type":"String.String -> Result.Result PersonalNumber.Swedish.ValidationError PersonalNumber.Swedish.PersonalNumber"},{"name":"isPNR","comment":" Check if the personal number is a \"personnummer\".\n","type":"PersonalNumber.Swedish.PersonalNumber -> Basics.Bool"},{"name":"isSAM","comment":" Check if the personal number is a \"sammordningsnummer\".\n","type":"PersonalNumber.Swedish.PersonalNumber -> Basics.Bool"},{"name":"toString","comment":" Converts a personal number to string representation in the long format that is commonly used for database storage (YYYYMMDDXXXX).\n","type":"PersonalNumber.Swedish.PersonalNumber -> String.String"}],"binops":[]},{"name":"PersonalNumber.UK","comment":" Parse UK National Insurance Numbers.\n\nSee <https://www.gov.uk/hmrc-internal-manuals/national-insurance-manual/nim39110> for specification,\nand see <https://design-system.service.gov.uk/patterns/national-insurance-numbers/> for designing your UI.\n\nIn particular:\n\n  - When asking for a National Insurance Number:\n      - allow for 13 characters as National Insurance Numbers are spaced in pairs followed by a single letter\n      - let users enter upper and lower case letters, additional spaces and punctuation\n      - ignore any unwanted characters before validating\n      - avoid using ‘AB 12 34 56 C’ as an example because it belongs to a real person and use ‘QQ 12 34 56 C’ instead\n      - set the spellcheck attribute to false so that browsers do not spellcheck the National Insurance Number\n\n\n# Definition\n\n@docs NationalInsuranceNumber\n\n\n# Errors\n\n@docs ValidationError\n\n\n# Strings\n\n@docs fromString, toString, display\n\n\n# JSON\n\n@docs decoder, encode\n\n","unions":[{"name":"NationalInsuranceNumber","comment":" An opaque type representing a valid national insurance number.\n","args":[],"cases":[]},{"name":"ValidationError","comment":" If the parsing fails an error of this type is returned.\n\nA National Insurance Number is made up of a 2 letter prefix, 6 numbers and a final letter, which is always A, B, C, or D.\n\nIt looks something like this:\n\n    QQ 12 34 56 A\n\nAll prefixes are valid except:\n\n  - The characters D, F, I, Q, U, and V are not used as either the first or second letter of a prefix.\n  - The letter O is not used as the second letter of a prefix.\n  - Prefixes BG, GB, KN, NK, NT, TN and ZZ are not to be used\n\nYou could turn these errors into strings something like this:\n\n    errorToString : ValidationError -> String\n    errorToString e =\n        case e of\n            InvalidLength ->\n                \"National Insurance Numbers should have 9 characters, like  QQ 12 34 56 C  or  QQ123456C.\"\n\n            InvalidFormat DoesNotStartWithTwoLetters ->\n                \"National Insurance Numbers should start with two letters, like  QQ 12 34 56 C  or  QQ123456C.\"\n\n            InvalidFormat DoesNotEndWithALetter ->\n                \"National Insurance Numbers should end with a single letter A, B, C or D, like  QQ 12 34 56 C  or  QQ123456C.\"\n\n            InvalidFormat DoesNotHaveSixNumbersInTheMiddle ->\n                \"National Insurance Numbers should have six digits in the middle, like  QQ 12 34 56 C  or  QQ123456C.\"\n\n            InvalidPrefix DisallowedPrefixLetter ->\n                \"D, F, I, Q, U, and V are not allowed in the first two letters of National Insurance Numbers.\"\n\n            InvalidPrefix DisallowedSecondLetterO ->\n                \"O is not allowed in the second letter of National Insurance Numbers.\"\n\n            InvalidPrefix DisallowedPrefix ->\n                \"BG, GB, KN, NK, NT, TN and ZZ are not allowed at the start of National Insurance Numbers.\"\n\n            InvalidSuffix ->\n                \"The last letter of National Insurance Numbers can only be A, B, C or D.\"\n\n","args":[],"cases":[["InvalidLength",[]],["InvalidFormat",["PersonalNumber.UK.FormatError"]],["InvalidPrefix",["PersonalNumber.UK.PrefixError"]],["InvalidSuffix",[]]]}],"aliases":[],"values":[{"name":"decoder","comment":" Decode a National Insurance Number.\n","type":"Json.Decode.Decoder PersonalNumber.UK.NationalInsuranceNumber"},{"name":"display","comment":" Format a national insurance number in the long format that is commonly used for human communication (AB 12 34 56 C).\n","type":"PersonalNumber.UK.NationalInsuranceNumber -> String.String"},{"name":"encode","comment":" Encode a national insurance number into a JSON value.\n","type":"PersonalNumber.UK.NationalInsuranceNumber -> Json.Encode.Value"},{"name":"fromString","comment":" Parse a string into a National Insurance Number.\n","type":"String.String -> Result.Result PersonalNumber.UK.ValidationError PersonalNumber.UK.NationalInsuranceNumber"},{"name":"toString","comment":" Converts a national insurance number to string representation in the short format that is commonly used for database storage (AB123456C).\n","type":"PersonalNumber.UK.NationalInsuranceNumber -> String.String"}],"binops":[]}]