Sha256: 1c3a830679950c42aa8425703234dfe83247a77f4bd17f3d2b0be669afb4fbc7

Contents?: true

Size: 1.69 KB

Versions: 2

Compression:

Stored size: 1.69 KB

Contents

# Idnx

[![CI](https://github.com/HoneyryderChuck/idnx/actions/workflows/test.yml/badge.svg)](https://github.com/HoneyryderChuck/idnx/actions/workflows/test.yml)



`idnx` provides a Ruby API for decoding Internationalized domain names into Punycode.

It provides multi-platform support by using the most approriate strategy based on the target environment:

* It uses (and requires the installation of) [libidn2](https://github.com/libidn/libidn2) in Linux / MacOS;
* It uses [the appropriate winnls APIs](https://docs.microsoft.com/en-us/windows/win32/api/winnls/nf-winnls-idntoascii) in Windows;
* It falls back to a pure ruby Punycode 2003 implementation;

## Installation

If you're on Linux or Mac OS, you'll have to install `libidn2` first:

```
# Mac OS
> brew install libidn2
# Ubuntu, as an example
> apt-get install idn2
```

Add this line to your application's Gemfile:

```ruby
gem 'idnx'
```

And then execute:

    $ bundle install

Or install it yourself as:

    $ gem install idnx

## Usage

```ruby
require "idnx"

Idnx.to_punycode("bücher.de") #=> "xn--bcher-kva.de"
```

## Ruby Support Policy

This library supports at least ruby 2.4 .It also supports both JRuby and Truffleruby.

## Known Issues

### JRuby on MacOS

`idnx` won't work in MacOS when using JRuby 9.2 or lower, due to jruby FFI not having the same path lookup logic than it's counterpart for CRuby, thereby not finding `brew`-installed `libidn2`. This has been fixed since JRuby 9.3 .

## Development

If you want to contribute, fork this project, and submit changes via a PR on github.

For running tests, you can run `rake test`.

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/HoneyryderChuck/idnx.

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
idnx-0.1.1 README.md
idnx-0.1.0 README.md