… | |
… | |
333 | } |
333 | } |
334 | } |
334 | } |
335 | |
335 | |
336 | my $attr = { }; |
336 | my $attr = { }; |
337 | |
337 | |
338 | my @import = $root || \%Crossfire::Data::DEFAULT_ATTR; |
338 | my @import = (\%Crossfire::Data::DEFAULT_ATTR, $root); |
339 | my (%ignore); |
339 | my (%ignore); |
340 | my (@section_order, %section, @attr_order); |
340 | my (@section_order, %section, @attr_order); |
341 | |
341 | |
342 | while (my $type = shift @import) { |
342 | while (my $type = shift @import) { |
343 | push @import, @{$type->{import} || []}; |
343 | push @import, @{$type->{import} || []}; |
… | |
… | |
350 | } |
350 | } |
351 | |
351 | |
352 | for ([general => ($type->{attr} || {})], @{$type->{section} || []}) { |
352 | for ([general => ($type->{attr} || {})], @{$type->{section} || []}) { |
353 | my ($name, $attr) = @$_; |
353 | my ($name, $attr) = @$_; |
354 | push @section_order, $name; |
354 | push @section_order, $name; |
355 | for (@$attr) { |
355 | for (@{$attr || []}) { |
356 | my ($k, $v) = @$_; |
356 | my ($k, $v) = @$_; |
357 | push @attr_order, $k; |
357 | push @attr_order, $k; |
358 | $section{$name}{$k} ||= $v; |
358 | $section{$name}{$k} ||= $v; |
359 | } |
359 | } |
360 | } |
360 | } |
… | |
… | |
364 | map !exists $section{$_} ? () : do { |
364 | map !exists $section{$_} ? () : do { |
365 | my $attr = delete $section{$_}; |
365 | my $attr = delete $section{$_}; |
366 | |
366 | |
367 | [ |
367 | [ |
368 | $_, |
368 | $_, |
|
|
369 | map exists $attr->{$_} && !$ignore{$_} |
369 | map exists $attr->{$_} ? [$_ => delete $attr->{$_}] : (), |
370 | ? [$_ => delete $attr->{$_}] : (), |
370 | @attr_order |
371 | @attr_order |
371 | ] |
372 | ] |
372 | }, |
373 | }, |
373 | |
374 | |
374 | exists $section{$_} ? [$_ => delete $section{$_}] : (), |
375 | exists $section{$_} ? [$_ => delete $section{$_}] : (), |
375 | @section_order |
376 | @section_order |
376 | ]; |
377 | ]; |
377 | |
|
|
378 | use PApp::Util; |
|
|
379 | warn PApp::Util::dumpval $attr; |
|
|
380 | |
378 | |
381 | $attr |
379 | $attr |
382 | } |
380 | } |
383 | |
381 | |
384 | sub arch_edit_sections { |
382 | sub arch_edit_sections { |