Skip to content

PunycodeSwift is a pure Swift library to allows you to encode and decode punycoded strings

License

Notifications You must be signed in to change notification settings

gumob/PunycodeSwift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

30a462b · Aug 28, 2024
Aug 28, 2024
Aug 27, 2024
Aug 27, 2024
Aug 26, 2024
Aug 28, 2024
Aug 27, 2024
Aug 24, 2024
Aug 26, 2024
Aug 27, 2024
Aug 25, 2024
Aug 26, 2024
Aug 22, 2024
Aug 27, 2024
Aug 27, 2024
Aug 27, 2024
Nov 19, 2018
Aug 27, 2024
Aug 27, 2024
Aug 27, 2024
Aug 28, 2024

Repository files navigation

Swift Package Manager compatible Carthage compatible Cocoapods Version Cocoapods Platform Build codecov Language Packagist

PunycodeSwift

PunycodeSwift is a pure Swift library to allows you to encode and decode punycoded strings by using String extension.

What is Punycode?

Punycode is a representation of Unicode with the limited ASCII character subset used for Internet host names. Using Punycode, host names containing Unicode characters are transcoded to a subset of ASCII consisting of letters, digits, and hyphen, which is called the Letter-Digit-Hyphen (LDH) subset. For example, München (German name for Munich) is encoded as Mnchen-3ya. (Wikipedia)

Requirements

  • macOS 10.13 or later
  • iOS 12.0 or later
  • tvOS 12.0 or later
  • watchOS 4.0 or later
  • visionOS 1.0 or later
  • Swift 5.0 or later

Installation

Swift Package Manager

Add the following to your Package.swift file.

  • macOS, iOS, tvOS, watchOS, visionOS, and Swift 5

    dependencies: [
        .package(url: "https://github.com/gumob/PunycodeSwift.git", .upToNextMajor(from: "3.0.0"))
    ]
  • macOS, iOS, tvOS, and Swift 5

    dependencies: [
        .package(url: "https://github.com/gumob/PunycodeSwift.git", .upToNextMajor(from: "2.1.1"))
    ]

Carthage

Add the following to your Cartfile and follow these instructions.

  • macOS, iOS, tvOS, watchOS, visionOS, and Swift 5

    github "gumob/PunycodeSwift" ~> 3.0
    
  • macOS, iOS, tvOS, and Swift 5

    github "gumob/PunycodeSwift" ~> 2.0
    
  • macOS, iOS, tvOS, and Swift 4

    github "gumob/PunycodeSwift" ~> 1.0
    

CocoaPods

To integrate TLDExtract into your project, add the following to your Podfile.

  • macOS, iOS, tvOS, watchOS, visionOS, and Swift 5.0

    pod 'Punycode', '~> 3.0'
  • macOS, iOS, tvOS, and Swift 5.0

    pod 'Punycode', '~> 2.0'
  • macOS, iOS, tvOS, and Swift 4.2

    pod 'Punycode', '~> 1.0'

Usage

Full documentation is available at https://gumob.github.io/PunycodeSwift/swiftdoc/.

Encode and decode IDNA:

import Punycode

var sushi: String = "寿司"

sushi = sushi.idnaEncoded!
print(sushi)  // xn--sprr0q

sushi = sushi.idnaDecoded!
print(sushi)  // "寿司"

Encode and decode Punycode directly:

import Punycode

var sushi: String = "寿司"

sushi = sushi.punycodeEncoded!
print(sushi)  // sprr0q

sushi = sushi.punycodeDecoded!
print(sushi)  // "寿司"

Copyright

Punycode is released under MIT license, which means you can modify it, redistribute it or use it however you like.