Зацикливание Hpricot с индексом?

У меня есть следующий HTML-документ:

<ul>
  <li><span>Some text</span></li>
  <li><span>Some other text</span></li>
  <li><span>Some more text</span></li>
</ul>

Как я могу использовать Hpricot для зацикливания элементов списка и вставки нового HTML в начале каждого, чтобы получить следующее:

<ul>
  <li><span>1</span><span>Some text</span></li>
  <li><span>2</span><span>Some other text</span></li>
  <li><span>3</span><span>Some more text</span></li>
</ul>

Если бы содержимое нового диапазона было исправлено, я мог бы использовать:

 (doc/"li").prepend "<span>fixed</span>"

Моя проблема связана с содержимым переменной span: как я могу использовать индекс в цикле prepend?


person Julien    schedule 30.10.2009    source источник


Ответы (2)


Попробуйте этот код:

require 'rubygems'
require 'hpricot'

html = <<-EOF
<ul>
  <li><span>Some text</span></li>
  <li><span>Some other text</span></li>
  <li><span>Some more text</span></li>
</ul>
EOF

doc = Hpricot(html)
(doc/'li/span').each_with_index do |element,index|
  value = index + 1
  element.before "<span>#{value}</span>"
end

puts doc.to_s
person Patrick Reagan    schedule 09.11.2009

Используйте each_child для перебора каждого из элементов li и используйте блок для увеличения индекса для каждой итерации.

person insane.dreamer    schedule 30.10.2009