[dancer-users] Template Toolkit Sort Hash
Kadir Beyazlı
kadirbeyazli at gmail.com
Sun Sep 27 14:05:02 BST 2015
Hi Dave,
On Sun, Sep 27, 2015 at 3:38 PM, Dave Cross <dave at dave.org.uk> wrote:
>
>
> On 27/09/15 12:48, Kadir Beyazlı wrote:
>>
>> On Sat, Sep 26, 2015 at 10:49 PM, Dave Cross <dave at dave.org.uk> wrote:
>>>
>>>
>>> On 26/09/15 19:25, Kadir Beyazlı wrote:
>>>>
>>>>
>>>> Hi Dave,
>>>>
>>>> On Sat, Sep 26, 2015 at 12:11 PM, Dave Cross <dave at dave.org.uk
>>>> <mailto:dave at dave.org.uk>> wrote:
>>>> >
>>>> >
>>>> > On 25/09/15 19:40, Richard Reina wrote:
>>>> >>
>>>> >> I display a hash reference in a template. It works well but is
>>>> there a
>>>> >> way I can sort it by SNAME instead of ID?
>>>> >>
>>>> >> <ul class="list-group fancy-list-items"> <!-- <ul
>>>> >> class="list-group checked-list-box"> -->
>>>> >> <table style="width:100%">
>>>> >> <% FOREACH ID IN Pats.keys.sort %>
>>>> >> <tr class="list-group-item">
>>>> >> <td width="70"><% Pats.$ID.SNAME %></td>
>>>> >> <td width="75"><% Pats.$ID.ANAME %></td>
>>>> >> <td width="35"><% Pats.$ID.SSN %></td>
>>>> >> <td width="35"><% Pats.$ID.YR %></td>
>>>> >> <td width="250"><% Pats.$ID.CHNAME %></td>
>>>> >> <td width="550"><% Pats.$ID.DESCRIP %></td>
>>>> >> <% END %>
>>>> >> </tr>
>>>> >> </ul>
>>>> >> </table>
>>>> >
>>>> >
>>>> > It looks like you have a hash of hashes. Is that correct?
>>>> >
>>>> > Anyway, you can pass "sort" the name of the key that you want sort
>>>> on.
>>>> [KB] This is a very common problem asked previously and no solution
>>>> found. It was advised to use array ref instead of hashref at previous
>>>> mails. Now I tried your offer and see that it does not work. Values are
>>>> unordered again.
>>>
>>>
>>>
>>> Damn, yes. There were a couple of typos in my solution. I didn't have
>>> time to test it. Sorry about that.
>>>
>>> Of course, I can't be sure until I know what your data structure really
>>> looks like,
>>
>> [KB] The data Richard mentioned is a classic fetchall_hashref data as
>> below:
>>
>> $Pats = {ID => { SNAME => Value,
>> CHNAME => Value,
>> ANAME => Value,
>> },
>> ID => { SNAME => Value,
>> CHNAME => Value,
>> ANAME => Value,
>> },
>> ID => { SNAME => Value,
>> CHNAME => Value,
>> ANAME => Value,
>> }
>> }
>>
>> ID is key of other attributtes. He asks if it id possible to sort by
>> SNAME at above structure.
>> I am using arrayref but this is common questin asked by beginners and
>> no solution found
>
>
> My second solution (shown below) works fine in this situation.
[KB] You are right. I did not realize that the data structure you
wrote at your 2nd mail is same with the data structure I wrote.
It works. I had given up using hashref at template toolkit because of
this problem and started using arrayref. But I can use now :)
> Dave...
>
>
>>> but this demonstrates a solution for the data structure that seems to
>>> make most sense.
>>>
>>> [% Pats = {
>>> id1 => {
>>> ID => 'id1',
>>> SNAME => 'ZZZ',
>>> ANAME => 'aname1',
>>> },
>>> id2 => {
>>> ID => 'id2',
>>> SNAME => 'XXX',
>>> ANAME => 'aname2',
>>> },
>>> id3 => {
>>> ID => 'id3',
>>> SNAME => 'YYY',
>>> ANAME => 'aname3',
>>> }
>>> } -%]
>>> Original:
>>> [% FOREACH id IN Pats.keys.sort -%]
>>> [% id %] / [% Pats.$id.SNAME %] / [% Pats.$id.ANAME %]
>>> [% END -%]
>>> New:
>>> [% FOREACH Pat IN Pats.values.sort('SNAME') -%]
>>> [% Pat.ID %] / [% Pat.SNAME %] / [% Pat.ANAME %]
>>> [% END -%]
>>>
>>> Cheers,
>>>
>>> Dave...
>>>
>>>
>>> _______________________________________________
>>> dancer-users mailing list
>>> dancer-users at dancer.pm
>>> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
>>
>>
>>
>>
>>
>
> --
> Dave Cross :: dave at dave.org.uk
> http://dave.org.uk/
> @davorg
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
--
Kadir Beyazlı
Computer Engineer
GSM : +90 535 821 50 00
More information about the dancer-users
mailing list