Swiftly convert country codes and other unique strings to emoji flags
Usage
let usa = "us".flag() // "🇺🇸"
let england = "gb-eng".flag() // "🏴"
let un = "un".flag() // "🇺🇳"
let chequered = "chequered".flag() // "🏁"
Demo
Check out the Veximoji-Example
iOS app.
Installation
Simply follow standard SPM conventions:
Swift Package Manager
Manual Installation
- Add
package(url: "https://github.com/roz0n/Veximoji.git", from: "2.0.0")
to your application’s Package.swift
file.
Via Xcode
- Open your project within Xcode and select
File > Swift Packages > Add Package Dependency
from the status bar menu.
- Paste the HTTPS Github link:
https://github.com/roz0n/Veximoji.git
and click Next
.
- You’ll be asked to define package options.
Up to Next Major
is a safe default which accepts any version up to the next major release, click Next
to proceed.
Once the package finishes downloading, should now see it listed in the Project Navigator on the left-hand pane. Likewise, feel free to select the project file, and Veximoji
should be listed under the Swift Packages
tab. Xcode will also automatically add it to your main project target under the “Frameworks, Libraries, and Embedded Content” header.
CocoaPods
CocoaPods support is in the works.
API
The Veximoji
API is very concise and well-documented. It organizes emoji flags into four distinct categories:
Category |
Definition |
Example |
country |
flags for countries with an ISO 3611-1 alpha-2 code |
JP |
subdivision |
flags for subdivisions with an ISO 3611-2 code |
GB-ENG |
international |
flags for exceptionally reserved ISO 3166-1 alpha-2 codes |
EU or UN |
unique |
flags not related to individual countries or subdivisions |
.pirate or "pirate" |
Categories
Each of the above categories are available in array-form via publicly exposed short-hand variables:
typealias EmojiFlagCategory
- A typealias of
Veximoji.FlagCategories
, an enum representing the above categories.
EmojiFlagCountryCodes: [String]
- Computes and returns all supported ISO 3166-1 country codes.
EmojiFlagSubdivisionCodes: [String]
- Computes and returns all supported ISO 3166-2 subdivision codes.
EmojiFlagInternationalCodes: [String]
- Computes and returns all supported exceptionally reserved ISO 3166-1 codes.
Helpers
String.flag(term:) -> String?
- Converts any string to its emoji flag counterpart if the string exists within a
FlagCategory
.
country(code:) -> String?
- Used to render a country’s emoji flag by its ISO 3611-1 alpha-2 code
subdivision(code:) -> String?
- Used to render a given subdivision’s emoji flag by its ISO 3611-2 code
Supported Codes
Code |
Flag |
GB-ENG |
🏴 |
GB-SCT |
🏴 |
GB-WLS |
🏴 |
international(code:) -> String?
- Used to render the flag of an exceptionally reserved ISO 3166-1 alpha-2 code
Supported Codes
unique(term:) -> String?
- Refers to an emoji flag that do not correspond to a country, region, or government entity. For example,
.pride
or "pride"
refers to the rainbow or pride flag.
Supported Cases
Case |
Raw value |
Flag |
.pride |
“pride” |
🏳️🌈 |
.trans |
“trans” |
🏳️⚧️ |
.pirate |
“pirate” |
🏴☠️ |
.white |
“white” |
🏳️ |
.red |
“red” |
🚩 |
.black |
“black” |
🏴 |
.crossed |
“crossed” |
🎌 |
.chequered |
“chequered” |
🏁 |
Validators
In the event you would like to validate any of the above manually, validation methods are publicly exposed for your convenience.
validateISO3166_1(code:) -> Bool
- Returns a boolean indicating whether a given string is a supported ISO 3611 alpha-2 country code by checking whether or not it is contained within the
CFLocaleCopyISOCountryCodes
collection
- For more information on supported country codes visit the CFLocaleCopyISOCountryCodes page of the Apple Developer Documentation
validateISO3166_2(code:) -> Bool
- Returns a boolean indicating whether a given string is a valid ISO 3611-2 subdivision code
- Currently, only Great Britain’s subdivision codes are supported as they are the only subdivisions with iOS-supported emoji flags
validateExceptionalReservation(code:) -> Bool
- Returns a boolean indicating whether a given string is a valid ISO 3166-1 exceptionally reserved code.
- Currently, only
"EU"
and "UN"
exceptionally reserved codes are supported as they are the only codes with iOS-supported emoji flags
Support
Email me at: arnold@rozon.org
License
MIT
Swiftly convert country codes and other unique strings to emoji flags
Usage
Demo
Check out the
Veximoji-Example
iOS app.Installation
Simply follow standard SPM conventions:
Swift Package Manager
Manual Installation
package(url: "https://github.com/roz0n/Veximoji.git", from: "2.0.0")
to your application’sPackage.swift
file.Via Xcode
File > Swift Packages > Add Package Dependency
from the status bar menu.https://github.com/roz0n/Veximoji.git
and clickNext
.Up to Next Major
is a safe default which accepts any version up to the next major release, clickNext
to proceed.Once the package finishes downloading, should now see it listed in the Project Navigator on the left-hand pane. Likewise, feel free to select the project file, and
Veximoji
should be listed under theSwift Packages
tab. Xcode will also automatically add it to your main project target under the “Frameworks, Libraries, and Embedded Content” header.CocoaPods
CocoaPods support is in the works.
API
The
Veximoji
API is very concise and well-documented. It organizes emoji flags into four distinct categories:country
JP
subdivision
GB-ENG
international
EU
orUN
unique
.pirate
or"pirate"
Categories
Each of the above categories are available in array-form via publicly exposed short-hand variables:
typealias EmojiFlagCategory
Veximoji.FlagCategories
, an enum representing the above categories.EmojiFlagCountryCodes: [String]
EmojiFlagSubdivisionCodes: [String]
EmojiFlagInternationalCodes: [String]
Helpers
String.flag(term:) -> String?
FlagCategory
.country(code:) -> String?
subdivision(code:) -> String?
Supported Codes
GB-ENG
GB-SCT
GB-WLS
international(code:) -> String?
Supported Codes
EU
UN
unique(term:) -> String?
.pride
or"pride"
refers to the rainbow or pride flag.Supported Cases
.pride
“pride”
.trans
“trans”
.pirate
“pirate”
.white
“white”
.red
“red”
.black
“black”
.crossed
“crossed”
.chequered
“chequered”
Validators
In the event you would like to validate any of the above manually, validation methods are publicly exposed for your convenience.
validateISO3166_1(code:) -> Bool
CFLocaleCopyISOCountryCodes
collectionvalidateISO3166_2(code:) -> Bool
validateExceptionalReservation(code:) -> Bool
"EU"
and"UN"
exceptionally reserved codes are supported as they are the only codes with iOS-supported emoji flagsSupport
Email me at: arnold@rozon.org
License
MIT