Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^3: I'm stuck adding more named parameters to a subroutine since the new named parameters might have the same name as the current ones.

by choroba (Abbot)
on Mar 25, 2013 at 20:39 UTC ( #1025380=note: print w/ replies, xml ) Need Help??


in reply to Re^2: I'm stuck adding more named parameters to a subroutine since the new named parameters might have the same name as the current ones.
in thread I'm stuck adding more named parameters to a subroutine since the new named parameters might have the same name as the current ones.

If you want multiple instances of the same type with ordering, you should use an array instead of a hash. What about something like

table(1, { id => 1, rows => [ { type => 'headings', data => [qw/NAME STRENGTH COMMENT/], }, { type => 'whead', data => [ [1, [2, { style => 'text-align: right' }], + 'no'], [2, [3, { style => 'text-align: right' }], + 'yes'], [10, [20, { style => 'text-align: right' }], + 'another'], [100, [200, { style => 'text-align: right' }], + 'comment'], ], }, { type => 'headings', data => [['List to go with the whead' { colspan => 3 }] +], }, { type => 'data', data => [ [ 'list', { class => 'info', colspan => 3, list => [$list, { class => 'two_cols' }] } ] ] } ] } );
لսႽ ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ


Comment on Re^3: I'm stuck adding more named parameters to a subroutine since the new named parameters might have the same name as the current ones.
Download Code
Re^4: I'm stuck adding more named parameters to a subroutine since the new named parameters might have the same name as the current ones.
by Lady_Aleena (Chaplain) on Mar 28, 2013 at 02:51 UTC

    choroba, I am very close to having what I want now. I just have to figure out how to get some conditionals nestled in the code somewhere. The new table subroutine is...

    sub table { my ($tab,$opt) = @_; my $attributes = get_attributes($opt,['id','class','style']); my $open = 'table'.$attributes; line($tab,qq(<$open>)); line($tab + 1,qq(<caption>$opt->{caption}</caption>)) if $opt->{capt +ion}; cols($tab + 1, $_) if $opt->{cols}; for my $rowgroup (@{$opt->{rows}) { my $type = $rowgroup->[0]; my @rows = @{$rowgroup->[1]; my $attributes = $rowgroup->[2]; for my $row (@rows) { if ($type eq 'header') { row($tab + 1, $type , $row); } else { row($tab + 1, $type , $_) for @$row; } } } line($tab,q(</table>)); }

    I used an array as you suggested, but used arrays in the array instead. Here are several tables using it now.

    # From ArmorClass.pm my $table_id = idify($table_name); table($tab,{ id => $table_id, class => 'player_character armor_class +', caption => $table_name, rows => [ ['header',['&nbsp;',map(ucfirst $_,qw(unarmored armored))]], ['whead',\@rows], ['header',[['Armor', { colspan => 3 }]]], # This & next have a c +ondition. ['data',[[['list', { class => "info", colspan => 3, list => ['u' +,$armor] }]]]] ] }); # From Psionics.pm my $table_id = idify($table_name); table($tab, { id => "$table_id", class => 'player_character psionic +s', caption => $table_name, rows => [ ['header',['&nbsp;','Amount']], ['whead',\@rows] ] }); # From RogueSkills.pm my $table_id = idify($table_name); table($tab, { id => "$table_id", class => 'player_character rogue_sk +ills', caption => $table_name, rows => [ ['header',['Skill','%']], ['whead',\@rows], ['header',[['Other', { colspan => 2 }]]], ['data',[[['list', { class => "info", list => ['u',$other_skills +] }]]]] ] }); # From SavingThrows.pm my $table_id = idify($table_name); table($tab, { id => "$table_id", class => 'player_character saving_ +throws', caption => $table_name, rows => [ ['header',['Save','Throw']], ['whead',\@rows], ['header',[['Modifiers', { colspan => 2}]]], # This & next have +a condition. ['data',[[['list', { class => "info", colspan => 2, list => ['u' +,$modifiers] }]]]] ] }); #From SpellProgression.pm my $table_id = idify($table_name); table($tab, { id => "$table_id", class => 'player_character spell +_progression', caption => $table_name, rows => [ ['header',\@headings], ['whead',\@rows], ['header',[['Spellbook', { colspan => $colspan }]]], # This & +next have a condition. ['data',[[[qq(<a href="../../../Role_playing/Spellbooks/$filen +ame.pl">$name\'s Spellbook</a>), { colspan => $colspan }]]]] ] }); # From THAC0.pm my $table_id = idify($table_name); table($tab, { id => "$table_id", class => 'player_character THAC0', rows => [ ['header',\@headings], ['whead',\@rows], ['header',[['Weapons', { colspan => $colspan }]]], # This & next + have a condition. ['data',[[['list', { class => 'info', colspan => $colspan, list +=> ['u',$weapons, { class => 'two' }] }]]]] ] });

    They may not be pretty, but they work almost as I want them to. Thank you for your array suggestion.

    Have a cookie and a very nice day!
    Lady Aleena

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1025380]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (7)
As of 2014-08-23 07:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (172 votes), past polls