diff --git a/lib/oga/xml/parser.y b/lib/oga/xml/parser.y index 5249511..0492912 100644 --- a/lib/oga/xml/parser.y +++ b/lib/oga/xml/parser.y @@ -103,12 +103,7 @@ rule element : element_start expressions T_ELEM_END { - element = val[0] - element.children = val[1] ? val[1].flatten : [] - - link_children(element) - - element + on_element_children(val[0], val[1] ? val[1].flatten : []) } ; @@ -333,6 +328,19 @@ Unexpected #{name} with value #{value.inspect} on line #{@line}: return element end + ## + # @param [Oga::XML::Element] element + # @param [Array] children + # @return [Oga::XML::Element] + # + def on_element_children(element, children = []) + element.children = children + + link_children(element) + + return element + end + ## # @param [Array] pairs # @return [Hash]