Hpricot question

Hello,

I’m a humble beginner with Hpricot. I want to write a method that
performs certain actions for every HTML tag of a given HTML fragment.
In the documentation, I have only found search mechanisms that to for
a specific tag, attribute or id. What I need, however is a method that
tells me the first HTML tag of a fragment, whatever it is. For
instance:

a_fragment = "<div id="my_first_div">first div<p>a paragraph</

p>a span"

Are there methods like “current_tag()” or “current_id()” in Hpricot,
which act like this:

s = current_tag(a_fragment)
puts s
=>
"div"

or
s2 = current_id(a_fragment)
puts s2
=>
“my_first_id”

Any help is greatly appreciated.

Rainer wrote:

What I need […] is a method that
tells me the first HTML tag of a fragment, whatever it is.

You may want to use Element#name:

$ irb -r hpricot

d = Hpricot(‘

first div

a paragraph

a span
’)
=> #<Hpricot::Doc {elem
“first div” {elem

“a
paragraph</\np>” {elem “a span” }}

}>

d.search(’*’).first.name
=> “div”

Regards, Ömer [yet another Ruby beginner].

What I need, however is a method that tells me the first HTML tag of a fragment, whatever it is

Try this:

a_fragment = ‘

first div

a paragraph

a
span

doc=Hpricot(a_fragment)

tag=doc.search("[1]").first.name

=> “div”

Thank you Ömer,
Thank you Dan,

that did the trick. However, I couldn’t find anything about
Hpricot::Elem in the official rdoc:

http://code.whytheluckystiff.net/doc/hpricot/

After you told me about it, I could find the helpful “name” method
with

puts doc.search(“[1]”).first.methods.sort

Ömer and Dan, how did you find out about the methods of Hpricot::Elem
and “name”, in particular?

Kind regards,

Rainer