From fd25ad45ce2f1f4f948f0734340e4703539bbe82 Mon Sep 17 00:00:00 2001 From: "Kobayasi, Hiroaki" Date: Mon, 12 Aug 2019 18:04:27 +0900 Subject: [PATCH] For [GH #161] - Emit symbol_range for ATT_TEXT too --- Lite/LRXML/AltTree.pm | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Lite/LRXML/AltTree.pm b/Lite/LRXML/AltTree.pm index 089c7e29..b45a9317 100755 --- a/Lite/LRXML/AltTree.pm +++ b/Lite/LRXML/AltTree.pm @@ -28,6 +28,7 @@ use YATT::Lite::Constants NODE_PATH NODE_BODY NODE_VALUE NODE_ATTLIST NODE_AELEM_HEAD NODE_AELEM_FOOT TYPE_ELEMENT TYPE_LCMSG + TYPE_ATT_TEXT TYPE_ATT_NESTED TYPE_COMMENT TYPE_ENTITY @@ -85,12 +86,21 @@ sub convert_tree { $altnode->{value} = $_->[NODE_ATTLIST]; } elsif ($_->[NODE_TYPE] == TYPE_ENTITY) { $altnode->{value} = [@{$_}[NODE_BODY .. $#$_]]; - } elsif (defined $_->[NODE_BODY] and ref $_->[NODE_BODY] eq 'ARRAY') { - $altnode->{subtree} = [$self->convert_tree( - $self->node_body_slot($_), $with_text - )]; } else { - $altnode->{value} = $_->[NODE_BODY]; + if ($_->[NODE_TYPE] == TYPE_ATT_TEXT) { + $altnode->{symbol_range} + = $self->make_range($_->[NODE_BEGIN] + , ($_->[NODE_BEGIN] + length($_->[NODE_PATH])) + , $_->[NODE_LNO]) + if defined $_->[NODE_BEGIN] and defined $_->[NODE_PATH]; + } + if (defined $_->[NODE_BODY] and ref $_->[NODE_BODY] eq 'ARRAY') { + $altnode->{subtree} = [$self->convert_tree( + $self->node_body_slot($_), $with_text + )]; + } else { + $altnode->{value} = $_->[NODE_BODY]; + } } } $altnode;