comparison 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
comparison
equal deleted inserted replaced
1789:bac27b119ff2 1790:a8c685a894b4
1 require "java"
2 local XmlParser = require "java:goodjava.xml.XmlParser"
3 local XmlElement = require "java:goodjava.xml.XmlElement"
4 local Luan = require "luan:Luan.luan"
5 local error = Luan.error
6 local set_metatable = Luan.set_metatable or error()
7
8
9 local Xml = {}
10
11 Xml.encode = XmlElement.encode
12
13 local function new(java,mt)
14 local t = {}
15 t.java = java
16 set_metatable(t,mt)
17 return t
18 end
19
20 local element_mt = {}
21
22 local xml_mt = {}
23 function xml_mt.__index(xml,key)
24 if key == "element" then
25 return new( xml.java.element, element_mt )
26 end
27 if key == "declaration" then
28 return xml.java.declaration
29 end
30 return nil
31 end
32 function xml_mt.__new_index(xml,key,value)
33 if key == "element" then
34 xml.java.setElement( value.java )
35 elseif key == "declaration" then
36 xml.java.declaration = value
37 else
38 error("invalid key: "..key)
39 end
40 end
41 function xml_mt.__to_string(xml)
42 return xml.java.toString()
43 end
44
45 function Xml.parse(text)
46 return new( XmlParser.parse(text), xml_mt )
47 end
48
49 return Xml