Mercurial Hosting > luan
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 |