• Stars
    star
    168
  • Rank 225,507 (Top 5 %)
  • Language
    Swift
  • License
    MIT License
  • Created about 8 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Escape and unescape HTML entities in Swift

HTMLString Swift 5.0 CocoaPods Carthage compatible Contact : @_alexaubry

HTMLString is a library written in Swift that allows your program to add and remove HTML entities in Strings.

Main features
πŸ” Adds entities for ASCII and UTF-8/UTF-16 encodings
πŸ“ Removes more than 2100 named entities (like &)
πŸ”’ Supports removing decimal and hexadecimal entities
🐣 Designed to support Swift Extended Grapheme Clusters (β†’ 100% emoji-proof)
βœ… Fully unit tested
⚑ Fast
πŸ“š Documented
πŸ€– Compatible with Objective-C

Supported Platforms

This package requires Swift 5 and Xcode 12.

  • iOS 9.0+
  • macOS 10.10+
  • tvOS 9.0+
  • watchOS 2.0+
  • Linux

Installation

Swift Package Manager

Add this line to your Package.swift :

.Package(url: "https://github.com/alexaubry/HTMLString", from: "6.0.0")

CocoaPods

Add this line to your Podfile:

pod 'HTMLString', '~> 6.0'

Carthage

Add this line to your Cartfile:

github "alexaubry/HTMLString" ~> 6.0

Usage

HTMLString allows you to add and remove HTML entities from a String.

πŸ” Adding HTML Entities (Escape)

When a character is not supported into the specified encoding, the library will replace it with a decimal entity (supported by all browsers supporting HTML 4 and later).

For instance, the & character will be replaced by &.

You can choose between ASCII and Unicode escaping:

  • Use the addingASCIIEntities function to escape for ASCII-encoded content
  • Use the addingUnicodeEntities function to escape for Unicode-compatible content

πŸ’‘ Pro Tip: When your content supports UTF-8 or UTF-16, use Unicode escaping as it is faster and produces a less bloated output.

Example

import HTMLString

let emoji = "My favorite emoji is πŸ™ƒ"
let escapedEmoji = emoji.addingASCIIEntities() // "My favorite emoji is 🙃"
let noNeedToEscapeThatEmoji = emoji.addingUnicodeEntities() // "My favorite emoji is πŸ™ƒ"

let snack = "Fish & Chips"
let escapedSnack = snack.addingASCIIEntities() // "Fish & Chips"
let weAlsoNeedToEscapeThisSnack = snack.addingUnicodeEntities() // "Fish & Chips"

πŸ“ Removing HTML Entities (Unescape)

To remove all the HTML entities from a String, use the removingHTMLEntities function.

Example

import HTMLString

let escapedEmoji = "My favorite emoji is 🙃"
let emoji = escapedEmoji.removingHTMLEntities() // "My favorite emoji is πŸ™ƒ"

let escapedSnack = "Fish & Chips"
let snack = escapedSnack.removingHTMLEntities() // "Fish & Chips"

Objective-C API

With Obj-C interoperability, you can import and use the HTMLString module from in Objective-C code.

The library introduces a set of Objective-C specific APIs as categories on the NSString type:

  • -[NSString stringByAddingUnicodeEntities]; : Replaces every character incompatible with HTML Unicode encoding by a decimal HTML entitiy.
  • -[NSString stringByAddingASCIIEntities]; : Replaces every character incompatible with HTML ASCII encoding by a decimal HTML entitiy.
  • -[NSString stringByRemovingHTMLEntities]; : Replaces every HTML entity with the matching Unicode character.

Escaping Examples

@import HTMLString;

NSString *emoji = @"My favorite emoji is πŸ™ƒ";
NSString *escapedEmoji = [emoji stringByAddingASCIIEntities]; // "My favorite emoji is 🙃"

NSString *snack = @"Fish & Chips";
NSString *escapedSnack = [snack stringByAddingUnicodeEntities]; // "Fish & Chips"

Unescaping Examples

@import HTMLString;

NSString *escapedEmoji = @"My favorite emoji is 🙃";
NSString *emoji = [escapedEmoji stringByRemovingHTMLEntities]; // "My favorite emoji is πŸ™ƒ"

NSString *escapedSnack = @"Fish & Chips";
NSString *snack = [escapedSnack stringByRemovingHTMLEntities]; // "Fish & Chips"

Author

License

HTMLString is available under the MIT license. See the LICENSE file for more info.