From 61a8a28f9ff10aed41b1ee5c58df827db6b87d7c Mon Sep 17 00:00:00 2001
From: Simon Sapin <simon.sapin@exyr.org>
Date: Mon, 13 Oct 2014 13:51:43 +0100
Subject: [PATCH] Include the Unicode version used to generate
 `src/libunicode/tables.rs`.

---
 src/etc/unicode.py       | 9 +++++++++
 src/libunicode/lib.rs    | 1 +
 src/libunicode/tables.rs | 4 ++++
 3 files changed, 14 insertions(+)

diff --git a/src/etc/unicode.py b/src/etc/unicode.py
index 0b128686690f0..d3de1d2b64e0a 100755
--- a/src/etc/unicode.py
+++ b/src/etc/unicode.py
@@ -604,6 +604,15 @@ def optimize_width_table(wtable):
         rf.write(preamble)
 
         # download and parse all the data
+        fetch("ReadMe.txt")
+        with open("ReadMe.txt") as readme:
+            pattern = "for Version (\d+)\.(\d+)\.(\d+) of the Unicode"
+            unicode_version = re.search(pattern, readme.read()).groups()
+        rf.write("""
+/// The version of [Unicode](http://www.unicode.org/)
+/// that the `UnicodeChar` and `UnicodeStrSlice` traits are based on.
+pub const UNICODE_VERSION: (uint, uint, uint) = (%s, %s, %s);
+""" % unicode_version)
         (canon_decomp, compat_decomp, gencats, combines,
                 lowerupper, upperlower) = load_unicode_data("UnicodeData.txt")
         want_derived = ["XID_Start", "XID_Continue", "Alphabetic", "Lowercase", "Uppercase"]
diff --git a/src/libunicode/lib.rs b/src/libunicode/lib.rs
index 2918bad03df29..b84aec77a09c3 100644
--- a/src/libunicode/lib.rs
+++ b/src/libunicode/lib.rs
@@ -64,6 +64,7 @@ pub mod char {
     pub use normalize::{decompose_canonical, decompose_compatible, compose};
 
     pub use tables::normalization::canonical_combining_class;
+    pub use tables::UNICODE_VERSION;
 
     pub use u_char::{is_alphabetic, is_XID_start, is_XID_continue};
     pub use u_char::{is_lowercase, is_uppercase, is_whitespace};
diff --git a/src/libunicode/tables.rs b/src/libunicode/tables.rs
index e359883295f42..3f15abcad6dcd 100644
--- a/src/libunicode/tables.rs
+++ b/src/libunicode/tables.rs
@@ -12,6 +12,10 @@
 
 #![allow(missing_doc, non_uppercase_statics, non_snake_case)]
 
+/// The version of [Unicode](http://www.unicode.org/)
+/// that the `UnicodeChar` and `UnicodeStrSlice` traits are based on.
+pub const UNICODE_VERSION: (uint, uint, uint) = (7, 0, 0);
+
 fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool {
     use core::cmp::{Equal, Less, Greater};
     use core::slice::ImmutableSlice;