提交 562dea18 编写于 作者: H Huon Wilson

etc: update etc/unicode.py for the changes made to std::unicode.

上级 9e83b2fe
...@@ -122,14 +122,14 @@ def ch_prefix(ix): ...@@ -122,14 +122,14 @@ def ch_prefix(ix):
def emit_bsearch_range_table(f): def emit_bsearch_range_table(f):
f.write(""" f.write("""
pure fn bsearch_range_table(c: char, r: &[(char,char)]) -> bool { fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool {
use cmp::{EQ, LT, GT}; use cmp::{Equal, Less, Greater};
use vec::bsearch; use vec::bsearch;
use option::None; use option::None;
(do bsearch(r) |&(lo,hi)| { (do bsearch(r) |&(lo,hi)| {
if lo <= c && c <= hi { EQ } if lo <= c && c <= hi { Equal }
else if hi < c { LT } else if hi < c { Less }
else { GT } else { Greater }
}) != None }) != None
}\n\n }\n\n
"""); """);
...@@ -140,7 +140,7 @@ def emit_property_module(f, mod, tbl): ...@@ -140,7 +140,7 @@ def emit_property_module(f, mod, tbl):
keys.sort() keys.sort()
emit_bsearch_range_table(f); emit_bsearch_range_table(f);
for cat in keys: for cat in keys:
f.write(" const %s_table : &[(char,char)] = &[\n" % cat) f.write(" static %s_table : &'static [(char,char)] = &[\n" % cat)
ix = 0 ix = 0
for pair in tbl[cat]: for pair in tbl[cat]:
f.write(ch_prefix(ix)) f.write(ch_prefix(ix))
...@@ -148,7 +148,7 @@ def emit_property_module(f, mod, tbl): ...@@ -148,7 +148,7 @@ def emit_property_module(f, mod, tbl):
ix += 1 ix += 1
f.write("\n ];\n\n") f.write("\n ];\n\n")
f.write(" pub pure fn %s(c: char) -> bool {\n" % cat) f.write(" pub fn %s(c: char) -> bool {\n" % cat)
f.write(" bsearch_range_table(c, %s_table)\n" % cat) f.write(" bsearch_range_table(c, %s_table)\n" % cat)
f.write(" }\n\n") f.write(" }\n\n")
f.write("}\n") f.write("}\n")
...@@ -159,7 +159,7 @@ def emit_property_module_old(f, mod, tbl): ...@@ -159,7 +159,7 @@ def emit_property_module_old(f, mod, tbl):
keys = tbl.keys() keys = tbl.keys()
keys.sort() keys.sort()
for cat in keys: for cat in keys:
f.write(" pure fn %s(c: char) -> bool {\n" % cat) f.write(" fn %s(c: char) -> bool {\n" % cat)
f.write(" ret alt c {\n") f.write(" ret alt c {\n")
prefix = ' ' prefix = ' '
for pair in tbl[cat]: for pair in tbl[cat]:
...@@ -236,8 +236,22 @@ rf = open(r, "w") ...@@ -236,8 +236,22 @@ rf = open(r, "w")
(canon_decomp, compat_decomp, gencats) = load_unicode_data("UnicodeData.txt") (canon_decomp, compat_decomp, gencats) = load_unicode_data("UnicodeData.txt")
# Explain that the source code was generated by this script. # Preamble
rf.write('// The following code was generated by "src/etc/unicode.py"\n\n') rf.write('''// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// 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.
// The following code was generated by "src/etc/unicode.py"
#[allow(missing_doc)];
''')
emit_property_module(rf, "general_category", gencats) emit_property_module(rf, "general_category", gencats)
......
...@@ -1447,10 +1447,8 @@ pub fn Zs(c: char) -> bool { ...@@ -1447,10 +1447,8 @@ pub fn Zs(c: char) -> bool {
} }
} }
pub mod derived_property { pub mod derived_property {
fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool { fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool {
use cmp::{Equal, Less, Greater}; use cmp::{Equal, Less, Greater};
use vec::bsearch; use vec::bsearch;
...@@ -2641,4 +2639,5 @@ pub fn XID_Continue(c: char) -> bool { ...@@ -2641,4 +2639,5 @@ pub fn XID_Continue(c: char) -> bool {
pub fn XID_Start(c: char) -> bool { pub fn XID_Start(c: char) -> bool {
bsearch_range_table(c, XID_Start_table) bsearch_range_table(c, XID_Start_table)
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册