From 785ec26fe74a5dd7b371eaeb29db35a16f83c82e Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Mon, 28 Apr 2014 10:21:34 +0200 Subject: [PATCH] Create Element instances before recursing. --- lib/oga/xml/parser.y | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/oga/xml/parser.y b/lib/oga/xml/parser.y index 97bdb6b..5249511 100644 --- a/lib/oga/xml/parser.y +++ b/lib/oga/xml/parser.y @@ -97,10 +97,18 @@ rule | T_ELEM_START T_ELEM_NS T_ELEM_NAME { [val[1], val[2]] } ; + element_start + : element_open attributes { on_element(val[0][0], val[0][1], val[1]) } + element - : element_open attributes expressions T_ELEM_END + : element_start expressions T_ELEM_END { - on_element(val[0][0], val[0][1], val[1], val[2].flatten) + element = val[0] + element.children = val[1] ? val[1].flatten : [] + + link_children(element) + + element } ; @@ -322,8 +330,6 @@ Unexpected #{name} with value #{value.inspect} on line #{@line}: :children => children ) - link_children(element) - return element end