summaryrefslogtreecommitdiffstats
path: root/vendor/unic-emoji-char/src
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/unic-emoji-char/src')
-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
8 files changed, 616 insertions, 0 deletions
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");