view 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 source

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