ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra/res2pm
(Generate patch)

Comparing deliantra/Deliantra/res2pm (file contents):
Revision 1.4 by root, Wed Feb 22 22:05:53 2006 UTC vs.
Revision 1.5 by root, Wed Feb 22 22:36:45 2006 UTC

21 res/typenumbers.xml 21 res/typenumbers.xml
22 22
23See F<res/README> for more info. 23See F<res/README> for more info.
24 24
25=cut 25=cut
26
27package Crossfire::Data;
26 28
27EOF 29EOF
28 30
29use Data::Dumper; 31use Data::Dumper;
30use XML::Parser::Grove; 32use XML::Parser::Grove;
107} 109}
108 110
109sub parse_type { 111sub parse_type {
110 my ($e, $type) = @_; 112 my ($e, $type) = @_;
111 113
114 my %main;
115
112 for my $e (grep ref, @{$e->contents}) { 116 for my $e (grep ref, @{$e->contents}) {
113 if ($e->name eq "required") { 117 if ($e->name eq "required") {
114 for my $i (grep ref, @{$e->contents}) { 118 for my $i (grep ref, @{$e->contents}) {
115 $type->{required}{$i->attr ("arch")} = $i->attr ("value"); 119 $type->{required}{$i->attr ("arch")} = $i->attr ("value");
116 } 120 }
117 } elsif ($e->name eq "attribute") { 121 } elsif ($e->name eq "attribute") {
118 parse_attr $e, $type->{attr}{Main} ||= {}; 122 parse_attr $e, $type->{attr} ||= {};
119 } elsif ($e->name eq "ignore") { 123 } elsif ($e->name eq "ignore") {
120 for my $i (grep ref, @{$e->contents}) { 124 for my $i (grep ref, @{$e->contents}) {
121 if ($i->name eq "ignore_list") { 125 if ($i->name eq "ignore_list") {
122 push @{$type->{ignore}}, $ignore_list{$i->attr ("name")} ||= []; 126 push @{$type->{ignore}}, $ignore_list{$i->attr ("name")} ||= [];
123 } elsif ($i->name eq "attribute") { 127 } elsif ($i->name eq "attribute") {
129 } elsif ($e->name eq "use") { 133 } elsif ($e->name eq "use") {
130 $type->{use} = string $e; 134 $type->{use} = string $e;
131 } elsif ($e->name eq "description") { 135 } elsif ($e->name eq "description") {
132 $type->{desc} = string $e; 136 $type->{desc} = string $e;
133 } elsif ($e->name eq "section") { 137 } elsif ($e->name eq "section") {
138 my %attr;
134 for my $i (grep ref, @{$e->contents}) { 139 for my $i (grep ref, @{$e->contents}) {
135 parse_attr $i, $type->{attr}{$e->attr ("name")} ||= {}; 140 parse_attr $i, \%attr;
136 } 141 }
142 push @{ $type->{section} }, [$e->attr ("name") => \%attr];
137 } else { 143 } else {
138 warn "unknown types subelement ", $e->name; 144 warn "unknown types subelement ", $e->name;
139 } 145 }
140 } 146 }
141 147

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines