# HG changeset patch # User Frank Benoit # Date 1207923576 -7200 # Node ID be19b235c6c4b8b0fcc23bc38c4fc157142cee42 # Parent 9d7d88f13040a4c98b4144ff6dec84a769925042 implement PreferenceStore.store diff -r 9d7d88f13040 -r be19b235c6c4 dwtx/jface/preference/PreferenceStore.d --- a/dwtx/jface/preference/PreferenceStore.d Fri Apr 11 16:19:01 2008 +0200 +++ b/dwtx/jface/preference/PreferenceStore.d Fri Apr 11 16:19:36 2008 +0200 @@ -113,7 +113,7 @@ case 't': c = '\t'; break; case 'n': c = '\n'; break; case '\\': c = '\\'; break; - default: c = '?'; break; + default: break; } } else{ @@ -153,8 +153,45 @@ } } - public synchronized void store( OutputStream out_, String comments ){ - implMissing( __FILE__, __LINE__ ); + public synchronized void store( OutputStream ostr, String comments ){ + void append(char[] s){ + foreach( c; s ){ + switch( c ){ + case '\t': ostr.write( "\\t" ); break; + case '\n': ostr.write( "\\n" ); break; + case '\r': ostr.write( "\\r" ); break; + case '\\': ostr.write( "\\\\" ); break; + case ':' : ostr.write( "\\:" ); break; + default: { + char[1] b; + b[0] = c; + ostr.write( b ); break; + } + } + } + } + if( comments.length ){ + bool lineStart = true; + for( int idx = 0; idx < comments.length; idx++ ){ + char[1] b; + if( lineStart ){ + b[0] = '#'; + ostr.write(b); + } + append( comments[ idx .. idx+1 ] ); + lineStart = false; + if( comments[idx] is '\n' ){ + lineStart = true; + } + } + ostr.write( "\n" ); + } + foreach( k, v; map ){ + append(k); + append("="); + append(v); + ostr.write( "\n" ); + } } // public synchronized void save( dejavu.io.OutputStream.OutputStream out_KEYWORDESCAPE, dejavu.lang.String.String comments ){ @@ -918,7 +955,8 @@ * @param value */ private void setValue(Properties p, String name, String value) { - Assert.isTrue(p !is null && value !is null); + // DWT: allow null value + Assert.isTrue(p !is null /+&& value !is null+/); p.put(name, value); }