Mercurial Hosting > luan
diff src/luan/modules/Xml.luan @ 1790:a8c685a894b4
start xml work
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 25 Dec 2023 23:07:59 -0700 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/luan/modules/Xml.luan Mon Dec 25 23:07:59 2023 -0700 @@ -0,0 +1,49 @@ +require "java" +local XmlParser = require "java:goodjava.xml.XmlParser" +local XmlElement = require "java:goodjava.xml.XmlElement" +local Luan = require "luan:Luan.luan" +local error = Luan.error +local set_metatable = Luan.set_metatable or error() + + +local Xml = {} + +Xml.encode = XmlElement.encode + +local function new(java,mt) + local t = {} + t.java = java + set_metatable(t,mt) + return t +end + +local element_mt = {} + +local xml_mt = {} +function xml_mt.__index(xml,key) + if key == "element" then + return new( xml.java.element, element_mt ) + end + if key == "declaration" then + return xml.java.declaration + end + return nil +end +function xml_mt.__new_index(xml,key,value) + if key == "element" then + xml.java.setElement( value.java ) + elseif key == "declaration" then + xml.java.declaration = value + else + error("invalid key: "..key) + end +end +function xml_mt.__to_string(xml) + return xml.java.toString() +end + +function Xml.parse(text) + return new( XmlParser.parse(text), xml_mt ) +end + +return Xml