@@ -2,31 +2,26 @@ extern crate regex;
22
33use regex:: Regex ;
44
5- use std:: env;
65use std:: fs:: File ;
76use std:: io:: prelude:: * ;
8- use std:: io:: { BufReader , BufWriter } ;
9- use std:: path:: Path ;
7+ use std:: io:: { BufRead , BufWriter } ;
108
119// Generate character mapping tables directly from the specification.
1210fn main ( ) {
1311 // Input from the RFC.
14- let in_file = File :: open ( "rfc3454.txt" ) . unwrap ( ) ;
15- let mut reader = BufReader :: new ( in_file) ;
12+ let reader = include_bytes ! ( "rfc3454.txt" ) ;
1613
1714 // Output to a Rust source file.
18- let out_dir = env:: var ( "OUT_DIR" ) . unwrap ( ) ;
19- let dest_path = Path :: new ( & out_dir) . join ( "rfc3454.rs" ) ;
20- let out_file = File :: create ( & dest_path) . unwrap ( ) ;
15+ let out_file = File :: create ( "../src/rfc3454.rs" ) . unwrap ( ) ;
2116 let mut writer = BufWriter :: new ( out_file) ;
2217
2318 // Generate tables.
24- include_table ( & mut writer, & mut reader, "A.1" ) ;
25- include_table ( & mut writer, & mut reader, "B.2" ) ;
19+ include_table ( & mut writer, & mut & reader[ .. ] , "A.1" ) ;
20+ include_table ( & mut writer, & mut & reader[ .. ] , "B.2" ) ;
2621}
2722
2823// Generate code for the named mapping table.
29- fn include_table < R : Read , W : Write > ( writer : & mut BufWriter < W > , reader : & mut BufReader < R > , tablename : & str ) {
24+ fn include_table < R : BufRead , W : Write > ( writer : & mut W , reader : & mut R , tablename : & str ) {
3025 // Scan to start of table.
3126 loop {
3227 let mut line = String :: new ( ) ;
@@ -37,7 +32,7 @@ fn include_table<R: Read, W: Write>(writer: &mut BufWriter<W>, reader: &mut BufR
3732 }
3833
3934 // Output table declaration.
40- write ! ( writer, "pub const RFC3454_ {}: &[(char, Option<char>, Option<&str>)] = &[\n " , tablename. replace( "." , "_" ) ) . unwrap ( ) ;
35+ write ! ( writer, "pub const {}: &[(char, Option<char>, Option<&str>)] = &[\n " , tablename. replace( "." , "_" ) ) . unwrap ( ) ;
4136
4237 // For each line:
4338 let target_re = Regex :: new ( r"([0-9A-F]+)(-([0-9A-F]+))?(; ([0-9A-F]+)( ([0-9A-F]+))?( ([0-9A-F]+))?( ([0-9A-F]+))?;)?" ) . unwrap ( ) ;
0 commit comments