Mercurial > projects > dwt-linux
annotate dwt/dwthelper/ResourceBundle.d @ 175:a481ab32da3d
ResourceBundle unescape also the quote char.
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 02 Mar 2008 18:07:03 +0100 |
parents | 2640d1618770 |
children | 9b4e6fc63930 |
rev | line source |
---|---|
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
1 /** |
108 | 2 * Authors: Frank Benoit <keinfarbton@googlemail.com> |
3 */ | |
106
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 module dwt.dwthelper.ResourceBundle; |
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
6 import tango.text.Util; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
7 import tango.io.Stdout; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
8 |
175
a481ab32da3d
ResourceBundle unescape also the quote char.
Frank Benoit <benoit@tionex.de>
parents:
160
diff
changeset
|
9 import dwt.DWT; |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
10 |
106
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
11 class ResourceBundle { |
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
13 char[][ char[] ] map; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
14 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
15 public this( char[] data ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
16 char[] line; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
17 int dataIndex; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
18 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
19 //tango.io.Stdout.Stdout.formatln( "properties put ..." ); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
20 void readLine(){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
21 line.length = 0; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
22 char i = data[ dataIndex++ ]; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
23 while( dataIndex < data.length && i !is '\n' && i !is '\r' ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
24 line ~= i; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
25 i = data[ dataIndex++ ]; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
26 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
27 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
28 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
29 //tango.io.Stdout.Stdout.formatln( "properties put {}", __LINE__ ); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
30 bool linecontinue = false; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
31 bool iskeypart = true; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
32 char[] key; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
33 char[] value; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
34 nextline: |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
35 while( dataIndex < data.length ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
36 //tango.io.Stdout.Stdout.formatln( "properties put {} startline", __LINE__ ); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
37 readLine(); |
175
a481ab32da3d
ResourceBundle unescape also the quote char.
Frank Benoit <benoit@tionex.de>
parents:
160
diff
changeset
|
38 line = line.trim(); |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
39 if( line.length is 0 ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
40 //tango.io.Stdout.Stdout.formatln( "properties put {} was 0 length", __LINE__ ); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
41 continue; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
42 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
43 if( line[0] == '#' ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
44 //tango.io.Stdout.Stdout.formatln( "properties put {} was comment", __LINE__ ); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
45 continue; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
46 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
47 int pos = 0; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
48 bool esc = false; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
49 if( !linecontinue ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
50 iskeypart = true; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
51 key = null; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
52 value = null; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
53 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
54 else{ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
55 linecontinue = false; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
56 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
57 while( pos < line.length ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
58 char c = line[pos]; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
59 if( esc ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
60 esc = false; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
61 switch( c ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
62 case 't': c = '\t'; break; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
63 case 'n': c = '\n'; break; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
64 case '\\': c = '\\'; break; |
175
a481ab32da3d
ResourceBundle unescape also the quote char.
Frank Benoit <benoit@tionex.de>
parents:
160
diff
changeset
|
65 case '\"': c = '\"'; break; |
a481ab32da3d
ResourceBundle unescape also the quote char.
Frank Benoit <benoit@tionex.de>
parents:
160
diff
changeset
|
66 default: break; |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
67 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
68 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
69 else{ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
70 if( c == '\\' ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
71 if( pos == line.length -1 ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
72 linecontinue = true; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
73 goto nextline; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
74 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
75 esc = true; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
76 pos++; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
77 continue; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
78 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
79 else if( iskeypart && c == '=' ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
80 pos++; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
81 iskeypart = false; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
82 continue; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
83 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
84 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
85 pos++; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
86 if( iskeypart ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
87 key ~= c; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
88 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
89 else{ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
90 value ~= c; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
91 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
92 } |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
93 if( iskeypart ){ |
175
a481ab32da3d
ResourceBundle unescape also the quote char.
Frank Benoit <benoit@tionex.de>
parents:
160
diff
changeset
|
94 // Cannot find '=' in record |
a481ab32da3d
ResourceBundle unescape also the quote char.
Frank Benoit <benoit@tionex.de>
parents:
160
diff
changeset
|
95 DWT.error( __FILE__, __LINE__, DWT.ERROR_INVALID_ARGUMENT ); |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
96 continue; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
97 } |
175
a481ab32da3d
ResourceBundle unescape also the quote char.
Frank Benoit <benoit@tionex.de>
parents:
160
diff
changeset
|
98 key = key.trim(); |
a481ab32da3d
ResourceBundle unescape also the quote char.
Frank Benoit <benoit@tionex.de>
parents:
160
diff
changeset
|
99 value = value.trim(); |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
100 //tango.io.Stdout.Stdout.formatln( "properties put {}=>{}", key, value ); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
101 |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
102 map[ key.dup ] = value.dup; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
103 //tango.io.Stdout.Stdout.formatln( "properties put {}", __LINE__ ); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
104 } |
106
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 } |
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 |
160
2640d1618770
Added hasString method to match dwt-win
John Reimer<terminal.node@gmail.com>
parents:
132
diff
changeset
|
107 public bool hasString( char[] key ){ |
2640d1618770
Added hasString method to match dwt-win
John Reimer<terminal.node@gmail.com>
parents:
132
diff
changeset
|
108 return ( key in map ) !is null; |
2640d1618770
Added hasString method to match dwt-win
John Reimer<terminal.node@gmail.com>
parents:
132
diff
changeset
|
109 } |
2640d1618770
Added hasString method to match dwt-win
John Reimer<terminal.node@gmail.com>
parents:
132
diff
changeset
|
110 |
106
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 public char[] getString( char[] key ){ |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
112 if( auto v = key in map ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
113 return (*v).dup; |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
114 } |
106
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 return key; |
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 } |
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 |
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 public static ResourceBundle getBundle( char[] name ){ |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
119 return new ResourceBundle( null ); |
106
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 } |
132
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
121 public static ResourceBundle getBundleFromData( char[] data ){ |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
122 return new ResourceBundle( data ); |
e22f9b443521
Working on ControlExample, png loading makes problems
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
123 } |
106
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 } |
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 |
396a9fa07672
Added addressbook example. Does not yet compile
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 |