summaryrefslogtreecommitdiffstats
path: root/vendor/unic-emoji-char
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /vendor/unic-emoji-char
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/unic-emoji-char')
-rw-r--r--vendor/unic-emoji-char/.cargo-checksum.json1
-rw-r--r--vendor/unic-emoji-char/Cargo.toml48
-rw-r--r--vendor/unic-emoji-char/src/emoji.rs106
-rw-r--r--vendor/unic-emoji-char/src/emoji_component.rs108
-rw-r--r--vendor/unic-emoji-char/src/emoji_modifier.rs106
-rw-r--r--vendor/unic-emoji-char/src/emoji_modifier_base.rs106
-rw-r--r--vendor/unic-emoji-char/src/emoji_presentation.rs106
-rw-r--r--vendor/unic-emoji-char/src/emoji_version.rs17
-rw-r--r--vendor/unic-emoji-char/src/lib.rs47
-rw-r--r--vendor/unic-emoji-char/src/pkg_info.rs20
-rw-r--r--vendor/unic-emoji-char/tables/emoji.rsv149
-rw-r--r--vendor/unic-emoji-char/tables/emoji_component.rsv9
-rw-r--r--vendor/unic-emoji-char/tables/emoji_modifier.rsv5
-rw-r--r--vendor/unic-emoji-char/tables/emoji_modifier_base.rsv36
-rw-r--r--vendor/unic-emoji-char/tables/emoji_presentation.rsv79
-rw-r--r--vendor/unic-emoji-char/tables/emoji_version.rsv3
-rw-r--r--vendor/unic-emoji-char/tests/emoji_version_tests.rs19
17 files changed, 965 insertions, 0 deletions
diff --git a/vendor/unic-emoji-char/.cargo-checksum.json b/vendor/unic-emoji-char/.cargo-checksum.json
new file mode 100644
index 000000000..e5e00e281
--- /dev/null
+++ b/vendor/unic-emoji-char/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"a00c0a6a58a2e0a8d7c4d83d627592788e0994e3277c2f623d21b8509af36cad","src/emoji.rs":"59d4963c363e90d994e587e9db843943406cea4ee009ac1cc5cac5e1d3d67547","src/emoji_component.rs":"40ffc89f4c67b761d16daa6fda31ec149e9bcd9f29f50d115d62b903b5a38054","src/emoji_modifier.rs":"353314425f17fca26f3c8997f07e694cbd52868b3adc348d3b43f18f1d8b3079","src/emoji_modifier_base.rs":"c34ffe1f4bf8a6e97890f9b4f1365e25c6cb91a49e8fff3d3ba105044fb0b127","src/emoji_presentation.rs":"5a23c04dbaa699b2c8bbdb1cb072ffb0682624821075de28bc427c737e9e0218","src/emoji_version.rs":"99f3d457b6eae2309ddb161f62fe74beec097fff882bb10ed3824ab82890ae95","src/lib.rs":"cfbb4c81b3f7f6de962c508bb227064e0a9136b12d66e65846d65ab3eb117bd8","src/pkg_info.rs":"37cbe4efd0b0205d251e1ef7714b23e3be27052c8a0de6b1ae3cbf3aefae1fe5","tables/emoji.rsv":"0fba40642fd7d1e81f83cae136540066c79e6d5f1a3f1b3a6add60945787e93d","tables/emoji_component.rsv":"15f692af62d6494185dace932ba4b630a9bb2e7a91a40fbd67a379ebc47767bc","tables/emoji_modifier.rsv":"c483a783ff9a6b2a4e7545e405dc33b1ea48670ae3ae835eb0a840b11f25950d","tables/emoji_modifier_base.rsv":"ca4d5da63706e43ec407923474dec5da1e278dc6f558419c909d2978cb8cf4a9","tables/emoji_presentation.rsv":"6b7a54c0d193b6bb0acab2f0ac1af6db65736db1d2e952cf4a31bb72fc271dfb","tables/emoji_version.rsv":"770dc11d51a76b2868244ff2a3de9718b5f14479c9e14944e978da890752c485","tests/emoji_version_tests.rs":"0c27fbc81dc4ad0804ae47558664ae77cf9ba073cf50eca978ebd7c9f05cdaf4"},"package":"0b07221e68897210270a38bde4babb655869637af0f69407f96053a34f76494d"} \ No newline at end of file
diff --git a/vendor/unic-emoji-char/Cargo.toml b/vendor/unic-emoji-char/Cargo.toml
new file mode 100644
index 000000000..e108128d9
--- /dev/null
+++ b/vendor/unic-emoji-char/Cargo.toml
@@ -0,0 +1,48 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g. crates.io) dependencies
+#
+# If you believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+edition = "2018"
+name = "unic-emoji-char"
+version = "0.9.0"
+authors = ["The UNIC Project Developers"]
+exclude = []
+description = "UNIC — Unicode Emoji — Emoji Character Properties"
+keywords = ["text", "unicode", "character-property", "emoji"]
+categories = ["internationalization", "text-processing", "parsing", "rendering"]
+license = "MIT/Apache-2.0"
+repository = "https://github.com/open-i18n/rust-unic/"
+[dependencies.unic-char-property]
+version = "0.9.0"
+
+[dependencies.unic-char-range]
+version = "0.9.0"
+
+[dependencies.unic-ucd-version]
+version = "0.9.0"
+[badges.appveyor]
+branch = "master"
+repository = "open-i18n/rust-unic"
+service = "github"
+
+[badges.is-it-maintained-issue-resolution]
+repository = "open-i18n/rust-unic"
+
+[badges.is-it-maintained-open-issues]
+repository = "open-i18n/rust-unic"
+
+[badges.maintenance]
+status = "actively-developed"
+
+[badges.travis-ci]
+branch = "master"
+repository = "open-i18n/rust-unic"
diff --git a/vendor/unic-emoji-char/src/emoji.rs b/vendor/unic-emoji-char/src/emoji.rs
new file mode 100644
index 000000000..1e5388bcf
--- /dev/null
+++ b/vendor/unic-emoji-char/src/emoji.rs
@@ -0,0 +1,106 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Unicode `Emoji` Character Property.
+
+char_property! {
+ /// Represents values of the Unicode character property
+ /// [`Emoji`](https://www.unicode.org/reports/tr51/#Emoji_Properties).
+ ///
+ /// The value is `true` for characters that are emoji.
+ pub struct Emoji(bool) {
+ abbr => "Emoji";
+ long => "Emoji";
+ human => "Emoji";
+
+ data_table_path => "../tables/emoji.rsv";
+ }
+
+ /// The value is `true` for characters that are emoji.
+ pub fn is_emoji(char) -> bool;
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn test_values() {
+ use super::is_emoji;
+
+ // ASCII
+ assert_eq!(is_emoji('\u{0000}'), false);
+ assert_eq!(is_emoji('\u{0021}'), false);
+
+ assert_eq!(is_emoji('\u{0027}'), false);
+ assert_eq!(is_emoji('\u{0028}'), false);
+ assert_eq!(is_emoji('\u{0029}'), false);
+ assert_eq!(is_emoji('\u{002a}'), true);
+
+ assert_eq!(is_emoji('\u{003b}'), false);
+ assert_eq!(is_emoji('\u{003c}'), false);
+ assert_eq!(is_emoji('\u{003d}'), false);
+
+ assert_eq!(is_emoji('\u{007a}'), false);
+ assert_eq!(is_emoji('\u{007b}'), false);
+ assert_eq!(is_emoji('\u{007c}'), false);
+ assert_eq!(is_emoji('\u{007d}'), false);
+ assert_eq!(is_emoji('\u{007e}'), false);
+
+ // Other BMP
+ assert_eq!(is_emoji('\u{061b}'), false);
+ assert_eq!(is_emoji('\u{061c}'), false);
+ assert_eq!(is_emoji('\u{061d}'), false);
+
+ assert_eq!(is_emoji('\u{200d}'), false);
+ assert_eq!(is_emoji('\u{200e}'), false);
+ assert_eq!(is_emoji('\u{200f}'), false);
+ assert_eq!(is_emoji('\u{2010}'), false);
+
+ assert_eq!(is_emoji('\u{2029}'), false);
+ assert_eq!(is_emoji('\u{202a}'), false);
+ assert_eq!(is_emoji('\u{202e}'), false);
+ assert_eq!(is_emoji('\u{202f}'), false);
+
+ // Other Planes
+ assert_eq!(is_emoji('\u{10000}'), false);
+ assert_eq!(is_emoji('\u{10001}'), false);
+
+ assert_eq!(is_emoji('\u{1f1e5}'), false);
+ assert_eq!(is_emoji('\u{1f1e6}'), true);
+ assert_eq!(is_emoji('\u{1f1ff}'), true);
+ assert_eq!(is_emoji('\u{1f200}'), false);
+
+ assert_eq!(is_emoji('\u{20000}'), false);
+ assert_eq!(is_emoji('\u{30000}'), false);
+ assert_eq!(is_emoji('\u{40000}'), false);
+ assert_eq!(is_emoji('\u{50000}'), false);
+ assert_eq!(is_emoji('\u{60000}'), false);
+ assert_eq!(is_emoji('\u{70000}'), false);
+ assert_eq!(is_emoji('\u{80000}'), false);
+ assert_eq!(is_emoji('\u{90000}'), false);
+ assert_eq!(is_emoji('\u{a0000}'), false);
+ assert_eq!(is_emoji('\u{b0000}'), false);
+ assert_eq!(is_emoji('\u{c0000}'), false);
+ assert_eq!(is_emoji('\u{d0000}'), false);
+ assert_eq!(is_emoji('\u{e0000}'), false);
+
+ assert_eq!(is_emoji('\u{efffe}'), false);
+ assert_eq!(is_emoji('\u{effff}'), false);
+
+ // Priavte-Use Area
+ assert_eq!(is_emoji('\u{f0000}'), false);
+ assert_eq!(is_emoji('\u{f0001}'), false);
+ assert_eq!(is_emoji('\u{ffffe}'), false);
+ assert_eq!(is_emoji('\u{fffff}'), false);
+ assert_eq!(is_emoji('\u{100000}'), false);
+ assert_eq!(is_emoji('\u{100001}'), false);
+ assert_eq!(is_emoji('\u{10fffe}'), false);
+ assert_eq!(is_emoji('\u{10ffff}'), false);
+ }
+}
diff --git a/vendor/unic-emoji-char/src/emoji_component.rs b/vendor/unic-emoji-char/src/emoji_component.rs
new file mode 100644
index 000000000..eb629d399
--- /dev/null
+++ b/vendor/unic-emoji-char/src/emoji_component.rs
@@ -0,0 +1,108 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Unicode `Emoji_Component` Character Property.
+
+char_property! {
+ /// Represents values of the Unicode character property
+ /// [`Emoji_Component`](https://www.unicode.org/reports/tr51/#Emoji_Properties).
+ ///
+ /// The value is `true` for characters that normally do not appear on emoji keyboards as
+ /// separate choices, such as Keycap base characters, Regional_Indicators, …, `false` otherwise.
+ pub struct EmojiComponent(bool) {
+ abbr => "Emoji_Component";
+ long => "Emoji_Component";
+ human => "Emoji Component";
+
+ data_table_path => "../tables/emoji_component.rsv";
+ }
+
+ /// The value is `true` for characters that normally do not appear on emoji keyboards as
+ /// separate choices, such as Keycap base characters, Regional_Indicators, …, `false` otherwise.
+ pub fn is_emoji_component(char) -> bool;
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn test_values() {
+ use super::is_emoji_component;
+
+ // ASCII
+ assert_eq!(is_emoji_component('\u{0000}'), false);
+ assert_eq!(is_emoji_component('\u{0021}'), false);
+
+ assert_eq!(is_emoji_component('\u{0027}'), false);
+ assert_eq!(is_emoji_component('\u{0028}'), false);
+ assert_eq!(is_emoji_component('\u{0029}'), false);
+ assert_eq!(is_emoji_component('\u{002a}'), true);
+
+ assert_eq!(is_emoji_component('\u{003b}'), false);
+ assert_eq!(is_emoji_component('\u{003c}'), false);
+ assert_eq!(is_emoji_component('\u{003d}'), false);
+
+ assert_eq!(is_emoji_component('\u{007a}'), false);
+ assert_eq!(is_emoji_component('\u{007b}'), false);
+ assert_eq!(is_emoji_component('\u{007c}'), false);
+ assert_eq!(is_emoji_component('\u{007d}'), false);
+ assert_eq!(is_emoji_component('\u{007e}'), false);
+
+ // Other BMP
+ assert_eq!(is_emoji_component('\u{061b}'), false);
+ assert_eq!(is_emoji_component('\u{061c}'), false);
+ assert_eq!(is_emoji_component('\u{061d}'), false);
+
+ assert_eq!(is_emoji_component('\u{200d}'), false);
+ assert_eq!(is_emoji_component('\u{200e}'), false);
+ assert_eq!(is_emoji_component('\u{200f}'), false);
+ assert_eq!(is_emoji_component('\u{2010}'), false);
+
+ assert_eq!(is_emoji_component('\u{2029}'), false);
+ assert_eq!(is_emoji_component('\u{202a}'), false);
+ assert_eq!(is_emoji_component('\u{202e}'), false);
+ assert_eq!(is_emoji_component('\u{202f}'), false);
+
+ // Other Planes
+ assert_eq!(is_emoji_component('\u{10000}'), false);
+ assert_eq!(is_emoji_component('\u{10001}'), false);
+
+ assert_eq!(is_emoji_component('\u{1f1e5}'), false);
+ assert_eq!(is_emoji_component('\u{1f1e6}'), true);
+ assert_eq!(is_emoji_component('\u{1f1ff}'), true);
+ assert_eq!(is_emoji_component('\u{1f200}'), false);
+
+ assert_eq!(is_emoji_component('\u{20000}'), false);
+ assert_eq!(is_emoji_component('\u{30000}'), false);
+ assert_eq!(is_emoji_component('\u{40000}'), false);
+ assert_eq!(is_emoji_component('\u{50000}'), false);
+ assert_eq!(is_emoji_component('\u{60000}'), false);
+ assert_eq!(is_emoji_component('\u{70000}'), false);
+ assert_eq!(is_emoji_component('\u{80000}'), false);
+ assert_eq!(is_emoji_component('\u{90000}'), false);
+ assert_eq!(is_emoji_component('\u{a0000}'), false);
+ assert_eq!(is_emoji_component('\u{b0000}'), false);
+ assert_eq!(is_emoji_component('\u{c0000}'), false);
+ assert_eq!(is_emoji_component('\u{d0000}'), false);
+ assert_eq!(is_emoji_component('\u{e0000}'), false);
+
+ assert_eq!(is_emoji_component('\u{efffe}'), false);
+ assert_eq!(is_emoji_component('\u{effff}'), false);
+
+ // Priavte-Use Area
+ assert_eq!(is_emoji_component('\u{f0000}'), false);
+ assert_eq!(is_emoji_component('\u{f0001}'), false);
+ assert_eq!(is_emoji_component('\u{ffffe}'), false);
+ assert_eq!(is_emoji_component('\u{fffff}'), false);
+ assert_eq!(is_emoji_component('\u{100000}'), false);
+ assert_eq!(is_emoji_component('\u{100001}'), false);
+ assert_eq!(is_emoji_component('\u{10fffe}'), false);
+ assert_eq!(is_emoji_component('\u{10ffff}'), false);
+ }
+}
diff --git a/vendor/unic-emoji-char/src/emoji_modifier.rs b/vendor/unic-emoji-char/src/emoji_modifier.rs
new file mode 100644
index 000000000..863370ab1
--- /dev/null
+++ b/vendor/unic-emoji-char/src/emoji_modifier.rs
@@ -0,0 +1,106 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Unicode `Emoji_Modifier` Character Property.
+
+char_property! {
+ /// Represents values of the Unicode character property
+ /// [`Emoji_Modifier`](https://www.unicode.org/reports/tr51/#Emoji_Properties).
+ ///
+ /// The value is `true` for characters that have emoji presentation by default.
+ pub struct EmojiModifier(bool) {
+ abbr => "Emoji_Modifier";
+ long => "Emoji_Modifier";
+ human => "Emoji Modifier";
+
+ data_table_path => "../tables/emoji_modifier.rsv";
+ }
+
+ /// The value is `true` for characters that have emoji presentation by default.
+ pub fn is_emoji_modifier(char) -> bool;
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn test_values() {
+ use super::is_emoji_modifier;
+
+ // ASCII
+ assert_eq!(is_emoji_modifier('\u{0000}'), false);
+ assert_eq!(is_emoji_modifier('\u{0021}'), false);
+
+ assert_eq!(is_emoji_modifier('\u{0027}'), false);
+ assert_eq!(is_emoji_modifier('\u{0028}'), false);
+ assert_eq!(is_emoji_modifier('\u{0029}'), false);
+ assert_eq!(is_emoji_modifier('\u{002a}'), false);
+
+ assert_eq!(is_emoji_modifier('\u{003b}'), false);
+ assert_eq!(is_emoji_modifier('\u{003c}'), false);
+ assert_eq!(is_emoji_modifier('\u{003d}'), false);
+
+ assert_eq!(is_emoji_modifier('\u{007a}'), false);
+ assert_eq!(is_emoji_modifier('\u{007b}'), false);
+ assert_eq!(is_emoji_modifier('\u{007c}'), false);
+ assert_eq!(is_emoji_modifier('\u{007d}'), false);
+ assert_eq!(is_emoji_modifier('\u{007e}'), false);
+
+ // Other BMP
+ assert_eq!(is_emoji_modifier('\u{061b}'), false);
+ assert_eq!(is_emoji_modifier('\u{061c}'), false);
+ assert_eq!(is_emoji_modifier('\u{061d}'), false);
+
+ assert_eq!(is_emoji_modifier('\u{200d}'), false);
+ assert_eq!(is_emoji_modifier('\u{200e}'), false);
+ assert_eq!(is_emoji_modifier('\u{200f}'), false);
+ assert_eq!(is_emoji_modifier('\u{2010}'), false);
+
+ assert_eq!(is_emoji_modifier('\u{2029}'), false);
+ assert_eq!(is_emoji_modifier('\u{202a}'), false);
+ assert_eq!(is_emoji_modifier('\u{202e}'), false);
+ assert_eq!(is_emoji_modifier('\u{202f}'), false);
+
+ // Other Planes
+ assert_eq!(is_emoji_modifier('\u{10000}'), false);
+ assert_eq!(is_emoji_modifier('\u{10001}'), false);
+
+ assert_eq!(is_emoji_modifier('\u{1f1e5}'), false);
+ assert_eq!(is_emoji_modifier('\u{1f1e6}'), false);
+ assert_eq!(is_emoji_modifier('\u{1f1ff}'), false);
+ assert_eq!(is_emoji_modifier('\u{1f200}'), false);
+
+ assert_eq!(is_emoji_modifier('\u{20000}'), false);
+ assert_eq!(is_emoji_modifier('\u{30000}'), false);
+ assert_eq!(is_emoji_modifier('\u{40000}'), false);
+ assert_eq!(is_emoji_modifier('\u{50000}'), false);
+ assert_eq!(is_emoji_modifier('\u{60000}'), false);
+ assert_eq!(is_emoji_modifier('\u{70000}'), false);
+ assert_eq!(is_emoji_modifier('\u{80000}'), false);
+ assert_eq!(is_emoji_modifier('\u{90000}'), false);
+ assert_eq!(is_emoji_modifier('\u{a0000}'), false);
+ assert_eq!(is_emoji_modifier('\u{b0000}'), false);
+ assert_eq!(is_emoji_modifier('\u{c0000}'), false);
+ assert_eq!(is_emoji_modifier('\u{d0000}'), false);
+ assert_eq!(is_emoji_modifier('\u{e0000}'), false);
+
+ assert_eq!(is_emoji_modifier('\u{efffe}'), false);
+ assert_eq!(is_emoji_modifier('\u{effff}'), false);
+
+ // Priavte-Use Area
+ assert_eq!(is_emoji_modifier('\u{f0000}'), false);
+ assert_eq!(is_emoji_modifier('\u{f0001}'), false);
+ assert_eq!(is_emoji_modifier('\u{ffffe}'), false);
+ assert_eq!(is_emoji_modifier('\u{fffff}'), false);
+ assert_eq!(is_emoji_modifier('\u{100000}'), false);
+ assert_eq!(is_emoji_modifier('\u{100001}'), false);
+ assert_eq!(is_emoji_modifier('\u{10fffe}'), false);
+ assert_eq!(is_emoji_modifier('\u{10ffff}'), false);
+ }
+}
diff --git a/vendor/unic-emoji-char/src/emoji_modifier_base.rs b/vendor/unic-emoji-char/src/emoji_modifier_base.rs
new file mode 100644
index 000000000..c903914ff
--- /dev/null
+++ b/vendor/unic-emoji-char/src/emoji_modifier_base.rs
@@ -0,0 +1,106 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Unicode `Emoji_Modifier_Base` Character Property.
+
+char_property! {
+ /// Represents values of the Unicode character property
+ /// [`Emoji_Modifier_Base`](https://www.unicode.org/reports/tr51/#Emoji_Properties).
+ ///
+ /// The value is `true` for characters that are emoji modifiers.
+ pub struct EmojiModifierBase(bool) {
+ abbr => "Emoji_Modifier_Base";
+ long => "Emoji_Modifier_Base";
+ human => "Emoji Modifier Base";
+
+ data_table_path => "../tables/emoji_modifier_base.rsv";
+ }
+
+ /// The value is `true` for characters that are emoji modifiers.
+ pub fn is_emoji_modifier_base(char) -> bool;
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn test_values() {
+ use super::is_emoji_modifier_base;
+
+ // ASCII
+ assert_eq!(is_emoji_modifier_base('\u{0000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{0021}'), false);
+
+ assert_eq!(is_emoji_modifier_base('\u{0027}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{0028}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{0029}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{002a}'), false);
+
+ assert_eq!(is_emoji_modifier_base('\u{003b}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{003c}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{003d}'), false);
+
+ assert_eq!(is_emoji_modifier_base('\u{007a}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{007b}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{007c}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{007d}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{007e}'), false);
+
+ // Other BMP
+ assert_eq!(is_emoji_modifier_base('\u{061b}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{061c}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{061d}'), false);
+
+ assert_eq!(is_emoji_modifier_base('\u{200d}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{200e}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{200f}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{2010}'), false);
+
+ assert_eq!(is_emoji_modifier_base('\u{2029}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{202a}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{202e}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{202f}'), false);
+
+ // Other Planes
+ assert_eq!(is_emoji_modifier_base('\u{10000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{10001}'), false);
+
+ assert_eq!(is_emoji_modifier_base('\u{1f1e5}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{1f1e6}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{1f1ff}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{1f200}'), false);
+
+ assert_eq!(is_emoji_modifier_base('\u{20000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{30000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{40000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{50000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{60000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{70000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{80000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{90000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{a0000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{b0000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{c0000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{d0000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{e0000}'), false);
+
+ assert_eq!(is_emoji_modifier_base('\u{efffe}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{effff}'), false);
+
+ // Priavte-Use Area
+ assert_eq!(is_emoji_modifier_base('\u{f0000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{f0001}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{ffffe}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{fffff}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{100000}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{100001}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{10fffe}'), false);
+ assert_eq!(is_emoji_modifier_base('\u{10ffff}'), false);
+ }
+}
diff --git a/vendor/unic-emoji-char/src/emoji_presentation.rs b/vendor/unic-emoji-char/src/emoji_presentation.rs
new file mode 100644
index 000000000..25e9e4cd8
--- /dev/null
+++ b/vendor/unic-emoji-char/src/emoji_presentation.rs
@@ -0,0 +1,106 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Unicode `Emoji_Presentation` Character Property.
+
+char_property! {
+ /// Represents values of the Unicode character property
+ /// [`Emoji_Presentation`](https://www.unicode.org/reports/tr51/#Emoji_Properties).
+ ///
+ /// The value is `true` for characters that have emoji presentation by default.
+ pub struct EmojiPresentation(bool) {
+ abbr => "Emoji_Presentation";
+ long => "Emoji_Presentation";
+ human => "Emoji Presentation";
+
+ data_table_path => "../tables/emoji_presentation.rsv";
+ }
+
+ /// The value is `true` for characters that have emoji presentation by default.
+ pub fn is_emoji_presentation(char) -> bool;
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn test_values() {
+ use super::is_emoji_presentation;
+
+ // ASCII
+ assert_eq!(is_emoji_presentation('\u{0000}'), false);
+ assert_eq!(is_emoji_presentation('\u{0021}'), false);
+
+ assert_eq!(is_emoji_presentation('\u{0027}'), false);
+ assert_eq!(is_emoji_presentation('\u{0028}'), false);
+ assert_eq!(is_emoji_presentation('\u{0029}'), false);
+ assert_eq!(is_emoji_presentation('\u{002a}'), false);
+
+ assert_eq!(is_emoji_presentation('\u{003b}'), false);
+ assert_eq!(is_emoji_presentation('\u{003c}'), false);
+ assert_eq!(is_emoji_presentation('\u{003d}'), false);
+
+ assert_eq!(is_emoji_presentation('\u{007a}'), false);
+ assert_eq!(is_emoji_presentation('\u{007b}'), false);
+ assert_eq!(is_emoji_presentation('\u{007c}'), false);
+ assert_eq!(is_emoji_presentation('\u{007d}'), false);
+ assert_eq!(is_emoji_presentation('\u{007e}'), false);
+
+ // Other BMP
+ assert_eq!(is_emoji_presentation('\u{061b}'), false);
+ assert_eq!(is_emoji_presentation('\u{061c}'), false);
+ assert_eq!(is_emoji_presentation('\u{061d}'), false);
+
+ assert_eq!(is_emoji_presentation('\u{200d}'), false);
+ assert_eq!(is_emoji_presentation('\u{200e}'), false);
+ assert_eq!(is_emoji_presentation('\u{200f}'), false);
+ assert_eq!(is_emoji_presentation('\u{2010}'), false);
+
+ assert_eq!(is_emoji_presentation('\u{2029}'), false);
+ assert_eq!(is_emoji_presentation('\u{202a}'), false);
+ assert_eq!(is_emoji_presentation('\u{202e}'), false);
+ assert_eq!(is_emoji_presentation('\u{202f}'), false);
+
+ // Other Planes
+ assert_eq!(is_emoji_presentation('\u{10000}'), false);
+ assert_eq!(is_emoji_presentation('\u{10001}'), false);
+
+ assert_eq!(is_emoji_presentation('\u{1f1e5}'), false);
+ assert_eq!(is_emoji_presentation('\u{1f1e6}'), true);
+ assert_eq!(is_emoji_presentation('\u{1f1ff}'), true);
+ assert_eq!(is_emoji_presentation('\u{1f200}'), false);
+
+ assert_eq!(is_emoji_presentation('\u{20000}'), false);
+ assert_eq!(is_emoji_presentation('\u{30000}'), false);
+ assert_eq!(is_emoji_presentation('\u{40000}'), false);
+ assert_eq!(is_emoji_presentation('\u{50000}'), false);
+ assert_eq!(is_emoji_presentation('\u{60000}'), false);
+ assert_eq!(is_emoji_presentation('\u{70000}'), false);
+ assert_eq!(is_emoji_presentation('\u{80000}'), false);
+ assert_eq!(is_emoji_presentation('\u{90000}'), false);
+ assert_eq!(is_emoji_presentation('\u{a0000}'), false);
+ assert_eq!(is_emoji_presentation('\u{b0000}'), false);
+ assert_eq!(is_emoji_presentation('\u{c0000}'), false);
+ assert_eq!(is_emoji_presentation('\u{d0000}'), false);
+ assert_eq!(is_emoji_presentation('\u{e0000}'), false);
+
+ assert_eq!(is_emoji_presentation('\u{efffe}'), false);
+ assert_eq!(is_emoji_presentation('\u{effff}'), false);
+
+ // Priavte-Use Area
+ assert_eq!(is_emoji_presentation('\u{f0000}'), false);
+ assert_eq!(is_emoji_presentation('\u{f0001}'), false);
+ assert_eq!(is_emoji_presentation('\u{ffffe}'), false);
+ assert_eq!(is_emoji_presentation('\u{fffff}'), false);
+ assert_eq!(is_emoji_presentation('\u{100000}'), false);
+ assert_eq!(is_emoji_presentation('\u{100001}'), false);
+ assert_eq!(is_emoji_presentation('\u{10fffe}'), false);
+ assert_eq!(is_emoji_presentation('\u{10ffff}'), false);
+ }
+}
diff --git a/vendor/unic-emoji-char/src/emoji_version.rs b/vendor/unic-emoji-char/src/emoji_version.rs
new file mode 100644
index 000000000..62a419626
--- /dev/null
+++ b/vendor/unic-emoji-char/src/emoji_version.rs
@@ -0,0 +1,17 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+pub use unic_ucd_version::UnicodeVersion;
+
+/// The [Emoji Version] of character property data.
+///
+/// Refs:
+/// - <https://unicode.org/reports/tr51/>
+pub const EMOJI_VERSION: UnicodeVersion = include!("../tables/emoji_version.rsv");
diff --git a/vendor/unic-emoji-char/src/lib.rs b/vendor/unic-emoji-char/src/lib.rs
new file mode 100644
index 000000000..38be97169
--- /dev/null
+++ b/vendor/unic-emoji-char/src/lib.rs
@@ -0,0 +1,47 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![warn(
+ bad_style,
+ missing_debug_implementations,
+ missing_docs,
+ unconditional_recursion
+)]
+#![forbid(unsafe_code)]
+
+//! # UNIC — Unicode Emoji — Emoji Character Properties
+//!
+//! A component of [`unic`: Unicode and Internationalization Crates for Rust](/unic/).
+
+#[macro_use]
+extern crate unic_char_property;
+#[macro_use]
+extern crate unic_char_range;
+
+mod pkg_info;
+pub use crate::pkg_info::{PKG_DESCRIPTION, PKG_NAME, PKG_VERSION};
+
+mod emoji_version;
+pub use crate::emoji_version::{UnicodeVersion, EMOJI_VERSION};
+
+mod emoji;
+pub use crate::emoji::{is_emoji, Emoji};
+
+mod emoji_component;
+pub use crate::emoji_component::{is_emoji_component, EmojiComponent};
+
+mod emoji_modifier;
+pub use crate::emoji_modifier::{is_emoji_modifier, EmojiModifier};
+
+mod emoji_modifier_base;
+pub use crate::emoji_modifier_base::{is_emoji_modifier_base, EmojiModifierBase};
+
+mod emoji_presentation;
+pub use crate::emoji_presentation::{is_emoji_presentation, EmojiPresentation};
diff --git a/vendor/unic-emoji-char/src/pkg_info.rs b/vendor/unic-emoji-char/src/pkg_info.rs
new file mode 100644
index 000000000..a1ab2853f
--- /dev/null
+++ b/vendor/unic-emoji-char/src/pkg_info.rs
@@ -0,0 +1,20 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Package information
+
+/// UNIC component version.
+pub const PKG_VERSION: &str = env!("CARGO_PKG_VERSION");
+
+/// UNIC component name.
+pub const PKG_NAME: &str = env!("CARGO_PKG_NAME");
+
+/// UNIC component description.
+pub const PKG_DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
diff --git a/vendor/unic-emoji-char/tables/emoji.rsv b/vendor/unic-emoji-char/tables/emoji.rsv
new file mode 100644
index 000000000..620aca301
--- /dev/null
+++ b/vendor/unic-emoji-char/tables/emoji.rsv
@@ -0,0 +1,149 @@
+// WARNING: Auto-generated by the `unic-gen` crate.
+// WARNING: DO NOT EDIT MANUALLY!
+CharDataTable::Range(&[
+ (chars!('\u{23}'..='\u{23}'), ()),
+ (chars!('\u{2a}'..='\u{2a}'), ()),
+ (chars!('\u{30}'..='\u{39}'), ()),
+ (chars!('\u{a9}'..='\u{a9}'), ()),
+ (chars!('\u{ae}'..='\u{ae}'), ()),
+ (chars!('\u{203c}'..='\u{203c}'), ()),
+ (chars!('\u{2049}'..='\u{2049}'), ()),
+ (chars!('\u{2122}'..='\u{2122}'), ()),
+ (chars!('\u{2139}'..='\u{2139}'), ()),
+ (chars!('\u{2194}'..='\u{2199}'), ()),
+ (chars!('\u{21a9}'..='\u{21aa}'), ()),
+ (chars!('\u{231a}'..='\u{231b}'), ()),
+ (chars!('\u{2328}'..='\u{2328}'), ()),
+ (chars!('\u{23cf}'..='\u{23cf}'), ()),
+ (chars!('\u{23e9}'..='\u{23f3}'), ()),
+ (chars!('\u{23f8}'..='\u{23fa}'), ()),
+ (chars!('\u{24c2}'..='\u{24c2}'), ()),
+ (chars!('\u{25aa}'..='\u{25ab}'), ()),
+ (chars!('\u{25b6}'..='\u{25b6}'), ()),
+ (chars!('\u{25c0}'..='\u{25c0}'), ()),
+ (chars!('\u{25fb}'..='\u{25fe}'), ()),
+ (chars!('\u{2600}'..='\u{2604}'), ()),
+ (chars!('\u{260e}'..='\u{260e}'), ()),
+ (chars!('\u{2611}'..='\u{2611}'), ()),
+ (chars!('\u{2614}'..='\u{2615}'), ()),
+ (chars!('\u{2618}'..='\u{2618}'), ()),
+ (chars!('\u{261d}'..='\u{261d}'), ()),
+ (chars!('\u{2620}'..='\u{2620}'), ()),
+ (chars!('\u{2622}'..='\u{2623}'), ()),
+ (chars!('\u{2626}'..='\u{2626}'), ()),
+ (chars!('\u{262a}'..='\u{262a}'), ()),
+ (chars!('\u{262e}'..='\u{262f}'), ()),
+ (chars!('\u{2638}'..='\u{263a}'), ()),
+ (chars!('\u{2640}'..='\u{2640}'), ()),
+ (chars!('\u{2642}'..='\u{2642}'), ()),
+ (chars!('\u{2648}'..='\u{2653}'), ()),
+ (chars!('\u{2660}'..='\u{2660}'), ()),
+ (chars!('\u{2663}'..='\u{2663}'), ()),
+ (chars!('\u{2665}'..='\u{2666}'), ()),
+ (chars!('\u{2668}'..='\u{2668}'), ()),
+ (chars!('\u{267b}'..='\u{267b}'), ()),
+ (chars!('\u{267f}'..='\u{267f}'), ()),
+ (chars!('\u{2692}'..='\u{2697}'), ()),
+ (chars!('\u{2699}'..='\u{2699}'), ()),
+ (chars!('\u{269b}'..='\u{269c}'), ()),
+ (chars!('\u{26a0}'..='\u{26a1}'), ()),
+ (chars!('\u{26aa}'..='\u{26ab}'), ()),
+ (chars!('\u{26b0}'..='\u{26b1}'), ()),
+ (chars!('\u{26bd}'..='\u{26be}'), ()),
+ (chars!('\u{26c4}'..='\u{26c5}'), ()),
+ (chars!('\u{26c8}'..='\u{26c8}'), ()),
+ (chars!('\u{26ce}'..='\u{26cf}'), ()),
+ (chars!('\u{26d1}'..='\u{26d1}'), ()),
+ (chars!('\u{26d3}'..='\u{26d4}'), ()),
+ (chars!('\u{26e9}'..='\u{26ea}'), ()),
+ (chars!('\u{26f0}'..='\u{26f5}'), ()),
+ (chars!('\u{26f7}'..='\u{26fa}'), ()),
+ (chars!('\u{26fd}'..='\u{26fd}'), ()),
+ (chars!('\u{2702}'..='\u{2702}'), ()),
+ (chars!('\u{2705}'..='\u{2705}'), ()),
+ (chars!('\u{2708}'..='\u{270d}'), ()),
+ (chars!('\u{270f}'..='\u{270f}'), ()),
+ (chars!('\u{2712}'..='\u{2712}'), ()),
+ (chars!('\u{2714}'..='\u{2714}'), ()),
+ (chars!('\u{2716}'..='\u{2716}'), ()),
+ (chars!('\u{271d}'..='\u{271d}'), ()),
+ (chars!('\u{2721}'..='\u{2721}'), ()),
+ (chars!('\u{2728}'..='\u{2728}'), ()),
+ (chars!('\u{2733}'..='\u{2734}'), ()),
+ (chars!('\u{2744}'..='\u{2744}'), ()),
+ (chars!('\u{2747}'..='\u{2747}'), ()),
+ (chars!('\u{274c}'..='\u{274c}'), ()),
+ (chars!('\u{274e}'..='\u{274e}'), ()),
+ (chars!('\u{2753}'..='\u{2755}'), ()),
+ (chars!('\u{2757}'..='\u{2757}'), ()),
+ (chars!('\u{2763}'..='\u{2764}'), ()),
+ (chars!('\u{2795}'..='\u{2797}'), ()),
+ (chars!('\u{27a1}'..='\u{27a1}'), ()),
+ (chars!('\u{27b0}'..='\u{27b0}'), ()),
+ (chars!('\u{27bf}'..='\u{27bf}'), ()),
+ (chars!('\u{2934}'..='\u{2935}'), ()),
+ (chars!('\u{2b05}'..='\u{2b07}'), ()),
+ (chars!('\u{2b1b}'..='\u{2b1c}'), ()),
+ (chars!('\u{2b50}'..='\u{2b50}'), ()),
+ (chars!('\u{2b55}'..='\u{2b55}'), ()),
+ (chars!('\u{3030}'..='\u{3030}'), ()),
+ (chars!('\u{303d}'..='\u{303d}'), ()),
+ (chars!('\u{3297}'..='\u{3297}'), ()),
+ (chars!('\u{3299}'..='\u{3299}'), ()),
+ (chars!('\u{1f004}'..='\u{1f004}'), ()),
+ (chars!('\u{1f0cf}'..='\u{1f0cf}'), ()),
+ (chars!('\u{1f170}'..='\u{1f171}'), ()),
+ (chars!('\u{1f17e}'..='\u{1f17f}'), ()),
+ (chars!('\u{1f18e}'..='\u{1f18e}'), ()),
+ (chars!('\u{1f191}'..='\u{1f19a}'), ()),
+ (chars!('\u{1f1e6}'..='\u{1f1ff}'), ()),
+ (chars!('\u{1f201}'..='\u{1f202}'), ()),
+ (chars!('\u{1f21a}'..='\u{1f21a}'), ()),
+ (chars!('\u{1f22f}'..='\u{1f22f}'), ()),
+ (chars!('\u{1f232}'..='\u{1f23a}'), ()),
+ (chars!('\u{1f250}'..='\u{1f251}'), ()),
+ (chars!('\u{1f300}'..='\u{1f321}'), ()),
+ (chars!('\u{1f324}'..='\u{1f393}'), ()),
+ (chars!('\u{1f396}'..='\u{1f397}'), ()),
+ (chars!('\u{1f399}'..='\u{1f39b}'), ()),
+ (chars!('\u{1f39e}'..='\u{1f3f0}'), ()),
+ (chars!('\u{1f3f3}'..='\u{1f3f5}'), ()),
+ (chars!('\u{1f3f7}'..='\u{1f4fd}'), ()),
+ (chars!('\u{1f4ff}'..='\u{1f53d}'), ()),
+ (chars!('\u{1f549}'..='\u{1f54e}'), ()),
+ (chars!('\u{1f550}'..='\u{1f567}'), ()),
+ (chars!('\u{1f56f}'..='\u{1f570}'), ()),
+ (chars!('\u{1f573}'..='\u{1f57a}'), ()),
+ (chars!('\u{1f587}'..='\u{1f587}'), ()),
+ (chars!('\u{1f58a}'..='\u{1f58d}'), ()),
+ (chars!('\u{1f590}'..='\u{1f590}'), ()),
+ (chars!('\u{1f595}'..='\u{1f596}'), ()),
+ (chars!('\u{1f5a4}'..='\u{1f5a5}'), ()),
+ (chars!('\u{1f5a8}'..='\u{1f5a8}'), ()),
+ (chars!('\u{1f5b1}'..='\u{1f5b2}'), ()),
+ (chars!('\u{1f5bc}'..='\u{1f5bc}'), ()),
+ (chars!('\u{1f5c2}'..='\u{1f5c4}'), ()),
+ (chars!('\u{1f5d1}'..='\u{1f5d3}'), ()),
+ (chars!('\u{1f5dc}'..='\u{1f5de}'), ()),
+ (chars!('\u{1f5e1}'..='\u{1f5e1}'), ()),
+ (chars!('\u{1f5e3}'..='\u{1f5e3}'), ()),
+ (chars!('\u{1f5e8}'..='\u{1f5e8}'), ()),
+ (chars!('\u{1f5ef}'..='\u{1f5ef}'), ()),
+ (chars!('\u{1f5f3}'..='\u{1f5f3}'), ()),
+ (chars!('\u{1f5fa}'..='\u{1f64f}'), ()),
+ (chars!('\u{1f680}'..='\u{1f6c5}'), ()),
+ (chars!('\u{1f6cb}'..='\u{1f6d2}'), ()),
+ (chars!('\u{1f6e0}'..='\u{1f6e5}'), ()),
+ (chars!('\u{1f6e9}'..='\u{1f6e9}'), ()),
+ (chars!('\u{1f6eb}'..='\u{1f6ec}'), ()),
+ (chars!('\u{1f6f0}'..='\u{1f6f0}'), ()),
+ (chars!('\u{1f6f3}'..='\u{1f6f8}'), ()),
+ (chars!('\u{1f910}'..='\u{1f93a}'), ()),
+ (chars!('\u{1f93c}'..='\u{1f93e}'), ()),
+ (chars!('\u{1f940}'..='\u{1f945}'), ()),
+ (chars!('\u{1f947}'..='\u{1f94c}'), ()),
+ (chars!('\u{1f950}'..='\u{1f96b}'), ()),
+ (chars!('\u{1f980}'..='\u{1f997}'), ()),
+ (chars!('\u{1f9c0}'..='\u{1f9c0}'), ()),
+ (chars!('\u{1f9d0}'..='\u{1f9e6}'), ()),
+])
diff --git a/vendor/unic-emoji-char/tables/emoji_component.rsv b/vendor/unic-emoji-char/tables/emoji_component.rsv
new file mode 100644
index 000000000..bc9495518
--- /dev/null
+++ b/vendor/unic-emoji-char/tables/emoji_component.rsv
@@ -0,0 +1,9 @@
+// WARNING: Auto-generated by the `unic-gen` crate.
+// WARNING: DO NOT EDIT MANUALLY!
+CharDataTable::Range(&[
+ (chars!('\u{23}'..='\u{23}'), ()),
+ (chars!('\u{2a}'..='\u{2a}'), ()),
+ (chars!('\u{30}'..='\u{39}'), ()),
+ (chars!('\u{1f1e6}'..='\u{1f1ff}'), ()),
+ (chars!('\u{1f3fb}'..='\u{1f3ff}'), ()),
+])
diff --git a/vendor/unic-emoji-char/tables/emoji_modifier.rsv b/vendor/unic-emoji-char/tables/emoji_modifier.rsv
new file mode 100644
index 000000000..b42c98e1b
--- /dev/null
+++ b/vendor/unic-emoji-char/tables/emoji_modifier.rsv
@@ -0,0 +1,5 @@
+// WARNING: Auto-generated by the `unic-gen` crate.
+// WARNING: DO NOT EDIT MANUALLY!
+CharDataTable::Range(&[
+ (chars!('\u{1f3fb}'..='\u{1f3ff}'), ()),
+])
diff --git a/vendor/unic-emoji-char/tables/emoji_modifier_base.rsv b/vendor/unic-emoji-char/tables/emoji_modifier_base.rsv
new file mode 100644
index 000000000..3df4df11c
--- /dev/null
+++ b/vendor/unic-emoji-char/tables/emoji_modifier_base.rsv
@@ -0,0 +1,36 @@
+// WARNING: Auto-generated by the `unic-gen` crate.
+// WARNING: DO NOT EDIT MANUALLY!
+CharDataTable::Range(&[
+ (chars!('\u{261d}'..='\u{261d}'), ()),
+ (chars!('\u{26f9}'..='\u{26f9}'), ()),
+ (chars!('\u{270a}'..='\u{270d}'), ()),
+ (chars!('\u{1f385}'..='\u{1f385}'), ()),
+ (chars!('\u{1f3c2}'..='\u{1f3c4}'), ()),
+ (chars!('\u{1f3c7}'..='\u{1f3c7}'), ()),
+ (chars!('\u{1f3ca}'..='\u{1f3cc}'), ()),
+ (chars!('\u{1f442}'..='\u{1f443}'), ()),
+ (chars!('\u{1f446}'..='\u{1f450}'), ()),
+ (chars!('\u{1f466}'..='\u{1f469}'), ()),
+ (chars!('\u{1f46e}'..='\u{1f46e}'), ()),
+ (chars!('\u{1f470}'..='\u{1f478}'), ()),
+ (chars!('\u{1f47c}'..='\u{1f47c}'), ()),
+ (chars!('\u{1f481}'..='\u{1f483}'), ()),
+ (chars!('\u{1f485}'..='\u{1f487}'), ()),
+ (chars!('\u{1f4aa}'..='\u{1f4aa}'), ()),
+ (chars!('\u{1f574}'..='\u{1f575}'), ()),
+ (chars!('\u{1f57a}'..='\u{1f57a}'), ()),
+ (chars!('\u{1f590}'..='\u{1f590}'), ()),
+ (chars!('\u{1f595}'..='\u{1f596}'), ()),
+ (chars!('\u{1f645}'..='\u{1f647}'), ()),
+ (chars!('\u{1f64b}'..='\u{1f64f}'), ()),
+ (chars!('\u{1f6a3}'..='\u{1f6a3}'), ()),
+ (chars!('\u{1f6b4}'..='\u{1f6b6}'), ()),
+ (chars!('\u{1f6c0}'..='\u{1f6c0}'), ()),
+ (chars!('\u{1f6cc}'..='\u{1f6cc}'), ()),
+ (chars!('\u{1f918}'..='\u{1f91c}'), ()),
+ (chars!('\u{1f91e}'..='\u{1f91f}'), ()),
+ (chars!('\u{1f926}'..='\u{1f926}'), ()),
+ (chars!('\u{1f930}'..='\u{1f939}'), ()),
+ (chars!('\u{1f93d}'..='\u{1f93e}'), ()),
+ (chars!('\u{1f9d1}'..='\u{1f9dd}'), ()),
+])
diff --git a/vendor/unic-emoji-char/tables/emoji_presentation.rsv b/vendor/unic-emoji-char/tables/emoji_presentation.rsv
new file mode 100644
index 000000000..5e594f1e9
--- /dev/null
+++ b/vendor/unic-emoji-char/tables/emoji_presentation.rsv
@@ -0,0 +1,79 @@
+// WARNING: Auto-generated by the `unic-gen` crate.
+// WARNING: DO NOT EDIT MANUALLY!
+CharDataTable::Range(&[
+ (chars!('\u{231a}'..='\u{231b}'), ()),
+ (chars!('\u{23e9}'..='\u{23ec}'), ()),
+ (chars!('\u{23f0}'..='\u{23f0}'), ()),
+ (chars!('\u{23f3}'..='\u{23f3}'), ()),
+ (chars!('\u{25fd}'..='\u{25fe}'), ()),
+ (chars!('\u{2614}'..='\u{2615}'), ()),
+ (chars!('\u{2648}'..='\u{2653}'), ()),
+ (chars!('\u{267f}'..='\u{267f}'), ()),
+ (chars!('\u{2693}'..='\u{2693}'), ()),
+ (chars!('\u{26a1}'..='\u{26a1}'), ()),
+ (chars!('\u{26aa}'..='\u{26ab}'), ()),
+ (chars!('\u{26bd}'..='\u{26be}'), ()),
+ (chars!('\u{26c4}'..='\u{26c5}'), ()),
+ (chars!('\u{26ce}'..='\u{26ce}'), ()),
+ (chars!('\u{26d4}'..='\u{26d4}'), ()),
+ (chars!('\u{26ea}'..='\u{26ea}'), ()),
+ (chars!('\u{26f2}'..='\u{26f3}'), ()),
+ (chars!('\u{26f5}'..='\u{26f5}'), ()),
+ (chars!('\u{26fa}'..='\u{26fa}'), ()),
+ (chars!('\u{26fd}'..='\u{26fd}'), ()),
+ (chars!('\u{2705}'..='\u{2705}'), ()),
+ (chars!('\u{270a}'..='\u{270b}'), ()),
+ (chars!('\u{2728}'..='\u{2728}'), ()),
+ (chars!('\u{274c}'..='\u{274c}'), ()),
+ (chars!('\u{274e}'..='\u{274e}'), ()),
+ (chars!('\u{2753}'..='\u{2755}'), ()),
+ (chars!('\u{2757}'..='\u{2757}'), ()),
+ (chars!('\u{2795}'..='\u{2797}'), ()),
+ (chars!('\u{27b0}'..='\u{27b0}'), ()),
+ (chars!('\u{27bf}'..='\u{27bf}'), ()),
+ (chars!('\u{2b1b}'..='\u{2b1c}'), ()),
+ (chars!('\u{2b50}'..='\u{2b50}'), ()),
+ (chars!('\u{2b55}'..='\u{2b55}'), ()),
+ (chars!('\u{1f004}'..='\u{1f004}'), ()),
+ (chars!('\u{1f0cf}'..='\u{1f0cf}'), ()),
+ (chars!('\u{1f18e}'..='\u{1f18e}'), ()),
+ (chars!('\u{1f191}'..='\u{1f19a}'), ()),
+ (chars!('\u{1f1e6}'..='\u{1f1ff}'), ()),
+ (chars!('\u{1f201}'..='\u{1f201}'), ()),
+ (chars!('\u{1f21a}'..='\u{1f21a}'), ()),
+ (chars!('\u{1f22f}'..='\u{1f22f}'), ()),
+ (chars!('\u{1f232}'..='\u{1f236}'), ()),
+ (chars!('\u{1f238}'..='\u{1f23a}'), ()),
+ (chars!('\u{1f250}'..='\u{1f251}'), ()),
+ (chars!('\u{1f300}'..='\u{1f320}'), ()),
+ (chars!('\u{1f32d}'..='\u{1f335}'), ()),
+ (chars!('\u{1f337}'..='\u{1f37c}'), ()),
+ (chars!('\u{1f37e}'..='\u{1f393}'), ()),
+ (chars!('\u{1f3a0}'..='\u{1f3ca}'), ()),
+ (chars!('\u{1f3cf}'..='\u{1f3d3}'), ()),
+ (chars!('\u{1f3e0}'..='\u{1f3f0}'), ()),
+ (chars!('\u{1f3f4}'..='\u{1f3f4}'), ()),
+ (chars!('\u{1f3f8}'..='\u{1f43e}'), ()),
+ (chars!('\u{1f440}'..='\u{1f440}'), ()),
+ (chars!('\u{1f442}'..='\u{1f4fc}'), ()),
+ (chars!('\u{1f4ff}'..='\u{1f53d}'), ()),
+ (chars!('\u{1f54b}'..='\u{1f54e}'), ()),
+ (chars!('\u{1f550}'..='\u{1f567}'), ()),
+ (chars!('\u{1f57a}'..='\u{1f57a}'), ()),
+ (chars!('\u{1f595}'..='\u{1f596}'), ()),
+ (chars!('\u{1f5a4}'..='\u{1f5a4}'), ()),
+ (chars!('\u{1f5fb}'..='\u{1f64f}'), ()),
+ (chars!('\u{1f680}'..='\u{1f6c5}'), ()),
+ (chars!('\u{1f6cc}'..='\u{1f6cc}'), ()),
+ (chars!('\u{1f6d0}'..='\u{1f6d2}'), ()),
+ (chars!('\u{1f6eb}'..='\u{1f6ec}'), ()),
+ (chars!('\u{1f6f4}'..='\u{1f6f8}'), ()),
+ (chars!('\u{1f910}'..='\u{1f93a}'), ()),
+ (chars!('\u{1f93c}'..='\u{1f93e}'), ()),
+ (chars!('\u{1f940}'..='\u{1f945}'), ()),
+ (chars!('\u{1f947}'..='\u{1f94c}'), ()),
+ (chars!('\u{1f950}'..='\u{1f96b}'), ()),
+ (chars!('\u{1f980}'..='\u{1f997}'), ()),
+ (chars!('\u{1f9c0}'..='\u{1f9c0}'), ()),
+ (chars!('\u{1f9d0}'..='\u{1f9e6}'), ()),
+])
diff --git a/vendor/unic-emoji-char/tables/emoji_version.rsv b/vendor/unic-emoji-char/tables/emoji_version.rsv
new file mode 100644
index 000000000..57dfe2b57
--- /dev/null
+++ b/vendor/unic-emoji-char/tables/emoji_version.rsv
@@ -0,0 +1,3 @@
+// WARNING: Auto-generated by the `unic-gen` crate.
+// WARNING: DO NOT EDIT MANUALLY!
+UnicodeVersion { major: 5, minor: 0, micro: 0 }
diff --git a/vendor/unic-emoji-char/tests/emoji_version_tests.rs b/vendor/unic-emoji-char/tests/emoji_version_tests.rs
new file mode 100644
index 000000000..856d5a897
--- /dev/null
+++ b/vendor/unic-emoji-char/tests/emoji_version_tests.rs
@@ -0,0 +1,19 @@
+// Copyright 2017 The UNIC Project Developers.
+//
+// See the COPYRIGHT file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use unic_emoji_char;
+use unic_ucd_version;
+
+#[test]
+fn test_emoji_data_version_against_ucd_version() {
+ // At the moment, Emoji Version is strictly smaller than Unicode Version. Emoji Version is going
+ // to be *synced* with Unicode Version, but may receive minor updates separately.
+ assert!(unic_emoji_char::EMOJI_VERSION.major <= unic_ucd_version::UNICODE_VERSION.major);
+}