Offline postal address rules, field validation, and formatting for MoonBit
let rule = @moon-postal.builtin_rule("US").unwrap()
let address = @moon-postal.Address::new(
recipient="Ada Lovelace",
address_lines=["12 Example Street"],
locality="Boston",
administrative_area="MA",
postal_code="02108",
country_code="US",
)
let issues = @moon-postal.validate(rule, address)
let label = @moon-postal.format_if_valid(rule, address)moon check --target all
moon test --target all
moon run examples/quickstart --target nativepub struct Address {
recipient : String
organization : String
address_lines : Array[String]
dependent_locality : String
locality : String
administrative_area : String
postal_code : String
country_code : String
}pub(all) enum AddressField {
Recipient
Organization
AddressLine
DependentLocality
Locality
AdministrativeArea
PostalCode
Country
}pub struct AddressRule {
country_code : String
required_fields : Array[AddressField]
postal_pattern : PostalPattern
field_order : Array[AddressField]
combine_region_postal : Bool
}fn AddressRule::new(country_code : String, required_fields : Array[AddressField], postal_pattern : PostalPattern, field_order : Array[AddressField]) -> AddressRulepub(all) enum PostalPatternKind {
NoCheck
Digits
DigitsRange
AlphanumericRange
UsZip
CanadaPostal
UkPostcode
JapanPostal
ChinaPostal
}Install
Download zipOffline postal address rules, field validation, and formatting for MoonBit