rainer
July 12, 2008, 2:41pm
1
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
July 12, 2008, 5:03pm
2
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].
rainer
July 13, 2008, 6:49am
3
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”
rainer
July 13, 2008, 11:29pm
4
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