Skip to content

Commit cc68117

Browse files
author
Aleksei Konovkin
committed
Added release method to simple exclude node from document
1 parent 00bb340 commit cc68117

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

xmlua/element.lua

+5
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,11 @@ function methods:insert_element(position, name, attributes)
255255
end
256256
end
257257

258+
function methods:release()
259+
local released_node = Node.release(self)
260+
return Element.new(nil, released_node)
261+
end
262+
258263
function methods:unlink()
259264
local unlinked_node = Node.unlink(self)
260265
return Element.new(nil, unlinked_node)

xmlua/libxml2.lua

+4
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,10 @@ function libxml2.xmlUnlinkNode(node)
576576
return ffi.gc(node, xml2.xmlFreeNode)
577577
end
578578

579+
function libxml2.xmlReleaseNode(node)
580+
xml2.xmlUnlinkNode(node)
581+
return ffi.gc(node, xml2.xmlFreeNode)
582+
end
579583

580584
function libxml2.xmlBufferCreate()
581585
return ffi.gc(xml2.xmlBufferCreate(), xml2.xmlBufferFree)

xmlua/node-set.lua

+6
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ function methods:unlink()
121121
end
122122
end
123123

124+
function methods:release()
125+
for _, node in ipairs(self) do
126+
node:release()
127+
end
128+
end
129+
124130
local function is_included(node_set, search_node)
125131
for _, node in ipairs(node_set) do
126132
if node.node == search_node.node then

xmlua/node.lua

+5
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,9 @@ end
3838
function Node:unlink()
3939
return libxml2.xmlUnlinkNode(self.node)
4040
end
41+
42+
function Node:release()
43+
return libxml2.xmlReleaseNode(self.node)
44+
end
45+
4146
return Node

0 commit comments

Comments
 (0)