Nate
Nate

Reputation: 331

HAML and iterated XML

I'm trying to generate an XML file. I've got some tags that repeat numerically like so:

# necessary XML namespace and metadata stuff...

%img{:src => "Foo002.jpg#full"}/
%img{:src => "Foo003.jpg#full"}/
%img{:src => "Foo004.jpg#full"}/
%img{:src => "Foo005.jpg#full"}/
# and so on for a few hundred lines

%img{:src => "Foo435.jpg#full"}/

I'm given "Foo" and the ending number (435 in this case) as parameters. How do I go about telling HAML to do this?

Thanks

EDIT: Forgot to mention, the leading zeros are important.

Upvotes: 3

Views: 637

Answers (1)

Phrogz
Phrogz

Reputation: 303361

- 2.upto(435) do |n|
  %img{:src => "Foo%03d.jpg#full" % n}

or

- (2..435).each do |n|
  %img{:src => "Foo%03d.jpg#full" % n}

Proof:

phrogz$ haml
!!! XML
%root
  - 2.upto(10) do |n|
    %img{ src:"Foo%03d.jpg" % n }
^D

<?xml version='1.0' encoding='utf-8' ?>
<root>
  <img src='Foo002.jpg' />
  <img src='Foo003.jpg' />
  <img src='Foo004.jpg' />
  <img src='Foo005.jpg' />
  <img src='Foo006.jpg' />
  <img src='Foo007.jpg' />
  <img src='Foo008.jpg' />
  <img src='Foo009.jpg' />
  <img src='Foo010.jpg' />
</root>

Upvotes: 4

Related Questions