@@ -36,9 +36,9 @@ class JavaResourceParser : ResourceParser
3636 return resources ;
3737 }
3838
39- static KeyValuePair < Regex , Func < Match , bool , CodeTypeDeclaration , Dictionary < string , string > , CodeTypeDeclaration > > Parse ( string regex , Func < Match , bool , CodeTypeDeclaration , Dictionary < string , string > , CodeTypeDeclaration > f )
39+ static KeyValuePair < Regex , Func < Match , bool , CodeTypeDeclaration ? , Dictionary < string , string > , CodeTypeDeclaration ? > > Parse ( string regex , Func < Match , bool , CodeTypeDeclaration ? , Dictionary < string , string > , CodeTypeDeclaration ? > f )
4040 {
41- return new KeyValuePair < Regex , Func < Match , bool , CodeTypeDeclaration , Dictionary < string , string > , CodeTypeDeclaration > > ( new Regex ( regex ) , f ) ;
41+ return new KeyValuePair < Regex , Func < Match , bool , CodeTypeDeclaration ? , Dictionary < string , string > , CodeTypeDeclaration ? > > ( new Regex ( regex ) , f ) ;
4242 }
4343
4444 // public finall class R {
@@ -49,11 +49,11 @@ static KeyValuePair<Regex, Func<Match, bool, CodeTypeDeclaration, Dictionary<str
4949 // }
5050 // }
5151 // }
52- List < KeyValuePair < Regex , Func < Match , bool , CodeTypeDeclaration , Dictionary < string , string > , CodeTypeDeclaration > > > Parser ;
52+ List < KeyValuePair < Regex , Func < Match , bool , CodeTypeDeclaration ? , Dictionary < string , string > , CodeTypeDeclaration ? > > > Parser ;
5353
5454 public JavaResourceParser ( )
5555 {
56- Parser = new List < KeyValuePair < Regex , Func < Match , bool , CodeTypeDeclaration , Dictionary < string , string > , CodeTypeDeclaration > > > ( ) {
56+ Parser = new List < KeyValuePair < Regex , Func < Match , bool , CodeTypeDeclaration ? , Dictionary < string , string > , CodeTypeDeclaration ? > > > ( ) {
5757 Parse ( "^public final class R {" ,
5858 ( m , app , _ , map ) => {
5959 var decl = new CodeTypeDeclaration ( "Resource" ) {
@@ -80,43 +80,53 @@ public JavaResourceParser ()
8080 t . Members . Add ( new CodeConstructor ( ) {
8181 Attributes = MemberAttributes . Private ,
8282 } ) ;
83- g . Members . Add ( t ) ;
83+ g ? . Members . Add ( t ) ;
8484 return g ;
8585 } ) ,
8686 Parse ( @"^ public static final int ([^ =]+)\s*=\s*([^;]+);$" ,
8787 ( m , app , g , map ) => {
88- var name = ( ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ) . Name ;
89- var f = new CodeMemberField ( typeof ( int ) , ResourceIdentifier . GetResourceName ( name , m . Groups [ 1 ] . Value , map , Log ) ) {
88+ if ( g != null ) {
89+ var name = ( ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ) . Name ;
90+ if ( Log != null ) {
91+ var f = new CodeMemberField ( typeof ( int ) , ResourceIdentifier . GetResourceName ( name , m . Groups [ 1 ] . Value , map , Log ) ) {
9092 Attributes = app ? MemberAttributes . Const | MemberAttributes . Public : MemberAttributes . Static | MemberAttributes . Public ,
9193 InitExpression = new CodePrimitiveExpression ( ToInt32 ( m . Groups [ 2 ] . Value , m . Groups [ 2 ] . Value . IndexOf ( "0x" , StringComparison . Ordinal ) == 0 ? 16 : 10 ) ) ,
9294 Comments = {
9395 new CodeCommentStatement ( "aapt resource value: " + m . Groups [ 2 ] . Value ) ,
9496 } ,
95- } ;
96- ( ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ) . Members . Add ( f ) ;
97+ } ;
98+ ( ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ) . Members . Add ( f ) ;
99+ }
100+ }
97101 return g ;
98102 } ) ,
99103 Parse ( @"^ public static final int\[\] ([^ =]+) = {" ,
100104 ( m , app , g , map ) => {
101- var name = ( ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ) . Name ;
102- var f = new CodeMemberField ( typeof ( int [ ] ) , ResourceIdentifier . GetResourceName ( name , m . Groups [ 1 ] . Value , map , Log ) ) {
105+ if ( g != null ) {
106+ var name = ( ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ) . Name ;
107+ if ( Log != null ) {
108+ var f = new CodeMemberField ( typeof ( int [ ] ) , ResourceIdentifier . GetResourceName ( name , m . Groups [ 1 ] . Value , map , Log ) ) {
103109 // pity I can't make the member readonly...
104110 Attributes = MemberAttributes . Public | MemberAttributes . Static ,
105- } ;
106- ( ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ) . Members . Add ( f ) ;
111+ } ;
112+ ( ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ) . Members . Add ( f ) ;
113+ }
114+ }
107115 return g ;
108116 } ) ,
109117 Parse ( @"^ (0x[xa-fA-F0-9, ]+)$" ,
110118 ( m , app , g , map ) => {
111- var t = ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ;
112- var f = ( CodeMemberField ) t . Members [ t . Members . Count - 1 ] ;
113- string [ ] values = m . Groups [ 1 ] . Value . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries ) ;
114- CodeArrayCreateExpression c = ( CodeArrayCreateExpression ) f . InitExpression ;
115- if ( c == null ) {
116- f . InitExpression = c = new CodeArrayCreateExpression ( typeof ( int [ ] ) ) ;
119+ if ( g != null ) {
120+ var t = ( CodeTypeDeclaration ) g . Members [ g . Members . Count - 1 ] ;
121+ var f = ( CodeMemberField ) t . Members [ t . Members . Count - 1 ] ;
122+ string [ ] values = m . Groups [ 1 ] . Value . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries ) ;
123+ CodeArrayCreateExpression c = ( CodeArrayCreateExpression ) f . InitExpression ;
124+ if ( c == null ) {
125+ f . InitExpression = c = new CodeArrayCreateExpression ( typeof ( int [ ] ) ) ;
126+ }
127+ foreach ( string value in values )
128+ c . Initializers . Add ( new CodePrimitiveExpression ( ToInt32 ( value . Trim ( ) , 16 ) ) ) ;
117129 }
118- foreach ( string value in values )
119- c . Initializers . Add ( new CodePrimitiveExpression ( ToInt32 ( value . Trim ( ) , 16 ) ) ) ;
120130 return g ;
121131 } ) ,
122132 } ;
0 commit comments