Project

idnx

0.01
No release in over a year
Converts International Domain Names into Punycode. It uses (via FFI) 'libidn2' for Mac and Linux; for Windows, it uses native APIs.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 1.12
 Project Readme

Idnx

Gem Version CI

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 in Linux / MacOS;
  • It uses the appropriate winnls APIs 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:

gem 'idnx'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install idnx

Usage

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.