class REXML::Elements


elements # => #<REXML::Elements @element=<bookstore> … </>>
elements = d.root.elements
d = REXML::Document.new(xml_string)
EOT
</bookstore>
</book>
<price>39.95</price>
<year>2003</year>
<author>Erik T. Ray</author>
<title lang=“en”>Learning XML</title>
<book category=“web” cover=“paperback”>
</book>
<price>49.99</price>
<year>2003</year>
<author>Vaidyanathan Nagarajan</author>
<author>James Linn</author>
<author>Kurt Cagle</author>
<author>Per Bothner</author>
<author>James McGovern</author>
<title lang=“en”>XQuery Kick Start</title>
<book category=“web”>
</book>
<price>29.99</price>
<year>2005</year>
<author>J K. Rowling</author>
<title lang=“en”>Harry Potter</title>
<book category=“children”>
</book>
<price>30.00</price>
<year>2005</year>
<author>Giada De Laurentiis</author>
<title lang=“en”>Everyday Italian</title>
<book category=“cooking”>
<bookstore>
<?xml version=“1.0” encoding=“UTF-8”?>
xml_string = <<-EOT
not expected to instantiate this yourself.
the element.elements object. Therefore, you are
XPath search support. You are expected to only encounter this class as
A class which provides filtering of children for Elements, and

def []( index, name=nil)


eles[5, 'book'] # => nil
eles[4, 'book'] # => ...
eles[1, 'book'] # => ...
eles = d.root.elements # => # ... >

or +nil+ if there is no such _nth_ element:
returns the _nth_ found element that has the given +name+,
With arguments +n+ and +name+ given,

eles['..'].class # => REXML::Document
eles['.'] # => ...
eles['//book [@category="nosuch"]'] # => nil
eles['//nosuch'] # => nil
eles['/nosuch'] # => nil
eles['//book [@category="children"]'] # => ...
eles['//book'] # => ...
eles['/bookstore'] # => ...
eles = d.root.elements # => # ... >

returns the first element found via that +xpath+, if any; otherwise, +nil+:
When the single argument +xpath+ is given,

eles[1] # => nil
eles.to_a # => ["Everyday Italian"]
eles = d.root.first.first # => ... </><br><br>The node at this index is not an \Element, and so is not returned:<br><br>eles[5] # => nil<br>eles[4] # => <book category='web' cover='paperback'> ... </><br>eles.size # => 4<br>eles[1] # => <book category='cooking'> ... </><br>eles # => #<REXML::Elements @element=<bookstore> ... </>><br>eles = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>returns the element given by the index, if any; otherwise, +nil+:<br>When the single argument +index+ is given,<br><br>- The selection ignores non-\Element nodes.<br>- The _nth_ element has index +n+.<br>- The first element has index <tt>1</tt><br>- The +index+ is 1-based, not 0-based, so that:<br>Notes:<br><br>if any found, or +nil+ if none found.<br>Returns the first \Element object selected by the arguments,<br><br>elements[n, name] -> element or nil<br>elements[xpath] -> element or nil<br>elements[index] -> element or nil<br>:call-seq: </div> <pre id="code-block-220" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">[]</span><span class="p">(</span> <span class="n">index</span><span class="p">,</span> <span class="nb">name</span><span class="o">=</span><span class="kp">nil</span><span class="p">)</span> <span class="k">if</span> <span class="n">index</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Integer</span> <span class="k">raise</span> <span class="s2">"index (</span><span class="si">#{</span><span class="n">index</span><span class="si">}</span><span class="s2">) must be >= 1"</span> <span class="k">if</span> <span class="n">index</span> <span class="o"><</span> <span class="mi">1</span> <span class="nb">name</span> <span class="o">=</span> <span class="n">literalize</span><span class="p">(</span><span class="nb">name</span><span class="p">)</span> <span class="k">if</span> <span class="nb">name</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">0</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">find</span> <span class="p">{</span> <span class="o">|</span><span class="n">child</span><span class="o">|</span> <span class="n">child</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">name</span><span class="p">.</span><span class="nf">nil?</span> <span class="p">?</span> <span class="kp">true</span> <span class="p">:</span> <span class="n">child</span><span class="p">.</span><span class="nf">has_name?</span><span class="p">(</span> <span class="nb">name</span> <span class="p">))</span> <span class="ow">and</span> <span class="p">(</span><span class="n">num</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">index</span> <span class="p">}</span> <span class="k">else</span> <span class="k">return</span> <span class="no">XPath</span><span class="o">::</span><span class="n">first</span><span class="p">(</span> <span class="vi">@element</span><span class="p">,</span> <span class="n">index</span> <span class="p">)</span> <span class="c1">#{ |element|</span> <span class="c1"># return element if element.kind_of? Element</span> <span class="c1">#}</span> <span class="c1">#return nil</span> <span class="k">end</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-220.rouge table td { padding: 5px; } pre#code-block-220.rouge table pre { margin: 0; } pre#code-block-220.rouge, pre#code-block-220.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-220.rouge .k, pre#code-block-220.rouge .kd, pre#code-block-220.rouge .kn, pre#code-block-220.rouge .kp, pre#code-block-220.rouge .kr, pre#code-block-220.rouge .kt, pre#code-block-220.rouge .kv { color: #cf222e; } pre#code-block-220.rouge .gr { color: #f6f8fa; } pre#code-block-220.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-220.rouge .nb { color: #953800; } pre#code-block-220.rouge .nc { color: #953800; } pre#code-block-220.rouge .no { color: #953800; } pre#code-block-220.rouge .nn { color: #953800; } pre#code-block-220.rouge .sr { color: #116329; } pre#code-block-220.rouge .na { color: #116329; } pre#code-block-220.rouge .nt { color: #116329; } pre#code-block-220.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-220.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-220.rouge .kc { color: #0550ae; } pre#code-block-220.rouge .l, pre#code-block-220.rouge .ld, pre#code-block-220.rouge .m, pre#code-block-220.rouge .mb, pre#code-block-220.rouge .mf, pre#code-block-220.rouge .mh, pre#code-block-220.rouge .mi, pre#code-block-220.rouge .il, pre#code-block-220.rouge .mo, pre#code-block-220.rouge .mx { color: #0550ae; } pre#code-block-220.rouge .sb { color: #0550ae; } pre#code-block-220.rouge .bp { color: #0550ae; } pre#code-block-220.rouge .ne { color: #0550ae; } pre#code-block-220.rouge .nl { color: #0550ae; } pre#code-block-220.rouge .py { color: #0550ae; } pre#code-block-220.rouge .nv, pre#code-block-220.rouge .vc, pre#code-block-220.rouge .vg, pre#code-block-220.rouge .vi, pre#code-block-220.rouge .vm { color: #0550ae; } pre#code-block-220.rouge .o, pre#code-block-220.rouge .ow { color: #0550ae; } pre#code-block-220.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-220.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-220.rouge .s, pre#code-block-220.rouge .sa, pre#code-block-220.rouge .sc, pre#code-block-220.rouge .dl, pre#code-block-220.rouge .sd, pre#code-block-220.rouge .s2, pre#code-block-220.rouge .se, pre#code-block-220.rouge .sh, pre#code-block-220.rouge .sx, pre#code-block-220.rouge .s1, pre#code-block-220.rouge .ss { color: #0a3069; } pre#code-block-220.rouge .nd { color: #8250df; } pre#code-block-220.rouge .nf, pre#code-block-220.rouge .fm { color: #8250df; } pre#code-block-220.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-220.rouge .c, pre#code-block-220.rouge .ch, pre#code-block-220.rouge .cd, pre#code-block-220.rouge .cm, pre#code-block-220.rouge .cp, pre#code-block-220.rouge .cpf, pre#code-block-220.rouge .c1, pre#code-block-220.rouge .cs { color: #6e7781; } pre#code-block-220.rouge .gl { color: #6e7781; } pre#code-block-220.rouge .gt { color: #6e7781; } pre#code-block-220.rouge .ni { color: #24292f; } pre#code-block-220.rouge .si { color: #24292f; } pre#code-block-220.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-220.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def []=( index, element ) </h3> </div> <br>eles.size # => 5<br>eles[50] = REXML::Text.new('bar') # => "bar"<br><br>if +replacement_element+ is not an \Element:<br>Does nothing (or raises an exception)<br><br>eles[5] # => <foo/><br>eles.size # => 5<br>eles[50] = REXML::Element.new('foo') # => <foo/><br>eles.size # => 4<br>eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>><br>d = REXML::Document.new(xml_string)<br><br>adds +replacement_element+ to the element and returns<br>When <tt>eles[index]</tt> does not exist,<br><br>eles[2] # => <book category='web' cover='paperback'> ... </><br>eles[2] = REXML::Text.new('bar')<br>eles[2] # => <book category='web' cover='paperback'> ... </><br>if +replacement_element+ is not an \Element:<br>Does nothing (or raises an exception)<br><br>eles[1] # => <foo/><br>eles[1] = REXML::Element.new('foo')<br>eles[1] # => <book category='cooking'> ... </><br>eles = d.root.elements # => #<REXML::Elements @element=<bookstore> ... </>><br>d = REXML::Document.new(xml_string)<br><br>and returns +replacement_element+:<br>When <tt>eles[index]</tt> exists, replaces it with +replacement_element+<br><br>Replaces or adds an element.<br><br>elements[] = index, replacement_element -> replacement_element or nil<br>:call-seq: </div> <pre id="code-block-6865" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">[]=</span><span class="p">(</span> <span class="n">index</span><span class="p">,</span> <span class="n">element</span> <span class="p">)</span> <span class="n">previous</span> <span class="o">=</span> <span class="nb">self</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="k">if</span> <span class="n">previous</span><span class="p">.</span><span class="nf">nil?</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">add</span> <span class="n">element</span> <span class="k">else</span> <span class="n">previous</span><span class="p">.</span><span class="nf">replace_with</span> <span class="n">element</span> <span class="k">end</span> <span class="k">return</span> <span class="n">previous</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-6865.rouge table td { padding: 5px; } pre#code-block-6865.rouge table pre { margin: 0; } pre#code-block-6865.rouge, pre#code-block-6865.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-6865.rouge .k, pre#code-block-6865.rouge .kd, pre#code-block-6865.rouge .kn, pre#code-block-6865.rouge .kp, pre#code-block-6865.rouge .kr, pre#code-block-6865.rouge .kt, pre#code-block-6865.rouge .kv { color: #cf222e; } pre#code-block-6865.rouge .gr { color: #f6f8fa; } pre#code-block-6865.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-6865.rouge .nb { color: #953800; } pre#code-block-6865.rouge .nc { color: #953800; } pre#code-block-6865.rouge .no { color: #953800; } pre#code-block-6865.rouge .nn { color: #953800; } pre#code-block-6865.rouge .sr { color: #116329; } pre#code-block-6865.rouge .na { color: #116329; } pre#code-block-6865.rouge .nt { color: #116329; } pre#code-block-6865.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-6865.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-6865.rouge .kc { color: #0550ae; } pre#code-block-6865.rouge .l, pre#code-block-6865.rouge .ld, pre#code-block-6865.rouge .m, pre#code-block-6865.rouge .mb, pre#code-block-6865.rouge .mf, pre#code-block-6865.rouge .mh, pre#code-block-6865.rouge .mi, pre#code-block-6865.rouge .il, pre#code-block-6865.rouge .mo, pre#code-block-6865.rouge .mx { color: #0550ae; } pre#code-block-6865.rouge .sb { color: #0550ae; } pre#code-block-6865.rouge .bp { color: #0550ae; } pre#code-block-6865.rouge .ne { color: #0550ae; } pre#code-block-6865.rouge .nl { color: #0550ae; } pre#code-block-6865.rouge .py { color: #0550ae; } pre#code-block-6865.rouge .nv, pre#code-block-6865.rouge .vc, pre#code-block-6865.rouge .vg, pre#code-block-6865.rouge .vi, pre#code-block-6865.rouge .vm { color: #0550ae; } pre#code-block-6865.rouge .o, pre#code-block-6865.rouge .ow { color: #0550ae; } pre#code-block-6865.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-6865.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-6865.rouge .s, pre#code-block-6865.rouge .sa, pre#code-block-6865.rouge .sc, pre#code-block-6865.rouge .dl, pre#code-block-6865.rouge .sd, pre#code-block-6865.rouge .s2, pre#code-block-6865.rouge .se, pre#code-block-6865.rouge .sh, pre#code-block-6865.rouge .sx, pre#code-block-6865.rouge .s1, pre#code-block-6865.rouge .ss { color: #0a3069; } pre#code-block-6865.rouge .nd { color: #8250df; } pre#code-block-6865.rouge .nf, pre#code-block-6865.rouge .fm { color: #8250df; } pre#code-block-6865.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-6865.rouge .c, pre#code-block-6865.rouge .ch, pre#code-block-6865.rouge .cd, pre#code-block-6865.rouge .cm, pre#code-block-6865.rouge .cp, pre#code-block-6865.rouge .cpf, pre#code-block-6865.rouge .c1, pre#code-block-6865.rouge .cs { color: #6e7781; } pre#code-block-6865.rouge .gl { color: #6e7781; } pre#code-block-6865.rouge .gt { color: #6e7781; } pre#code-block-6865.rouge .ni { color: #24292f; } pre#code-block-6865.rouge .si { color: #24292f; } pre#code-block-6865.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-6865.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def add element=nil </h3> </div> <br>element.context # => {:raw=>:all}<br>element.parent # => <bookstore> ... </><br>element.name # => "bar"<br>elements.size # => 5<br>element = elements.add(e1) # => <bar/><br>e1 = REXML::Element.new('bar', e0, {raw: :all})<br>e0 = REXML::Element.new('foo')<br>elements.size # => 4<br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>The new element has name, parent, and context from the given +element+.<br>creates and adds a clone of the given +element+.<br>With argument +element+,<br><br>new_element.context # => {:raw=>:all}<br>new_element.parent # => <bookstore> ... </><br>new_element.name # => "foo"<br>elements.size # => 5<br>new_element = elements.add('foo') # => <foo/><br>elements.size # => 4<br>parent.context = {raw: :all}<br>parent = elements.parent # => <bookstore> ... </><br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>Example:<br><br>- Context from the that parent.<br>- \Parent from the \Elements object.<br>- Name +name+.<br><br>The new element has:<br>With string argument +name+, creates and adds a new element.<br><br>new_element.context # => {:raw=>:all}<br>new_element.parent # => <bookstore> ... </><br>new_element.name # => nil<br>elements.size # => 5<br>new_element = elements.add # => </><br>elements.size # => 4<br>parent.context = {raw: :all}<br>parent = elements.parent # => <bookstore> ... </><br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>Example:<br><br>- Context from the that parent.<br>- \Parent from the \Elements object.<br>- No name.<br><br>The new element has:<br>With no argument, creates and adds a new element.<br><br>Adds an element; returns the element added.<br><br>add(element) -> element<br>add(name) -> new_element<br>add -> new_element<br>:call-seq: </div> <pre id="code-block-5028" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">add</span> <span class="n">element</span><span class="o">=</span><span class="kp">nil</span> <span class="k">if</span> <span class="n">element</span><span class="p">.</span><span class="nf">nil?</span> <span class="no">Element</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="nb">self</span><span class="p">,</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">context</span><span class="p">)</span> <span class="k">elsif</span> <span class="ow">not</span> <span class="n">element</span><span class="p">.</span><span class="nf">kind_of?</span><span class="p">(</span><span class="no">Element</span><span class="p">)</span> <span class="no">Element</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="nb">self</span><span class="p">,</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">context</span><span class="p">)</span> <span class="k">else</span> <span class="vi">@element</span> <span class="o"><<</span> <span class="n">element</span> <span class="n">element</span><span class="p">.</span><span class="nf">context</span> <span class="o">=</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">context</span> <span class="n">element</span> <span class="k">end</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-5028.rouge table td { padding: 5px; } pre#code-block-5028.rouge table pre { margin: 0; } pre#code-block-5028.rouge, pre#code-block-5028.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-5028.rouge .k, pre#code-block-5028.rouge .kd, pre#code-block-5028.rouge .kn, pre#code-block-5028.rouge .kp, pre#code-block-5028.rouge .kr, pre#code-block-5028.rouge .kt, pre#code-block-5028.rouge .kv { color: #cf222e; } pre#code-block-5028.rouge .gr { color: #f6f8fa; } pre#code-block-5028.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-5028.rouge .nb { color: #953800; } pre#code-block-5028.rouge .nc { color: #953800; } pre#code-block-5028.rouge .no { color: #953800; } pre#code-block-5028.rouge .nn { color: #953800; } pre#code-block-5028.rouge .sr { color: #116329; } pre#code-block-5028.rouge .na { color: #116329; } pre#code-block-5028.rouge .nt { color: #116329; } pre#code-block-5028.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-5028.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-5028.rouge .kc { color: #0550ae; } pre#code-block-5028.rouge .l, pre#code-block-5028.rouge .ld, pre#code-block-5028.rouge .m, pre#code-block-5028.rouge .mb, pre#code-block-5028.rouge .mf, pre#code-block-5028.rouge .mh, pre#code-block-5028.rouge .mi, pre#code-block-5028.rouge .il, pre#code-block-5028.rouge .mo, pre#code-block-5028.rouge .mx { color: #0550ae; } pre#code-block-5028.rouge .sb { color: #0550ae; } pre#code-block-5028.rouge .bp { color: #0550ae; } pre#code-block-5028.rouge .ne { color: #0550ae; } pre#code-block-5028.rouge .nl { color: #0550ae; } pre#code-block-5028.rouge .py { color: #0550ae; } pre#code-block-5028.rouge .nv, pre#code-block-5028.rouge .vc, pre#code-block-5028.rouge .vg, pre#code-block-5028.rouge .vi, pre#code-block-5028.rouge .vm { color: #0550ae; } pre#code-block-5028.rouge .o, pre#code-block-5028.rouge .ow { color: #0550ae; } pre#code-block-5028.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-5028.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-5028.rouge .s, pre#code-block-5028.rouge .sa, pre#code-block-5028.rouge .sc, pre#code-block-5028.rouge .dl, pre#code-block-5028.rouge .sd, pre#code-block-5028.rouge .s2, pre#code-block-5028.rouge .se, pre#code-block-5028.rouge .sh, pre#code-block-5028.rouge .sx, pre#code-block-5028.rouge .s1, pre#code-block-5028.rouge .ss { color: #0a3069; } pre#code-block-5028.rouge .nd { color: #8250df; } pre#code-block-5028.rouge .nf, pre#code-block-5028.rouge .fm { color: #8250df; } pre#code-block-5028.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-5028.rouge .c, pre#code-block-5028.rouge .ch, pre#code-block-5028.rouge .cd, pre#code-block-5028.rouge .cm, pre#code-block-5028.rouge .cp, pre#code-block-5028.rouge .cpf, pre#code-block-5028.rouge .c1, pre#code-block-5028.rouge .cs { color: #6e7781; } pre#code-block-5028.rouge .gl { color: #6e7781; } pre#code-block-5028.rouge .gt { color: #6e7781; } pre#code-block-5028.rouge .ni { color: #24292f; } pre#code-block-5028.rouge .si { color: #24292f; } pre#code-block-5028.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-5028.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def collect( xpath=nil ) </h3> </div> <br>elements.collect(xpath) {|element| element.size } # => [17, 9]<br>xpath = '//book [@category="web"]'<br><br>the given +xpath+:<br>With argument +xpath+, iterates over elements that match<br><br>elements.collect {|element| element.size } # => [9, 9, 17, 9]<br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>With no argument, iterates over all elements:<br><br>Iterates over the elements; returns the array of block return values.<br><br>collect(xpath = nil) {|element| ... } -> array<br>:call-seq: </div> <pre id="code-block-9933" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">collect</span><span class="p">(</span> <span class="n">xpath</span><span class="o">=</span><span class="kp">nil</span> <span class="p">)</span> <span class="n">collection</span> <span class="o">=</span> <span class="p">[]</span> <span class="no">XPath</span><span class="o">::</span><span class="n">each</span><span class="p">(</span> <span class="vi">@element</span><span class="p">,</span> <span class="n">xpath</span> <span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">e</span><span class="o">|</span> <span class="n">collection</span> <span class="o"><<</span> <span class="k">yield</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">if</span> <span class="n">e</span><span class="p">.</span><span class="nf">kind_of?</span><span class="p">(</span><span class="no">Element</span><span class="p">)</span> <span class="p">}</span> <span class="n">collection</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-9933.rouge table td { padding: 5px; } pre#code-block-9933.rouge table pre { margin: 0; } pre#code-block-9933.rouge, pre#code-block-9933.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-9933.rouge .k, pre#code-block-9933.rouge .kd, pre#code-block-9933.rouge .kn, pre#code-block-9933.rouge .kp, pre#code-block-9933.rouge .kr, pre#code-block-9933.rouge .kt, pre#code-block-9933.rouge .kv { color: #cf222e; } pre#code-block-9933.rouge .gr { color: #f6f8fa; } pre#code-block-9933.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-9933.rouge .nb { color: #953800; } pre#code-block-9933.rouge .nc { color: #953800; } pre#code-block-9933.rouge .no { color: #953800; } pre#code-block-9933.rouge .nn { color: #953800; } pre#code-block-9933.rouge .sr { color: #116329; } pre#code-block-9933.rouge .na { color: #116329; } pre#code-block-9933.rouge .nt { color: #116329; } pre#code-block-9933.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-9933.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-9933.rouge .kc { color: #0550ae; } pre#code-block-9933.rouge .l, pre#code-block-9933.rouge .ld, pre#code-block-9933.rouge .m, pre#code-block-9933.rouge .mb, pre#code-block-9933.rouge .mf, pre#code-block-9933.rouge .mh, pre#code-block-9933.rouge .mi, pre#code-block-9933.rouge .il, pre#code-block-9933.rouge .mo, pre#code-block-9933.rouge .mx { color: #0550ae; } pre#code-block-9933.rouge .sb { color: #0550ae; } pre#code-block-9933.rouge .bp { color: #0550ae; } pre#code-block-9933.rouge .ne { color: #0550ae; } pre#code-block-9933.rouge .nl { color: #0550ae; } pre#code-block-9933.rouge .py { color: #0550ae; } pre#code-block-9933.rouge .nv, pre#code-block-9933.rouge .vc, pre#code-block-9933.rouge .vg, pre#code-block-9933.rouge .vi, pre#code-block-9933.rouge .vm { color: #0550ae; } pre#code-block-9933.rouge .o, pre#code-block-9933.rouge .ow { color: #0550ae; } pre#code-block-9933.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-9933.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-9933.rouge .s, pre#code-block-9933.rouge .sa, pre#code-block-9933.rouge .sc, pre#code-block-9933.rouge .dl, pre#code-block-9933.rouge .sd, pre#code-block-9933.rouge .s2, pre#code-block-9933.rouge .se, pre#code-block-9933.rouge .sh, pre#code-block-9933.rouge .sx, pre#code-block-9933.rouge .s1, pre#code-block-9933.rouge .ss { color: #0a3069; } pre#code-block-9933.rouge .nd { color: #8250df; } pre#code-block-9933.rouge .nf, pre#code-block-9933.rouge .fm { color: #8250df; } pre#code-block-9933.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-9933.rouge .c, pre#code-block-9933.rouge .ch, pre#code-block-9933.rouge .cd, pre#code-block-9933.rouge .cm, pre#code-block-9933.rouge .cp, pre#code-block-9933.rouge .cpf, pre#code-block-9933.rouge .c1, pre#code-block-9933.rouge .cs { color: #6e7781; } pre#code-block-9933.rouge .gl { color: #6e7781; } pre#code-block-9933.rouge .gt { color: #6e7781; } pre#code-block-9933.rouge .ni { color: #24292f; } pre#code-block-9933.rouge .si { color: #24292f; } pre#code-block-9933.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-9933.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def delete element </h3> </div> <br>elements.delete('//nosuch') # => nil<br>elements.delete('//book [@category="children"]') # => <book category='children'> ... </><br>elements.delete('//book') # => <book category='cooking'> ... </><br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>removes the first element found via that xpath:<br>With string argument +xpath+ given,<br><br>elements.delete(ele_2) # => nil<br>elements[2] # => <book category='web'> ... </><br>elements.size # => 3<br>elements.delete(ele_2) # => <book category='children'> ... </><br>elements[2] # => <book category='children'> ... </><br>elements.size # => 4<br>ele_1, ele_2, ele_3, ele_4 = *elements<br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>removes that child element:<br>With element argument +element+ given,<br><br>elements.delete(50) # => nil<br>elements[2] # => <book category='web'> ... </><br>elements.size # => 3<br>elements.delete(2) # => <book category='children'> ... </><br>elements[2] # => <book category='children'> ... </><br>elements.size # => 4<br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>removes the child element at that offset:<br>With integer argument +index+ given,<br><br>Removes an element; returns the removed element, or +nil+ if none removed.<br><br>delete(xpath) -> removed_element or nil<br>delete(element) -> removed_element or nil<br>delete(index) -> removed_element or nil<br>:call-seq: </div> <pre id="code-block-6874" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">delete</span> <span class="n">element</span> <span class="k">if</span> <span class="n">element</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">delete</span> <span class="n">element</span> <span class="k">else</span> <span class="n">el</span> <span class="o">=</span> <span class="nb">self</span><span class="p">[</span><span class="n">element</span><span class="p">]</span> <span class="n">el</span><span class="p">.</span><span class="nf">remove</span> <span class="k">if</span> <span class="n">el</span> <span class="k">end</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-6874.rouge table td { padding: 5px; } pre#code-block-6874.rouge table pre { margin: 0; } pre#code-block-6874.rouge, pre#code-block-6874.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-6874.rouge .k, pre#code-block-6874.rouge .kd, pre#code-block-6874.rouge .kn, pre#code-block-6874.rouge .kp, pre#code-block-6874.rouge .kr, pre#code-block-6874.rouge .kt, pre#code-block-6874.rouge .kv { color: #cf222e; } pre#code-block-6874.rouge .gr { color: #f6f8fa; } pre#code-block-6874.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-6874.rouge .nb { color: #953800; } pre#code-block-6874.rouge .nc { color: #953800; } pre#code-block-6874.rouge .no { color: #953800; } pre#code-block-6874.rouge .nn { color: #953800; } pre#code-block-6874.rouge .sr { color: #116329; } pre#code-block-6874.rouge .na { color: #116329; } pre#code-block-6874.rouge .nt { color: #116329; } pre#code-block-6874.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-6874.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-6874.rouge .kc { color: #0550ae; } pre#code-block-6874.rouge .l, pre#code-block-6874.rouge .ld, pre#code-block-6874.rouge .m, pre#code-block-6874.rouge .mb, pre#code-block-6874.rouge .mf, pre#code-block-6874.rouge .mh, pre#code-block-6874.rouge .mi, pre#code-block-6874.rouge .il, pre#code-block-6874.rouge .mo, pre#code-block-6874.rouge .mx { color: #0550ae; } pre#code-block-6874.rouge .sb { color: #0550ae; } pre#code-block-6874.rouge .bp { color: #0550ae; } pre#code-block-6874.rouge .ne { color: #0550ae; } pre#code-block-6874.rouge .nl { color: #0550ae; } pre#code-block-6874.rouge .py { color: #0550ae; } pre#code-block-6874.rouge .nv, pre#code-block-6874.rouge .vc, pre#code-block-6874.rouge .vg, pre#code-block-6874.rouge .vi, pre#code-block-6874.rouge .vm { color: #0550ae; } pre#code-block-6874.rouge .o, pre#code-block-6874.rouge .ow { color: #0550ae; } pre#code-block-6874.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-6874.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-6874.rouge .s, pre#code-block-6874.rouge .sa, pre#code-block-6874.rouge .sc, pre#code-block-6874.rouge .dl, pre#code-block-6874.rouge .sd, pre#code-block-6874.rouge .s2, pre#code-block-6874.rouge .se, pre#code-block-6874.rouge .sh, pre#code-block-6874.rouge .sx, pre#code-block-6874.rouge .s1, pre#code-block-6874.rouge .ss { color: #0a3069; } pre#code-block-6874.rouge .nd { color: #8250df; } pre#code-block-6874.rouge .nf, pre#code-block-6874.rouge .fm { color: #8250df; } pre#code-block-6874.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-6874.rouge .c, pre#code-block-6874.rouge .ch, pre#code-block-6874.rouge .cd, pre#code-block-6874.rouge .cm, pre#code-block-6874.rouge .cp, pre#code-block-6874.rouge .cpf, pre#code-block-6874.rouge .c1, pre#code-block-6874.rouge .cs { color: #6e7781; } pre#code-block-6874.rouge .gl { color: #6e7781; } pre#code-block-6874.rouge .gt { color: #6e7781; } pre#code-block-6874.rouge .ni { color: #24292f; } pre#code-block-6874.rouge .si { color: #24292f; } pre#code-block-6874.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-6874.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def delete_all( xpath ) </h3> </div> <br>elements.delete_all('//book') # => []<br>elements.size # => 0<br>deleted_elements.size # => 2<br>deleted_elements = elements.delete_all('//book')<br>elements.size # => 2<br>deleted_elements.size # => 2<br>deleted_elements = elements.delete_all('//book [@category="web"]')<br>elements.size # => 4<br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>returns the array of removed elements, if any, else +nil+.<br>Removes all elements found via the given +xpath+;<br><br>delete_all(xpath)<br>:call-seq: </div> <pre id="code-block-9678" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">delete_all</span><span class="p">(</span> <span class="n">xpath</span> <span class="p">)</span> <span class="n">rv</span> <span class="o">=</span> <span class="p">[]</span> <span class="no">XPath</span><span class="o">::</span><span class="n">each</span><span class="p">(</span> <span class="vi">@element</span><span class="p">,</span> <span class="n">xpath</span><span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">element</span><span class="o">|</span> <span class="n">rv</span> <span class="o"><<</span> <span class="n">element</span> <span class="k">if</span> <span class="n">element</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span> <span class="p">}</span> <span class="n">rv</span><span class="p">.</span><span class="nf">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">element</span><span class="o">|</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">delete</span> <span class="n">element</span> <span class="n">element</span><span class="p">.</span><span class="nf">remove</span> <span class="k">end</span> <span class="k">return</span> <span class="n">rv</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-9678.rouge table td { padding: 5px; } pre#code-block-9678.rouge table pre { margin: 0; } pre#code-block-9678.rouge, pre#code-block-9678.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-9678.rouge .k, pre#code-block-9678.rouge .kd, pre#code-block-9678.rouge .kn, pre#code-block-9678.rouge .kp, pre#code-block-9678.rouge .kr, pre#code-block-9678.rouge .kt, pre#code-block-9678.rouge .kv { color: #cf222e; } pre#code-block-9678.rouge .gr { color: #f6f8fa; } pre#code-block-9678.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-9678.rouge .nb { color: #953800; } pre#code-block-9678.rouge .nc { color: #953800; } pre#code-block-9678.rouge .no { color: #953800; } pre#code-block-9678.rouge .nn { color: #953800; } pre#code-block-9678.rouge .sr { color: #116329; } pre#code-block-9678.rouge .na { color: #116329; } pre#code-block-9678.rouge .nt { color: #116329; } pre#code-block-9678.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-9678.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-9678.rouge .kc { color: #0550ae; } pre#code-block-9678.rouge .l, pre#code-block-9678.rouge .ld, pre#code-block-9678.rouge .m, pre#code-block-9678.rouge .mb, pre#code-block-9678.rouge .mf, pre#code-block-9678.rouge .mh, pre#code-block-9678.rouge .mi, pre#code-block-9678.rouge .il, pre#code-block-9678.rouge .mo, pre#code-block-9678.rouge .mx { color: #0550ae; } pre#code-block-9678.rouge .sb { color: #0550ae; } pre#code-block-9678.rouge .bp { color: #0550ae; } pre#code-block-9678.rouge .ne { color: #0550ae; } pre#code-block-9678.rouge .nl { color: #0550ae; } pre#code-block-9678.rouge .py { color: #0550ae; } pre#code-block-9678.rouge .nv, pre#code-block-9678.rouge .vc, pre#code-block-9678.rouge .vg, pre#code-block-9678.rouge .vi, pre#code-block-9678.rouge .vm { color: #0550ae; } pre#code-block-9678.rouge .o, pre#code-block-9678.rouge .ow { color: #0550ae; } pre#code-block-9678.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-9678.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-9678.rouge .s, pre#code-block-9678.rouge .sa, pre#code-block-9678.rouge .sc, pre#code-block-9678.rouge .dl, pre#code-block-9678.rouge .sd, pre#code-block-9678.rouge .s2, pre#code-block-9678.rouge .se, pre#code-block-9678.rouge .sh, pre#code-block-9678.rouge .sx, pre#code-block-9678.rouge .s1, pre#code-block-9678.rouge .ss { color: #0a3069; } pre#code-block-9678.rouge .nd { color: #8250df; } pre#code-block-9678.rouge .nf, pre#code-block-9678.rouge .fm { color: #8250df; } pre#code-block-9678.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-9678.rouge .c, pre#code-block-9678.rouge .ch, pre#code-block-9678.rouge .cd, pre#code-block-9678.rouge .cm, pre#code-block-9678.rouge .cp, pre#code-block-9678.rouge .cpf, pre#code-block-9678.rouge .c1, pre#code-block-9678.rouge .cs { color: #6e7781; } pre#code-block-9678.rouge .gl { color: #6e7781; } pre#code-block-9678.rouge .gt { color: #6e7781; } pre#code-block-9678.rouge .ni { color: #24292f; } pre#code-block-9678.rouge .si { color: #24292f; } pre#code-block-9678.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-9678.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def each( xpath=nil ) </h3> </div> <br><book category='web' cover='paperback'> ... </><br><book category='web'> ... </><br><br>Output:<br><br>elements.each('//book [@category="web"]') {|element| p element }<br><br>that matches the given +xpath+:<br>With argument +xpath+, calls the block with each element<br><br><book category='web' cover='paperback'> ... </><br><book category='web'> ... </><br><book category='children'> ... </><br><book category='cooking'> ... </><br><br>Output:<br><br>elements.each {|element| p element }<br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>With no argument, calls the block with each element:<br><br>Iterates over the elements.<br><br>each(xpath = nil) {|element| ... } -> self<br>:call-seq: </div> <pre id="code-block-7447" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">each</span><span class="p">(</span> <span class="n">xpath</span><span class="o">=</span><span class="kp">nil</span> <span class="p">)</span> <span class="no">XPath</span><span class="o">::</span><span class="n">each</span><span class="p">(</span> <span class="vi">@element</span><span class="p">,</span> <span class="n">xpath</span> <span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">e</span><span class="o">|</span> <span class="k">yield</span> <span class="n">e</span> <span class="k">if</span> <span class="n">e</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span> <span class="p">}</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-7447.rouge table td { padding: 5px; } pre#code-block-7447.rouge table pre { margin: 0; } pre#code-block-7447.rouge, pre#code-block-7447.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-7447.rouge .k, pre#code-block-7447.rouge .kd, pre#code-block-7447.rouge .kn, pre#code-block-7447.rouge .kp, pre#code-block-7447.rouge .kr, pre#code-block-7447.rouge .kt, pre#code-block-7447.rouge .kv { color: #cf222e; } pre#code-block-7447.rouge .gr { color: #f6f8fa; } pre#code-block-7447.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-7447.rouge .nb { color: #953800; } pre#code-block-7447.rouge .nc { color: #953800; } pre#code-block-7447.rouge .no { color: #953800; } pre#code-block-7447.rouge .nn { color: #953800; } pre#code-block-7447.rouge .sr { color: #116329; } pre#code-block-7447.rouge .na { color: #116329; } pre#code-block-7447.rouge .nt { color: #116329; } pre#code-block-7447.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-7447.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-7447.rouge .kc { color: #0550ae; } pre#code-block-7447.rouge .l, pre#code-block-7447.rouge .ld, pre#code-block-7447.rouge .m, pre#code-block-7447.rouge .mb, pre#code-block-7447.rouge .mf, pre#code-block-7447.rouge .mh, pre#code-block-7447.rouge .mi, pre#code-block-7447.rouge .il, pre#code-block-7447.rouge .mo, pre#code-block-7447.rouge .mx { color: #0550ae; } pre#code-block-7447.rouge .sb { color: #0550ae; } pre#code-block-7447.rouge .bp { color: #0550ae; } pre#code-block-7447.rouge .ne { color: #0550ae; } pre#code-block-7447.rouge .nl { color: #0550ae; } pre#code-block-7447.rouge .py { color: #0550ae; } pre#code-block-7447.rouge .nv, pre#code-block-7447.rouge .vc, pre#code-block-7447.rouge .vg, pre#code-block-7447.rouge .vi, pre#code-block-7447.rouge .vm { color: #0550ae; } pre#code-block-7447.rouge .o, pre#code-block-7447.rouge .ow { color: #0550ae; } pre#code-block-7447.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-7447.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-7447.rouge .s, pre#code-block-7447.rouge .sa, pre#code-block-7447.rouge .sc, pre#code-block-7447.rouge .dl, pre#code-block-7447.rouge .sd, pre#code-block-7447.rouge .s2, pre#code-block-7447.rouge .se, pre#code-block-7447.rouge .sh, pre#code-block-7447.rouge .sx, pre#code-block-7447.rouge .s1, pre#code-block-7447.rouge .ss { color: #0a3069; } pre#code-block-7447.rouge .nd { color: #8250df; } pre#code-block-7447.rouge .nf, pre#code-block-7447.rouge .fm { color: #8250df; } pre#code-block-7447.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-7447.rouge .c, pre#code-block-7447.rouge .ch, pre#code-block-7447.rouge .cd, pre#code-block-7447.rouge .cm, pre#code-block-7447.rouge .cp, pre#code-block-7447.rouge .cpf, pre#code-block-7447.rouge .c1, pre#code-block-7447.rouge .cs { color: #6e7781; } pre#code-block-7447.rouge .gl { color: #6e7781; } pre#code-block-7447.rouge .gt { color: #6e7781; } pre#code-block-7447.rouge .ni { color: #24292f; } pre#code-block-7447.rouge .si { color: #24292f; } pre#code-block-7447.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-7447.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def empty? </h3> </div> <br>d.elements.empty? # => false<br>d = REXML::Document.new(xml_string)<br>d.elements.empty? # => true<br>d = REXML::Document.new('')<br><br>Returns +true+ if there are no children, +false+ otherwise.<br><br>empty? -> true or false<br>:call-seq: </div> <pre id="code-block-5888" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">empty?</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">find</span><span class="p">{</span> <span class="o">|</span><span class="n">child</span><span class="o">|</span> <span class="n">child</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span><span class="p">}.</span><span class="nf">nil?</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-5888.rouge table td { padding: 5px; } pre#code-block-5888.rouge table pre { margin: 0; } pre#code-block-5888.rouge, pre#code-block-5888.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-5888.rouge .k, pre#code-block-5888.rouge .kd, pre#code-block-5888.rouge .kn, pre#code-block-5888.rouge .kp, pre#code-block-5888.rouge .kr, pre#code-block-5888.rouge .kt, pre#code-block-5888.rouge .kv { color: #cf222e; } pre#code-block-5888.rouge .gr { color: #f6f8fa; } pre#code-block-5888.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-5888.rouge .nb { color: #953800; } pre#code-block-5888.rouge .nc { color: #953800; } pre#code-block-5888.rouge .no { color: #953800; } pre#code-block-5888.rouge .nn { color: #953800; } pre#code-block-5888.rouge .sr { color: #116329; } pre#code-block-5888.rouge .na { color: #116329; } pre#code-block-5888.rouge .nt { color: #116329; } pre#code-block-5888.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-5888.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-5888.rouge .kc { color: #0550ae; } pre#code-block-5888.rouge .l, pre#code-block-5888.rouge .ld, pre#code-block-5888.rouge .m, pre#code-block-5888.rouge .mb, pre#code-block-5888.rouge .mf, pre#code-block-5888.rouge .mh, pre#code-block-5888.rouge .mi, pre#code-block-5888.rouge .il, pre#code-block-5888.rouge .mo, pre#code-block-5888.rouge .mx { color: #0550ae; } pre#code-block-5888.rouge .sb { color: #0550ae; } pre#code-block-5888.rouge .bp { color: #0550ae; } pre#code-block-5888.rouge .ne { color: #0550ae; } pre#code-block-5888.rouge .nl { color: #0550ae; } pre#code-block-5888.rouge .py { color: #0550ae; } pre#code-block-5888.rouge .nv, pre#code-block-5888.rouge .vc, pre#code-block-5888.rouge .vg, pre#code-block-5888.rouge .vi, pre#code-block-5888.rouge .vm { color: #0550ae; } pre#code-block-5888.rouge .o, pre#code-block-5888.rouge .ow { color: #0550ae; } pre#code-block-5888.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-5888.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-5888.rouge .s, pre#code-block-5888.rouge .sa, pre#code-block-5888.rouge .sc, pre#code-block-5888.rouge .dl, pre#code-block-5888.rouge .sd, pre#code-block-5888.rouge .s2, pre#code-block-5888.rouge .se, pre#code-block-5888.rouge .sh, pre#code-block-5888.rouge .sx, pre#code-block-5888.rouge .s1, pre#code-block-5888.rouge .ss { color: #0a3069; } pre#code-block-5888.rouge .nd { color: #8250df; } pre#code-block-5888.rouge .nf, pre#code-block-5888.rouge .fm { color: #8250df; } pre#code-block-5888.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-5888.rouge .c, pre#code-block-5888.rouge .ch, pre#code-block-5888.rouge .cd, pre#code-block-5888.rouge .cm, pre#code-block-5888.rouge .cp, pre#code-block-5888.rouge .cpf, pre#code-block-5888.rouge .c1, pre#code-block-5888.rouge .cs { color: #6e7781; } pre#code-block-5888.rouge .gl { color: #6e7781; } pre#code-block-5888.rouge .gt { color: #6e7781; } pre#code-block-5888.rouge .ni { color: #24292f; } pre#code-block-5888.rouge .si { color: #24292f; } pre#code-block-5888.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-5888.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def index element </h3> </div> <br>elements.index(ele_3) # => -1<br>elements.index(ele_4) # => 3<br>elements.delete(ele_3)<br>elements.index(ele_4) # => 4<br>ele_1, ele_2, ele_3, ele_4 = *elements<br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>otherwise, returns -1:<br>Returns the 1-based index of the given +element+, if found;<br><br>index(element)<br>:call-seq: </div> <pre id="code-block-1303" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">index</span> <span class="n">element</span> <span class="n">rv</span> <span class="o">=</span> <span class="mi">0</span> <span class="n">found</span> <span class="o">=</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">find</span> <span class="k">do</span> <span class="o">|</span><span class="n">child</span><span class="o">|</span> <span class="n">child</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span> <span class="ow">and</span> <span class="p">(</span><span class="n">rv</span> <span class="o">+=</span> <span class="mi">1</span><span class="p">)</span> <span class="ow">and</span> <span class="n">child</span> <span class="o">==</span> <span class="n">element</span> <span class="k">end</span> <span class="k">return</span> <span class="n">rv</span> <span class="k">if</span> <span class="n">found</span> <span class="o">==</span> <span class="n">element</span> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-1303.rouge table td { padding: 5px; } pre#code-block-1303.rouge table pre { margin: 0; } pre#code-block-1303.rouge, pre#code-block-1303.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-1303.rouge .k, pre#code-block-1303.rouge .kd, pre#code-block-1303.rouge .kn, pre#code-block-1303.rouge .kp, pre#code-block-1303.rouge .kr, pre#code-block-1303.rouge .kt, pre#code-block-1303.rouge .kv { color: #cf222e; } pre#code-block-1303.rouge .gr { color: #f6f8fa; } pre#code-block-1303.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-1303.rouge .nb { color: #953800; } pre#code-block-1303.rouge .nc { color: #953800; } pre#code-block-1303.rouge .no { color: #953800; } pre#code-block-1303.rouge .nn { color: #953800; } pre#code-block-1303.rouge .sr { color: #116329; } pre#code-block-1303.rouge .na { color: #116329; } pre#code-block-1303.rouge .nt { color: #116329; } pre#code-block-1303.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-1303.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-1303.rouge .kc { color: #0550ae; } pre#code-block-1303.rouge .l, pre#code-block-1303.rouge .ld, pre#code-block-1303.rouge .m, pre#code-block-1303.rouge .mb, pre#code-block-1303.rouge .mf, pre#code-block-1303.rouge .mh, pre#code-block-1303.rouge .mi, pre#code-block-1303.rouge .il, pre#code-block-1303.rouge .mo, pre#code-block-1303.rouge .mx { color: #0550ae; } pre#code-block-1303.rouge .sb { color: #0550ae; } pre#code-block-1303.rouge .bp { color: #0550ae; } pre#code-block-1303.rouge .ne { color: #0550ae; } pre#code-block-1303.rouge .nl { color: #0550ae; } pre#code-block-1303.rouge .py { color: #0550ae; } pre#code-block-1303.rouge .nv, pre#code-block-1303.rouge .vc, pre#code-block-1303.rouge .vg, pre#code-block-1303.rouge .vi, pre#code-block-1303.rouge .vm { color: #0550ae; } pre#code-block-1303.rouge .o, pre#code-block-1303.rouge .ow { color: #0550ae; } pre#code-block-1303.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-1303.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-1303.rouge .s, pre#code-block-1303.rouge .sa, pre#code-block-1303.rouge .sc, pre#code-block-1303.rouge .dl, pre#code-block-1303.rouge .sd, pre#code-block-1303.rouge .s2, pre#code-block-1303.rouge .se, pre#code-block-1303.rouge .sh, pre#code-block-1303.rouge .sx, pre#code-block-1303.rouge .s1, pre#code-block-1303.rouge .ss { color: #0a3069; } pre#code-block-1303.rouge .nd { color: #8250df; } pre#code-block-1303.rouge .nf, pre#code-block-1303.rouge .fm { color: #8250df; } pre#code-block-1303.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-1303.rouge .c, pre#code-block-1303.rouge .ch, pre#code-block-1303.rouge .cd, pre#code-block-1303.rouge .cm, pre#code-block-1303.rouge .cp, pre#code-block-1303.rouge .cpf, pre#code-block-1303.rouge .c1, pre#code-block-1303.rouge .cs { color: #6e7781; } pre#code-block-1303.rouge .gl { color: #6e7781; } pre#code-block-1303.rouge .gt { color: #6e7781; } pre#code-block-1303.rouge .ni { color: #24292f; } pre#code-block-1303.rouge .si { color: #24292f; } pre#code-block-1303.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-1303.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def initialize parent </h3> </div> <br>eles == d.root.elements # => false<br>eles # => #<REXML::Elements @element=<bookstore> ... </>><br>eles = REXML::Elements.new(d.root)<br>d = REXML::Document.new(xml_string)<br><br>Does _not_ assign <tt>parent.elements = self</tt>:<br>Returns a new \Elements object with the given +parent+.<br><br>new(parent) -> new_elements_object<br>:call-seq: </div> <pre id="code-block-7526" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">initialize</span> <span class="n">parent</span> <span class="vi">@element</span> <span class="o">=</span> <span class="n">parent</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-7526.rouge table td { padding: 5px; } pre#code-block-7526.rouge table pre { margin: 0; } pre#code-block-7526.rouge, pre#code-block-7526.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-7526.rouge .k, pre#code-block-7526.rouge .kd, pre#code-block-7526.rouge .kn, pre#code-block-7526.rouge .kp, pre#code-block-7526.rouge .kr, pre#code-block-7526.rouge .kt, pre#code-block-7526.rouge .kv { color: #cf222e; } pre#code-block-7526.rouge .gr { color: #f6f8fa; } pre#code-block-7526.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-7526.rouge .nb { color: #953800; } pre#code-block-7526.rouge .nc { color: #953800; } pre#code-block-7526.rouge .no { color: #953800; } pre#code-block-7526.rouge .nn { color: #953800; } pre#code-block-7526.rouge .sr { color: #116329; } pre#code-block-7526.rouge .na { color: #116329; } pre#code-block-7526.rouge .nt { color: #116329; } pre#code-block-7526.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-7526.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-7526.rouge .kc { color: #0550ae; } pre#code-block-7526.rouge .l, pre#code-block-7526.rouge .ld, pre#code-block-7526.rouge .m, pre#code-block-7526.rouge .mb, pre#code-block-7526.rouge .mf, pre#code-block-7526.rouge .mh, pre#code-block-7526.rouge .mi, pre#code-block-7526.rouge .il, pre#code-block-7526.rouge .mo, pre#code-block-7526.rouge .mx { color: #0550ae; } pre#code-block-7526.rouge .sb { color: #0550ae; } pre#code-block-7526.rouge .bp { color: #0550ae; } pre#code-block-7526.rouge .ne { color: #0550ae; } pre#code-block-7526.rouge .nl { color: #0550ae; } pre#code-block-7526.rouge .py { color: #0550ae; } pre#code-block-7526.rouge .nv, pre#code-block-7526.rouge .vc, pre#code-block-7526.rouge .vg, pre#code-block-7526.rouge .vi, pre#code-block-7526.rouge .vm { color: #0550ae; } pre#code-block-7526.rouge .o, pre#code-block-7526.rouge .ow { color: #0550ae; } pre#code-block-7526.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-7526.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-7526.rouge .s, pre#code-block-7526.rouge .sa, pre#code-block-7526.rouge .sc, pre#code-block-7526.rouge .dl, pre#code-block-7526.rouge .sd, pre#code-block-7526.rouge .s2, pre#code-block-7526.rouge .se, pre#code-block-7526.rouge .sh, pre#code-block-7526.rouge .sx, pre#code-block-7526.rouge .s1, pre#code-block-7526.rouge .ss { color: #0a3069; } pre#code-block-7526.rouge .nd { color: #8250df; } pre#code-block-7526.rouge .nf, pre#code-block-7526.rouge .fm { color: #8250df; } pre#code-block-7526.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-7526.rouge .c, pre#code-block-7526.rouge .ch, pre#code-block-7526.rouge .cd, pre#code-block-7526.rouge .cm, pre#code-block-7526.rouge .cp, pre#code-block-7526.rouge .cpf, pre#code-block-7526.rouge .c1, pre#code-block-7526.rouge .cs { color: #6e7781; } pre#code-block-7526.rouge .gl { color: #6e7781; } pre#code-block-7526.rouge .gt { color: #6e7781; } pre#code-block-7526.rouge .ni { color: #24292f; } pre#code-block-7526.rouge .si { color: #24292f; } pre#code-block-7526.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-7526.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def inject( xpath=nil, initial=nil ) </h3> </div> <br>end # => 26<br>total += element.size<br>elements.inject('//book [@category="web"]', 0) do |total, element|<br><br>calls the block only with elements matching that xpath:<br>With both arguments +xpath+ and +initial+ are given,<br><br>end # => 44<br>total += element.size<br>elements.inject(nil, 0) do |total, element|<br><br>In this form the passed object can be used as an accumulator:<br><br>[3, 4]<br>[2, 3]<br>[1, 2]<br>[-1, 1]<br><br>Output:<br><br>end<br>element<br>p [elements.index(object), elements.index(element)]<br>elements.inject(nil, 'Initial') do |object, element|<br><br>In this example, the first object index is <tt>-1</tt><br><br>- And so on.<br>- The third call passes the second block return value and the third element.<br>- The second call passes the first block return value and the second element.<br>- The first call passes the +initial+ and the first element.<br><br>calls the block once for each element.<br>and argument +initial+ also given,<br>With argument +xpath+ given as +nil+<br><br>[3, 4]<br><br>Output:<br><br>end<br>element<br>p [elements.index(object), elements.index(element)]<br>elements.inject('//book [@category="web"]') do |object, element|<br><br>elements matching that xpath:<br>With the single argument +xpath+, calls the block only with<br><br>[3, 4]<br>[2, 3]<br>[1, 2]<br><br>Output:<br><br>end<br>element<br>p [elements.index(object), elements.index(element)]<br>elements.inject do |object, element|<br>elements = d.root.elements<br>d = REXML::Document.new(xml_string)<br><br>which is then the object argument to the next call:<br>In this example, the block returns the passed element,<br><br>- And so on.<br>- The third call passes the second block return value and the fourth element.<br>- The second call passes the first block return value and the third element.<br>- The first call passes the first and second elements.<br><br><tt>elements.size - 1</tt> times.<br>With no argument, iterates over the elements, calling the block<br><br>Calls the block with elements; returns the last block return value.<br><br>inject(xpath = nil, initial = nil) -> object<br>:call-seq: </div> <pre id="code-block-4810" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">inject</span><span class="p">(</span> <span class="n">xpath</span><span class="o">=</span><span class="kp">nil</span><span class="p">,</span> <span class="n">initial</span><span class="o">=</span><span class="kp">nil</span> <span class="p">)</span> <span class="n">first</span> <span class="o">=</span> <span class="kp">true</span> <span class="no">XPath</span><span class="o">::</span><span class="n">each</span><span class="p">(</span> <span class="vi">@element</span><span class="p">,</span> <span class="n">xpath</span> <span class="p">)</span> <span class="p">{</span><span class="o">|</span><span class="n">e</span><span class="o">|</span> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span><span class="p">)</span> <span class="k">if</span> <span class="p">(</span><span class="n">first</span> <span class="ow">and</span> <span class="n">initial</span> <span class="o">==</span> <span class="kp">nil</span><span class="p">)</span> <span class="n">initial</span> <span class="o">=</span> <span class="n">e</span> <span class="n">first</span> <span class="o">=</span> <span class="kp">false</span> <span class="k">else</span> <span class="n">initial</span> <span class="o">=</span> <span class="k">yield</span><span class="p">(</span> <span class="n">initial</span><span class="p">,</span> <span class="n">e</span> <span class="p">)</span> <span class="k">if</span> <span class="n">e</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span> <span class="k">end</span> <span class="k">end</span> <span class="p">}</span> <span class="n">initial</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-4810.rouge table td { padding: 5px; } pre#code-block-4810.rouge table pre { margin: 0; } pre#code-block-4810.rouge, pre#code-block-4810.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-4810.rouge .k, pre#code-block-4810.rouge .kd, pre#code-block-4810.rouge .kn, pre#code-block-4810.rouge .kp, pre#code-block-4810.rouge .kr, pre#code-block-4810.rouge .kt, pre#code-block-4810.rouge .kv { color: #cf222e; } pre#code-block-4810.rouge .gr { color: #f6f8fa; } pre#code-block-4810.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-4810.rouge .nb { color: #953800; } pre#code-block-4810.rouge .nc { color: #953800; } pre#code-block-4810.rouge .no { color: #953800; } pre#code-block-4810.rouge .nn { color: #953800; } pre#code-block-4810.rouge .sr { color: #116329; } pre#code-block-4810.rouge .na { color: #116329; } pre#code-block-4810.rouge .nt { color: #116329; } pre#code-block-4810.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-4810.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-4810.rouge .kc { color: #0550ae; } pre#code-block-4810.rouge .l, pre#code-block-4810.rouge .ld, pre#code-block-4810.rouge .m, pre#code-block-4810.rouge .mb, pre#code-block-4810.rouge .mf, pre#code-block-4810.rouge .mh, pre#code-block-4810.rouge .mi, pre#code-block-4810.rouge .il, pre#code-block-4810.rouge .mo, pre#code-block-4810.rouge .mx { color: #0550ae; } pre#code-block-4810.rouge .sb { color: #0550ae; } pre#code-block-4810.rouge .bp { color: #0550ae; } pre#code-block-4810.rouge .ne { color: #0550ae; } pre#code-block-4810.rouge .nl { color: #0550ae; } pre#code-block-4810.rouge .py { color: #0550ae; } pre#code-block-4810.rouge .nv, pre#code-block-4810.rouge .vc, pre#code-block-4810.rouge .vg, pre#code-block-4810.rouge .vi, pre#code-block-4810.rouge .vm { color: #0550ae; } pre#code-block-4810.rouge .o, pre#code-block-4810.rouge .ow { color: #0550ae; } pre#code-block-4810.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-4810.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-4810.rouge .s, pre#code-block-4810.rouge .sa, pre#code-block-4810.rouge .sc, pre#code-block-4810.rouge .dl, pre#code-block-4810.rouge .sd, pre#code-block-4810.rouge .s2, pre#code-block-4810.rouge .se, pre#code-block-4810.rouge .sh, pre#code-block-4810.rouge .sx, pre#code-block-4810.rouge .s1, pre#code-block-4810.rouge .ss { color: #0a3069; } pre#code-block-4810.rouge .nd { color: #8250df; } pre#code-block-4810.rouge .nf, pre#code-block-4810.rouge .fm { color: #8250df; } pre#code-block-4810.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-4810.rouge .c, pre#code-block-4810.rouge .ch, pre#code-block-4810.rouge .cd, pre#code-block-4810.rouge .cm, pre#code-block-4810.rouge .cp, pre#code-block-4810.rouge .cpf, pre#code-block-4810.rouge .c1, pre#code-block-4810.rouge .cs { color: #6e7781; } pre#code-block-4810.rouge .gl { color: #6e7781; } pre#code-block-4810.rouge .gt { color: #6e7781; } pre#code-block-4810.rouge .ni { color: #24292f; } pre#code-block-4810.rouge .si { color: #24292f; } pre#code-block-4810.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-4810.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def literalize name </h3> </div> Private helper class. Removes quotes from quoted strings </div> <pre id="code-block-8669" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">literalize</span> <span class="nb">name</span> <span class="nb">name</span> <span class="o">=</span> <span class="nb">name</span><span class="p">[</span><span class="mi">1</span><span class="o">..-</span><span class="mi">2</span><span class="p">]</span> <span class="k">if</span> <span class="nb">name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">?'</span> <span class="ow">or</span> <span class="nb">name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="sc">?"</span> <span class="c1">#'</span> <span class="nb">name</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-8669.rouge table td { padding: 5px; } pre#code-block-8669.rouge table pre { margin: 0; } pre#code-block-8669.rouge, pre#code-block-8669.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-8669.rouge .k, pre#code-block-8669.rouge .kd, pre#code-block-8669.rouge .kn, pre#code-block-8669.rouge .kp, pre#code-block-8669.rouge .kr, pre#code-block-8669.rouge .kt, pre#code-block-8669.rouge .kv { color: #cf222e; } pre#code-block-8669.rouge .gr { color: #f6f8fa; } pre#code-block-8669.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-8669.rouge .nb { color: #953800; } pre#code-block-8669.rouge .nc { color: #953800; } pre#code-block-8669.rouge .no { color: #953800; } pre#code-block-8669.rouge .nn { color: #953800; } pre#code-block-8669.rouge .sr { color: #116329; } pre#code-block-8669.rouge .na { color: #116329; } pre#code-block-8669.rouge .nt { color: #116329; } pre#code-block-8669.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-8669.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-8669.rouge .kc { color: #0550ae; } pre#code-block-8669.rouge .l, pre#code-block-8669.rouge .ld, pre#code-block-8669.rouge .m, pre#code-block-8669.rouge .mb, pre#code-block-8669.rouge .mf, pre#code-block-8669.rouge .mh, pre#code-block-8669.rouge .mi, pre#code-block-8669.rouge .il, pre#code-block-8669.rouge .mo, pre#code-block-8669.rouge .mx { color: #0550ae; } pre#code-block-8669.rouge .sb { color: #0550ae; } pre#code-block-8669.rouge .bp { color: #0550ae; } pre#code-block-8669.rouge .ne { color: #0550ae; } pre#code-block-8669.rouge .nl { color: #0550ae; } pre#code-block-8669.rouge .py { color: #0550ae; } pre#code-block-8669.rouge .nv, pre#code-block-8669.rouge .vc, pre#code-block-8669.rouge .vg, pre#code-block-8669.rouge .vi, pre#code-block-8669.rouge .vm { color: #0550ae; } pre#code-block-8669.rouge .o, pre#code-block-8669.rouge .ow { color: #0550ae; } pre#code-block-8669.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-8669.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-8669.rouge .s, pre#code-block-8669.rouge .sa, pre#code-block-8669.rouge .sc, pre#code-block-8669.rouge .dl, pre#code-block-8669.rouge .sd, pre#code-block-8669.rouge .s2, pre#code-block-8669.rouge .se, pre#code-block-8669.rouge .sh, pre#code-block-8669.rouge .sx, pre#code-block-8669.rouge .s1, pre#code-block-8669.rouge .ss { color: #0a3069; } pre#code-block-8669.rouge .nd { color: #8250df; } pre#code-block-8669.rouge .nf, pre#code-block-8669.rouge .fm { color: #8250df; } pre#code-block-8669.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-8669.rouge .c, pre#code-block-8669.rouge .ch, pre#code-block-8669.rouge .cd, pre#code-block-8669.rouge .cm, pre#code-block-8669.rouge .cp, pre#code-block-8669.rouge .cpf, pre#code-block-8669.rouge .c1, pre#code-block-8669.rouge .cs { color: #6e7781; } pre#code-block-8669.rouge .gl { color: #6e7781; } pre#code-block-8669.rouge .gt { color: #6e7781; } pre#code-block-8669.rouge .ni { color: #24292f; } pre#code-block-8669.rouge .si { color: #24292f; } pre#code-block-8669.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-8669.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def parent </h3> </div> <br>elements.parent == d.root # => true<br>elements = REXML::Elements.new(d.root)<br>d = REXML::Document.new(xml_string)<br><br>in the \Elements object.<br>This element is also the default starting point for searching<br>Returns the parent element cited in creating the \Elements object.<br><br>parent<br>:call-seq: </div> <pre id="code-block-6343" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">parent</span> <span class="vi">@element</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-6343.rouge table td { padding: 5px; } pre#code-block-6343.rouge table pre { margin: 0; } pre#code-block-6343.rouge, pre#code-block-6343.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-6343.rouge .k, pre#code-block-6343.rouge .kd, pre#code-block-6343.rouge .kn, pre#code-block-6343.rouge .kp, pre#code-block-6343.rouge .kr, pre#code-block-6343.rouge .kt, pre#code-block-6343.rouge .kv { color: #cf222e; } pre#code-block-6343.rouge .gr { color: #f6f8fa; } pre#code-block-6343.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-6343.rouge .nb { color: #953800; } pre#code-block-6343.rouge .nc { color: #953800; } pre#code-block-6343.rouge .no { color: #953800; } pre#code-block-6343.rouge .nn { color: #953800; } pre#code-block-6343.rouge .sr { color: #116329; } pre#code-block-6343.rouge .na { color: #116329; } pre#code-block-6343.rouge .nt { color: #116329; } pre#code-block-6343.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-6343.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-6343.rouge .kc { color: #0550ae; } pre#code-block-6343.rouge .l, pre#code-block-6343.rouge .ld, pre#code-block-6343.rouge .m, pre#code-block-6343.rouge .mb, pre#code-block-6343.rouge .mf, pre#code-block-6343.rouge .mh, pre#code-block-6343.rouge .mi, pre#code-block-6343.rouge .il, pre#code-block-6343.rouge .mo, pre#code-block-6343.rouge .mx { color: #0550ae; } pre#code-block-6343.rouge .sb { color: #0550ae; } pre#code-block-6343.rouge .bp { color: #0550ae; } pre#code-block-6343.rouge .ne { color: #0550ae; } pre#code-block-6343.rouge .nl { color: #0550ae; } pre#code-block-6343.rouge .py { color: #0550ae; } pre#code-block-6343.rouge .nv, pre#code-block-6343.rouge .vc, pre#code-block-6343.rouge .vg, pre#code-block-6343.rouge .vi, pre#code-block-6343.rouge .vm { color: #0550ae; } pre#code-block-6343.rouge .o, pre#code-block-6343.rouge .ow { color: #0550ae; } pre#code-block-6343.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-6343.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-6343.rouge .s, pre#code-block-6343.rouge .sa, pre#code-block-6343.rouge .sc, pre#code-block-6343.rouge .dl, pre#code-block-6343.rouge .sd, pre#code-block-6343.rouge .s2, pre#code-block-6343.rouge .se, pre#code-block-6343.rouge .sh, pre#code-block-6343.rouge .sx, pre#code-block-6343.rouge .s1, pre#code-block-6343.rouge .ss { color: #0a3069; } pre#code-block-6343.rouge .nd { color: #8250df; } pre#code-block-6343.rouge .nf, pre#code-block-6343.rouge .fm { color: #8250df; } pre#code-block-6343.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-6343.rouge .c, pre#code-block-6343.rouge .ch, pre#code-block-6343.rouge .cd, pre#code-block-6343.rouge .cm, pre#code-block-6343.rouge .cp, pre#code-block-6343.rouge .cpf, pre#code-block-6343.rouge .c1, pre#code-block-6343.rouge .cs { color: #6e7781; } pre#code-block-6343.rouge .gl { color: #6e7781; } pre#code-block-6343.rouge .gt { color: #6e7781; } pre#code-block-6343.rouge .ni { color: #24292f; } pre#code-block-6343.rouge .si { color: #24292f; } pre#code-block-6343.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-6343.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def size </h3> </div> <br>d.root.size # => 6 # Three elements plus three text nodes..<br>d.root.elements.size # => 3 # Three elements.<br>d = REXML::Document.new '<a>sean<b/>elliott<b/>russell<b/></a>'<br><br>Returns the count of \Element children:<br><br>size -> integer<br>:call-seq: </div> <pre id="code-block-1396" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">size</span> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span> <span class="vi">@element</span><span class="p">.</span><span class="nf">each</span> <span class="p">{</span><span class="o">|</span><span class="n">child</span><span class="o">|</span> <span class="n">count</span><span class="o">+=</span><span class="mi">1</span> <span class="k">if</span> <span class="n">child</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span> <span class="p">}</span> <span class="n">count</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-1396.rouge table td { padding: 5px; } pre#code-block-1396.rouge table pre { margin: 0; } pre#code-block-1396.rouge, pre#code-block-1396.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-1396.rouge .k, pre#code-block-1396.rouge .kd, pre#code-block-1396.rouge .kn, pre#code-block-1396.rouge .kp, pre#code-block-1396.rouge .kr, pre#code-block-1396.rouge .kt, pre#code-block-1396.rouge .kv { color: #cf222e; } pre#code-block-1396.rouge .gr { color: #f6f8fa; } pre#code-block-1396.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-1396.rouge .nb { color: #953800; } pre#code-block-1396.rouge .nc { color: #953800; } pre#code-block-1396.rouge .no { color: #953800; } pre#code-block-1396.rouge .nn { color: #953800; } pre#code-block-1396.rouge .sr { color: #116329; } pre#code-block-1396.rouge .na { color: #116329; } pre#code-block-1396.rouge .nt { color: #116329; } pre#code-block-1396.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-1396.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-1396.rouge .kc { color: #0550ae; } pre#code-block-1396.rouge .l, pre#code-block-1396.rouge .ld, pre#code-block-1396.rouge .m, pre#code-block-1396.rouge .mb, pre#code-block-1396.rouge .mf, pre#code-block-1396.rouge .mh, pre#code-block-1396.rouge .mi, pre#code-block-1396.rouge .il, pre#code-block-1396.rouge .mo, pre#code-block-1396.rouge .mx { color: #0550ae; } pre#code-block-1396.rouge .sb { color: #0550ae; } pre#code-block-1396.rouge .bp { color: #0550ae; } pre#code-block-1396.rouge .ne { color: #0550ae; } pre#code-block-1396.rouge .nl { color: #0550ae; } pre#code-block-1396.rouge .py { color: #0550ae; } pre#code-block-1396.rouge .nv, pre#code-block-1396.rouge .vc, pre#code-block-1396.rouge .vg, pre#code-block-1396.rouge .vi, pre#code-block-1396.rouge .vm { color: #0550ae; } pre#code-block-1396.rouge .o, pre#code-block-1396.rouge .ow { color: #0550ae; } pre#code-block-1396.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-1396.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-1396.rouge .s, pre#code-block-1396.rouge .sa, pre#code-block-1396.rouge .sc, pre#code-block-1396.rouge .dl, pre#code-block-1396.rouge .sd, pre#code-block-1396.rouge .s2, pre#code-block-1396.rouge .se, pre#code-block-1396.rouge .sh, pre#code-block-1396.rouge .sx, pre#code-block-1396.rouge .s1, pre#code-block-1396.rouge .ss { color: #0a3069; } pre#code-block-1396.rouge .nd { color: #8250df; } pre#code-block-1396.rouge .nf, pre#code-block-1396.rouge .fm { color: #8250df; } pre#code-block-1396.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-1396.rouge .c, pre#code-block-1396.rouge .ch, pre#code-block-1396.rouge .cd, pre#code-block-1396.rouge .cm, pre#code-block-1396.rouge .cp, pre#code-block-1396.rouge .cpf, pre#code-block-1396.rouge .c1, pre#code-block-1396.rouge .cs { color: #6e7781; } pre#code-block-1396.rouge .gl { color: #6e7781; } pre#code-block-1396.rouge .gt { color: #6e7781; } pre#code-block-1396.rouge .ni { color: #24292f; } pre#code-block-1396.rouge .si { color: #24292f; } pre#code-block-1396.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-1396.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> <div class="mt-6 overflow-scroll"> <div class="mt-6 mb-3"> <div class="border-b border-gray-300 pb-2 mb-4"> <h3 class="fs-step-1 font-medium tracking-tight monospace-font-family">def to_a( xpath=nil ) </h3> </div> <br>elements.to_a('//c') # => [<c/>]<br><br>that match the xpath:<br>With argument +xpath+, returns an array of element children<br><br>children # => ["sean", <b/>, "elliott", <c/>] # Includes non-element children.<br>children = d.root.children<br>elements.to_a # => [<b/>, <c/>] # Omits non-element children.<br>elements = d.root.elements<br>d = REXML::Document.new '<a>sean<b/>elliott<c/></a>'<br><br>With no argument, returns an array of all element children:<br><br>Returns an array of element children (not including non-element children).<br><br>to_a(xpath = nil) -> array_of_elements<br>:call-seq: </div> <pre id="code-block-3908" class="rouge border border-gray-300 rounded overflow-scroll px-4 py-2"><span class="k">def</span> <span class="nf">to_a</span><span class="p">(</span> <span class="n">xpath</span><span class="o">=</span><span class="kp">nil</span> <span class="p">)</span> <span class="n">rv</span> <span class="o">=</span> <span class="no">XPath</span><span class="p">.</span><span class="nf">match</span><span class="p">(</span> <span class="vi">@element</span><span class="p">,</span> <span class="n">xpath</span> <span class="p">)</span> <span class="k">return</span> <span class="n">rv</span><span class="p">.</span><span class="nf">find_all</span><span class="p">{</span><span class="o">|</span><span class="n">e</span><span class="o">|</span> <span class="n">e</span><span class="p">.</span><span class="nf">kind_of?</span> <span class="no">Element</span><span class="p">}</span> <span class="k">if</span> <span class="n">xpath</span> <span class="n">rv</span> <span class="k">end</span></pre> <style type="text/css"> pre#code-block-3908.rouge table td { padding: 5px; } pre#code-block-3908.rouge table pre { margin: 0; } pre#code-block-3908.rouge, pre#code-block-3908.rouge .w { color: #24292f; background-color: #f6f8fa; } pre#code-block-3908.rouge .k, pre#code-block-3908.rouge .kd, pre#code-block-3908.rouge .kn, pre#code-block-3908.rouge .kp, pre#code-block-3908.rouge .kr, pre#code-block-3908.rouge .kt, pre#code-block-3908.rouge .kv { color: #cf222e; } pre#code-block-3908.rouge .gr { color: #f6f8fa; } pre#code-block-3908.rouge .gd { color: #82071e; background-color: #ffebe9; } pre#code-block-3908.rouge .nb { color: #953800; } pre#code-block-3908.rouge .nc { color: #953800; } pre#code-block-3908.rouge .no { color: #953800; } pre#code-block-3908.rouge .nn { color: #953800; } pre#code-block-3908.rouge .sr { color: #116329; } pre#code-block-3908.rouge .na { color: #116329; } pre#code-block-3908.rouge .nt { color: #116329; } pre#code-block-3908.rouge .gi { color: #116329; background-color: #dafbe1; } pre#code-block-3908.rouge .ges { font-weight: bold; font-style: italic; } pre#code-block-3908.rouge .kc { color: #0550ae; } pre#code-block-3908.rouge .l, pre#code-block-3908.rouge .ld, pre#code-block-3908.rouge .m, pre#code-block-3908.rouge .mb, pre#code-block-3908.rouge .mf, pre#code-block-3908.rouge .mh, pre#code-block-3908.rouge .mi, pre#code-block-3908.rouge .il, pre#code-block-3908.rouge .mo, pre#code-block-3908.rouge .mx { color: #0550ae; } pre#code-block-3908.rouge .sb { color: #0550ae; } pre#code-block-3908.rouge .bp { color: #0550ae; } pre#code-block-3908.rouge .ne { color: #0550ae; } pre#code-block-3908.rouge .nl { color: #0550ae; } pre#code-block-3908.rouge .py { color: #0550ae; } pre#code-block-3908.rouge .nv, pre#code-block-3908.rouge .vc, pre#code-block-3908.rouge .vg, pre#code-block-3908.rouge .vi, pre#code-block-3908.rouge .vm { color: #0550ae; } pre#code-block-3908.rouge .o, pre#code-block-3908.rouge .ow { color: #0550ae; } pre#code-block-3908.rouge .gh { color: #0550ae; font-weight: bold; } pre#code-block-3908.rouge .gu { color: #0550ae; font-weight: bold; } pre#code-block-3908.rouge .s, pre#code-block-3908.rouge .sa, pre#code-block-3908.rouge .sc, pre#code-block-3908.rouge .dl, pre#code-block-3908.rouge .sd, pre#code-block-3908.rouge .s2, pre#code-block-3908.rouge .se, pre#code-block-3908.rouge .sh, pre#code-block-3908.rouge .sx, pre#code-block-3908.rouge .s1, pre#code-block-3908.rouge .ss { color: #0a3069; } pre#code-block-3908.rouge .nd { color: #8250df; } pre#code-block-3908.rouge .nf, pre#code-block-3908.rouge .fm { color: #8250df; } pre#code-block-3908.rouge .err { color: #f6f8fa; background-color: #82071e; } pre#code-block-3908.rouge .c, pre#code-block-3908.rouge .ch, pre#code-block-3908.rouge .cd, pre#code-block-3908.rouge .cm, pre#code-block-3908.rouge .cp, pre#code-block-3908.rouge .cpf, pre#code-block-3908.rouge .c1, pre#code-block-3908.rouge .cs { color: #6e7781; } pre#code-block-3908.rouge .gl { color: #6e7781; } pre#code-block-3908.rouge .gt { color: #6e7781; } pre#code-block-3908.rouge .ni { color: #24292f; } pre#code-block-3908.rouge .si { color: #24292f; } pre#code-block-3908.rouge .ge { color: #24292f; font-style: italic; } pre#code-block-3908.rouge .gs { color: #24292f; font-weight: bold; } </style> </div> </div> </div> </div> </main> </div> <div class="overflow-hidden mt-6 hidden xl:block"> <div class="block truncate col-span-1 mb-6"> <h3 class="list-header">Namespace</h3> <ul class="list code"> <li><a href="/gems/rexml/v3.4.1/modules/REXML">REXML</a></li> </ul> </div> <div class="block truncate col-span-1 mb-6"> <h3 class="list-header">Included Modules</h3> <ul class="list code"> <li><a href="/gems/rexml/v3.4.1/modules/REXML::Elements::Enumerable">REXML::Elements::Enumerable</a></li> </ul> </div> <div class="block truncate col-span-1 mb-6"> <h3 class="list-header">Instance Methods</h3> <ul class="list code"> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/%5B%5D"># []</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/%5B%5D="># []=</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/add"># add</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/collect"># collect</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/delete"># delete</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/delete_all"># delete_all</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/each"># each</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/empty%3F"># empty?</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/index"># index</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/initialize"># initialize</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/inject"># inject</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/literalize"># literalize</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/parent"># parent</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/size"># size</a></li> <li><a href="/gems/rexml/v3.4.1/classes/REXML::Elements/instance_methods/to_a"># to_a</a></li> </ul> </div> <div class="block truncate col-span-1 mb-6"> <h3 class="list-header">Defined in</h3> <ul class="list code"> <li><a href="/gems/rexml/v3.4.1/files/lib%2Frexml%2Felement.rb">lib/rexml/element.rb</a></li> </ul> </div> </div> </div> </div> </main> </div> <footer class="bg-white"> <div class="mx-auto max-w-7xl overflow-hidden px-6 py-20 sm:py-24 lg:px-8"> <nav class="-mb-6 flex flex-wrap text-center justify-center gap-x-12" aria-label="Footer"> <div class="pb-6"> <a class="text-sm leading-6 text-gray-600 hover:text-gray-900" href="/">Home</a> </div> <div class="pb-6"> <a class="text-sm leading-6 text-gray-600 hover:text-gray-900" href="/gems">Gems</a> </div> <div class="pb-6"> <a class="text-sm leading-6 text-gray-600 hover:text-gray-900" href="/docs">Docs</a> </div> <div class="pb-6"> <a target="_blank" class="text-sm leading-6 text-gray-600 hover:text-gray-900" href="https://github.com/marcoroth/gem.sh">Contribute</a> </div> <div class="pb-6"> <a target="_blank" class="text-sm leading-6 text-gray-600 hover:text-gray-900" href="https://www.rorvswild.com/applications/136042/requests?utm_medium=referral&utm_source=gem.sh">Monitoring</a> </div> </nav> <div class="mt-8 flex justify-center space-x-6"> <a target="_blank" href="https://twitter.com/marcoroth_" class="text-gray-400 hover:text-gray-500"> <span class="sr-only">Twitter</span> <svg class="h-6 w-6" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"> <path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path> </svg> </a> <a target="_blank" href="https://github.com/marcoroth/gem.sh" class="text-gray-400 hover:text-gray-500"> <span class="sr-only">GitHub</span> <svg class="h-6 w-6" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"> <path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path> </svg> </a> <a target="_blank" href="https://ruby.social/@marcoroth" target="_blank" class="text-gray-400 hover:text-gray-500"> <span class="sr-only">Mastodon</span> <svg class="h-6 w-6" fill="currentColor" viewBox="0 0 16 16"> <path d="M11.19 12.195c2.016-.24 3.77-1.475 3.99-2.603.348-1.778.32-4.339.32-4.339 0-3.47-2.286-4.488-2.286-4.488C12.062.238 10.083.017 8.027 0h-.05C5.92.017 3.942.238 2.79.765c0 0-2.285 1.017-2.285 4.488l-.002.662c-.004.64-.007 1.35.011 2.091.083 3.394.626 6.74 3.78 7.57 1.454.383 2.703.463 3.709.408 1.823-.1 2.847-.647 2.847-.647l-.06-1.317s-1.303.41-2.767.36c-1.45-.05-2.98-.156-3.215-1.928a3.614 3.614 0 0 1-.033-.496s1.424.346 3.228.428c1.103.05 2.137-.064 3.188-.189zm1.613-2.47H11.13v-4.08c0-.859-.364-1.295-1.091-1.295-.804 0-1.207.517-1.207 1.541v2.233H7.168V5.89c0-1.024-.403-1.541-1.207-1.541-.727 0-1.091.436-1.091 1.296v4.079H3.197V5.522c0-.859.22-1.541.66-2.046.456-.505 1.052-.764 1.793-.764.856 0 1.504.328 1.933.983L8 4.39l.417-.695c.429-.655 1.077-.983 1.934-.983.74 0 1.336.259 1.791.764.442.505.661 1.187.661 2.046v4.203z"></path> </svg> </a> </div> <p class="mt-10 text-center text-xs leading-5 text-gray-500"> © 2025 gem.sh - Beautiful documentation for any Ruby gem </p> </div> </footer> </body> </html>