README.md

# gip

[![Package Version](https://img.shields.io/hexpm/v/gip)](https://hex.pm/packages/gip)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gip/)

```sh
gleam add gip
```

```gleam
import gleam/bool
import gleam/io
import gip

pub fn main() {
  io.debug(gip.self()) // Ok(#(x,x,x,x)) | Your current IP
  let ip = "192.0.0.1"
  io.debug("Is IP " <> bool.to_string(gip.is_ip(ip))) // Is IP True | If the provided IP is valid
  io.debug("Is V4 " <> bool.to_string(gip.is_v4(ip))) // Is V4 True | If the provided IP is a valid IPV4
  io.debug("Is V6 " <> bool.to_string(gip.is_v6(ip))) // Is V6 True | If the provided IP is a valid IPV6
  case parse(ip) {
    Ok(parsed) -> {
      io.debug("Can be parsed")
      io.debug(parsed) // #(192,0,0,1) | The IP as a 4xInt tuple
      case stringify(parsed) {
        Ok(stringy) -> io.debug("Can convert into String " <> stringy) // Can convert into String 192.0.0.1 | The IP back as a String
        Error(_) -> panic as "Cannot stringify IP!"
      }
    }
    Error(_) -> panic as "Cannot parse IP!"
  }
}
```

Further documentation can be found at <https://hexdocs.pm/gip>.

## Thanks

- [node-ip](https://github.com/indutny/node-ip) for IP methods on node