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