# Telefonnummer

![npm](https://img.shields.io/npm/v/bs-telefonnummer.svg)
[![Build Status](https://travis-ci.com/believer/bs-telefonnummer.svg?branch=master)](https://travis-ci.com/believer/bs-telefonnummer)
[![Test Coverage](https://api.codeclimate.com/v1/badges/ca9e96b91ab4cd9f683c/test_coverage)](https://codeclimate.com/github/believer/bs-telefonnummer/test_coverage)

This is a port of my library [telefonnummer](https://github.com/believer/telefonnummer) to ReasonML. It parses Swedish phone numbers into a standard format. It doesn't contain the full API of the original library as I felt it would be a good opportunity to start fresh.

## Installation

```
npm install bs-telefonnummer
```

Add `bs-telefonnummer` in `bs-dependencies` of `bsconfig.json`

## API

### parse

Takes a phone number of any kind and parses it to a standard format

```reason
let parse: string => string
```

#### Example

```reason
let parsedPhoneNumber = Telefonnummer.parse("081234567") /* 08-123 45 67 */
let parsedMobileNumber = Telefonnummer.parse("0701234567") /* 070-123 45 67 */
```

### typeOfNumber

Takes a phone number and returns the type. Usable for pattern-matching.

```reason
type t =
  | VoiceMail
  | Mobile
  | Landline

let typeOfNumber: string => t
```

#### Example

```reason
let phoneNumberType = Telefonnummer.typeOfNumber("081234567") /* Landline */
```

### Normalize

The `Normalize` module is exposed publically if you need to clean up a phone number for use in for example `tel:` links.

```reason
module Normalize = {
  let clean: string => string
}
```

#### Example

```reason
let cleanPhoneNumber = Telefonnummer.Normalize.clean("08-12 3 45.67") /* 081234567 */
```

### Validate

The `Validate` module can help you check if a phone number is valid. It cleans the phone number from any non-number characters.

```reason
module Validate = {
  let isValid: string => bool
}
```

#### Example

```reason
let isValid = Telefonnummer.Validate.isValid("08-12 3 45.67") /* true */
```

### Link

The `Link` module creates phone number links.

```reason
module Link = {
  let make: string => string
}
```

#### Example

```reason
let link = Telefonnummer.Link.make("08-12 3 45.67") /* tel:081234567 */
```
