RequirementSpec(Item): Arrays nur als Referenz zurückgeben
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 13 May 2013 08:36:25 +0000 (10:36 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 1 Apr 2014 11:03:22 +0000 (13:03 +0200)
Innerhalb vom Template-Toolkit kann ansonsten Merkwürdiges
passieren. Weist man das Ergebnis einer Variablen zu, so geschieht
dies offensichtlich im Array-Kontext. Dadurch sind aber Tests mit
var.size plötzlich falsch...

[% SET blocks = rspec.text_blocks_sorted(output_position=0) %]
[% IF blocks.size %]
 ...greift auch, wenn keine Blöcke für diese Position existieren

SL/DB/RequirementSpec.pm
SL/DB/RequirementSpecItem.pm

index d8329b9..f7fd2d5 100644 (file)
@@ -58,7 +58,7 @@ sub text_blocks_sorted {
   @text_blocks    = grep { $_->output_position == $params{output_position} } @text_blocks if exists $params{output_position};
   @text_blocks    = sort { $a->position        <=> $b->position            } @text_blocks;
 
-  return wantarray ? @text_blocks : \@text_blocks;
+  return \@text_blocks;
 }
 
 sub sections_sorted {
@@ -66,8 +66,7 @@ sub sections_sorted {
 
   croak "This sub is not a writer" if @rest;
 
-  my @sections = sort { $a->position <=> $b->position } grep { !$_->parent_id } @{ $self->items };
-  return wantarray ? @sections : \@sections;
+  return [ sort { $a->position <=> $b->position } grep { !$_->parent_id } @{ $self->items } ];
 }
 
 sub sections { &sections_sorted; }
@@ -85,7 +84,7 @@ sub versioned_copies_sorted {
   @copies    = grep { $_->version->version_number <=  $params{max_version_number} } @copies if $params{max_version_number};
   @copies    = sort { $a->version->version_number <=> $b->version->version_number } @copies;
 
-  return wantarray ? @copies : \@copies;
+  return \@copies;
 }
 
 sub create_copy {
@@ -405,16 +404,17 @@ An alias for L</sections_sorted>.
 
 =item C<sections_sorted>
 
-Returns a list of requirement spec items that
+Returns an array reference of requirement spec items that do not have
+a parent -- meaning that are sections.
 
 This is not a writer. Use the C<items> relationship for that.
 
 =item C<text_blocks_sorted %params>
 
-Returns an array (or an array reference depending on context) of text
-blocks sorted by their positional column in ascending order. If the
-C<output_position> parameter is given then only the text blocks
-belonging to that C<output_position> are returned.
+Returns an array reference of text blocks sorted by their positional
+column in ascending order. If the C<output_position> parameter is
+given then only the text blocks belonging to that C<output_position>
+are returned.
 
 =item C<validate>
 
@@ -423,11 +423,10 @@ messages (if any).
 
 =item C<versioned_copies_sorted %params>
 
-Returns an array (or an array reference depending on context) of
-versioned copies sorted by their version number in ascending order. If
-the C<max_version_number> parameter is given then only the versioned
-copies whose version number is less than or equal to
-C<max_version_number> are returned.
+Returns an array reference of versioned copies sorted by their version
+number in ascending order. If the C<max_version_number> parameter is
+given then only the versioned copies whose version number is less than
+or equal to C<max_version_number> are returned.
 
 =back
 
index 5e7d46c..d07ed04 100644 (file)
@@ -104,8 +104,7 @@ sub children_sorted {
 
   croak "Not a writer" if @args;
 
-  my @children = sort { $a->position <=> $b->position } $self->children;
-  return wantarray ? @children : \@children;
+  return [ sort { $a->position <=> $b->position } $self->children ];
 }
 
 sub section {
@@ -150,9 +149,8 @@ Returns the C<item_type> for children of C<$self>.
 
 =item C<children_sorted>
 
-Returns an array (or an array reference depending on context) of
-direct children (not of grandchildren) for C<$self> ordered by their
-positional column in ascending order.
+Returns an array reference of direct children (not of grandchildren)
+for C<$self> ordered by their positional column in ascending order.
 
 =item C<section>