| Clazz.declarePackage ("JSV.source"); | |
| Clazz.load (null, "JSV.source.XMLParser", ["java.lang.Character", "java.util.Hashtable", "JU.SB"], function () { | |
| c$ = Clazz.decorateAsClass (function () { | |
| this.thisEvent = null; | |
| this.buffer = null; | |
| if (!Clazz.isClassDefined ("JSV.source.XMLParser.DataBuffer")) { | |
| JSV.source.XMLParser.$XMLParser$DataBuffer$ (); | |
| } | |
| if (!Clazz.isClassDefined ("JSV.source.XMLParser.DataString")) { | |
| JSV.source.XMLParser.$XMLParser$DataString$ (); | |
| } | |
| if (!Clazz.isClassDefined ("JSV.source.XMLParser.XmlEvent")) { | |
| JSV.source.XMLParser.$XMLParser$XmlEvent$ (); | |
| } | |
| if (!Clazz.isClassDefined ("JSV.source.XMLParser.Tag")) { | |
| JSV.source.XMLParser.$XMLParser$Tag$ (); | |
| } | |
| Clazz.instantialize (this, arguments); | |
| }, JSV.source, "XMLParser"); | |
| Clazz.prepareFields (c$, function () { | |
| this.thisEvent = Clazz.innerTypeInstance (JSV.source.XMLParser.XmlEvent, this, null, 0); | |
| }); | |
| Clazz.makeConstructor (c$, | |
| function (br) { | |
| this.buffer = Clazz.innerTypeInstance (JSV.source.XMLParser.DataBuffer, this, null, br); | |
| }, "java.io.BufferedReader"); | |
| Clazz.defineMethod (c$, "getBufferData", | |
| function () { | |
| return (this.buffer == null ? null : this.buffer.data.toString ().substring (0, this.buffer.ptr)); | |
| }); | |
| Clazz.defineMethod (c$, "thisValue", | |
| function () { | |
| return this.buffer.nextEvent ().toString ().trim (); | |
| }); | |
| Clazz.defineMethod (c$, "qualifiedValue", | |
| function () { | |
| this.buffer.nextTag (); | |
| var value = this.buffer.nextEvent ().toString ().trim (); | |
| this.buffer.nextTag (); | |
| return value; | |
| }); | |
| Clazz.defineMethod (c$, "peek", | |
| function () { | |
| this.thisEvent = this.buffer.peek (); | |
| return this.thisEvent.getEventType (); | |
| }); | |
| Clazz.defineMethod (c$, "hasNext", | |
| function () { | |
| return this.buffer.hasNext (); | |
| }); | |
| Clazz.defineMethod (c$, "nextTag", | |
| function () { | |
| while ((this.thisEvent = this.buffer.nextTag ()).eventType == 6) { | |
| } | |
| }); | |
| Clazz.defineMethod (c$, "nextEvent", | |
| function () { | |
| this.thisEvent = this.buffer.nextEvent (); | |
| return this.thisEvent.getEventType (); | |
| }); | |
| Clazz.defineMethod (c$, "nextStartTag", | |
| function () { | |
| this.thisEvent = this.buffer.nextTag (); | |
| while (!this.thisEvent.isStartElement ()) this.thisEvent = this.buffer.nextTag (); | |
| }); | |
| Clazz.defineMethod (c$, "getTagName", | |
| function () { | |
| return this.thisEvent.getTagName (); | |
| }); | |
| Clazz.defineMethod (c$, "getTagType", | |
| function () { | |
| return this.thisEvent.getTagType (); | |
| }); | |
| Clazz.defineMethod (c$, "getEndTag", | |
| function () { | |
| return this.thisEvent.getTagName (); | |
| }); | |
| Clazz.defineMethod (c$, "nextValue", | |
| function () { | |
| this.buffer.nextTag (); | |
| return this.buffer.nextEvent ().toString ().trim (); | |
| }); | |
| Clazz.defineMethod (c$, "getAttributeList", | |
| function () { | |
| return this.thisEvent.toString ().toLowerCase (); | |
| }); | |
| Clazz.defineMethod (c$, "getAttrValueLC", | |
| function (key) { | |
| return this.getAttrValue (key).toLowerCase (); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "getAttrValue", | |
| function (name) { | |
| var a = this.thisEvent.getAttributeByName (name); | |
| return (a == null ? "" : a); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "getCharacters", | |
| function () { | |
| var sb = new JU.SB (); | |
| this.thisEvent = this.buffer.peek (); | |
| var eventType = this.thisEvent.getEventType (); | |
| while (eventType != 4) this.thisEvent = this.buffer.nextEvent (); | |
| while (eventType == 4) { | |
| this.thisEvent = this.buffer.nextEvent (); | |
| eventType = this.thisEvent.getEventType (); | |
| if (eventType == 4) sb.append (this.thisEvent.toString ()); | |
| } | |
| return sb.toString (); | |
| }); | |
| Clazz.defineMethod (c$, "requiresEndTag", | |
| function () { | |
| var tagType = this.thisEvent.getTagType (); | |
| return tagType != 3 && tagType != 6; | |
| }); | |
| c$.$XMLParser$DataBuffer$ = function () { | |
| Clazz.pu$h(self.c$); | |
| c$ = Clazz.decorateAsClass (function () { | |
| Clazz.prepareCallback (this, arguments); | |
| Clazz.instantialize (this, arguments); | |
| }, JSV.source.XMLParser, "DataBuffer", JSV.source.XMLParser.DataString, null, Clazz.innerTypeInstance (JSV.source.XMLParser.DataString, this, null, Clazz.inheritArgs)); | |
| Clazz.makeConstructor (c$, | |
| function (a) { | |
| Clazz.superConstructor (this, JSV.source.XMLParser.DataBuffer, []); | |
| this.reader = a; | |
| }, "java.io.BufferedReader"); | |
| Clazz.defineMethod (c$, "hasNext", | |
| function () { | |
| if (this.ptr == this.ptEnd) try { | |
| this.readLine (); | |
| } catch (e) { | |
| if (Clazz.exceptionOf (e, Exception)) { | |
| return false; | |
| } else { | |
| throw e; | |
| } | |
| } | |
| return this.ptr < this.ptEnd; | |
| }); | |
| Clazz.overrideMethod (c$, "readLine", | |
| function () { | |
| var a = this.reader.readLine (); | |
| if (a == null) { | |
| return false; | |
| }this.data.append (a + "\n"); | |
| this.ptEnd = this.data.length (); | |
| return true; | |
| }); | |
| Clazz.defineMethod (c$, "peek", | |
| function () { | |
| if (this.ptEnd - this.ptr < 2) try { | |
| this.readLine (); | |
| } catch (e) { | |
| if (Clazz.exceptionOf (e, Exception)) { | |
| return Clazz.innerTypeInstance (JSV.source.XMLParser.XmlEvent, this, null, 8); | |
| } else { | |
| throw e; | |
| } | |
| } | |
| var a = this.ptr; | |
| var b = Clazz.innerTypeInstance (JSV.source.XMLParser.XmlEvent, this, null, this); | |
| this.ptr = a; | |
| return b; | |
| }); | |
| Clazz.defineMethod (c$, "nextTag", | |
| function () { | |
| this.flush (); | |
| this.skipTo ('<', false); | |
| var a = Clazz.innerTypeInstance (JSV.source.XMLParser.XmlEvent, this, null, this); | |
| return a; | |
| }); | |
| Clazz.defineMethod (c$, "nextEvent", | |
| function () { | |
| this.flush (); | |
| return Clazz.innerTypeInstance (JSV.source.XMLParser.XmlEvent, this, null, this); | |
| }); | |
| c$ = Clazz.p0p (); | |
| }; | |
| c$.$XMLParser$DataString$ = function () { | |
| Clazz.pu$h(self.c$); | |
| c$ = Clazz.decorateAsClass (function () { | |
| Clazz.prepareCallback (this, arguments); | |
| this.data = null; | |
| this.reader = null; | |
| this.ptr = 0; | |
| this.ptEnd = 0; | |
| Clazz.instantialize (this, arguments); | |
| }, JSV.source.XMLParser, "DataString"); | |
| Clazz.makeConstructor (c$, | |
| function () { | |
| this.data = new JU.SB (); | |
| }); | |
| Clazz.makeConstructor (c$, | |
| function (a) { | |
| this.data = a; | |
| this.ptEnd = a.length (); | |
| }, "JU.SB"); | |
| Clazz.defineMethod (c$, "getNCharactersRemaining", | |
| function () { | |
| return this.ptEnd - this.ptr; | |
| }); | |
| Clazz.defineMethod (c$, "flush", | |
| function () { | |
| if (this.data.length () < 1000 || this.ptEnd - this.ptr > 100) return; | |
| this.data = new JU.SB ().append (this.data.substring (this.ptr)); | |
| this.ptr = 0; | |
| this.ptEnd = this.data.length (); | |
| }); | |
| Clazz.defineMethod (c$, "substring", | |
| function (a, b) { | |
| return this.data.toString ().substring (a, b); | |
| }, "~N,~N"); | |
| Clazz.defineMethod (c$, "skipOver", | |
| function (a, b) { | |
| if (this.skipTo (a, b) > 0 && this.ptr != this.ptEnd) { | |
| this.ptr++; | |
| }return this.ptr; | |
| }, "~S,~B"); | |
| Clazz.defineMethod (c$, "skipTo", | |
| function (a, b) { | |
| if (this.data == null) return -1; | |
| var c; | |
| if (this.ptr == this.ptEnd) { | |
| if (this.reader == null) return -1; | |
| this.readLine (); | |
| }var d = this.ptEnd - 1; | |
| while (this.ptr < this.ptEnd && (c = this.data.charAt (this.ptr)) != a) { | |
| if (b && c == '\\' && this.ptr < d) { | |
| if ((c = this.data.charAt (this.ptr + 1)) == '"' || c == '\\') this.ptr++; | |
| } else if (c == '"') { | |
| this.ptr++; | |
| if (this.skipTo ('"', true) < 0) return -1; | |
| }if (++this.ptr == this.ptEnd) { | |
| if (this.reader == null) return -1; | |
| this.readLine (); | |
| }} | |
| return this.ptr; | |
| }, "~S,~B"); | |
| Clazz.defineMethod (c$, "readLine", | |
| function () { | |
| return false; | |
| }); | |
| c$ = Clazz.p0p (); | |
| }; | |
| c$.$XMLParser$XmlEvent$ = function () { | |
| Clazz.pu$h(self.c$); | |
| c$ = Clazz.decorateAsClass (function () { | |
| Clazz.prepareCallback (this, arguments); | |
| this.eventType = 0; | |
| this.ptr = 0; | |
| this.tag = null; | |
| this.data = null; | |
| Clazz.instantialize (this, arguments); | |
| }, JSV.source.XMLParser, "XmlEvent"); | |
| Clazz.overrideMethod (c$, "toString", | |
| function () { | |
| return (this.data != null ? this.data : this.tag != null ? this.tag.text : null); | |
| }); | |
| Clazz.makeConstructor (c$, | |
| function (a) { | |
| this.eventType = a; | |
| }, "~N"); | |
| Clazz.makeConstructor (c$, | |
| function (a) { | |
| this.ptr = a.ptr; | |
| var b = a.getNCharactersRemaining (); | |
| this.eventType = (b == 0 ? 8 : b == 1 || a.data.charAt (a.ptr) != '<' ? 4 : a.data.charAt (a.ptr + 1) != '/' ? 1 : 2); | |
| if (this.eventType == 8) return; | |
| if (this.eventType == 4) { | |
| a.skipTo ('<', false); | |
| this.data = a.data.toString ().substring (this.ptr, a.ptr); | |
| } else { | |
| a.skipOver ('>', false); | |
| var c = a.data.toString ().substring (this.ptr, a.ptr); | |
| if (c.startsWith ("<!--")) this.eventType = 6; | |
| this.tag = Clazz.innerTypeInstance (JSV.source.XMLParser.Tag, this, null, c); | |
| }}, "JSV.source.XMLParser.DataBuffer"); | |
| Clazz.defineMethod (c$, "getEventType", | |
| function () { | |
| return this.eventType; | |
| }); | |
| Clazz.defineMethod (c$, "isStartElement", | |
| function () { | |
| return (this.eventType & 1) != 0; | |
| }); | |
| Clazz.defineMethod (c$, "getTagName", | |
| function () { | |
| return (this.tag == null ? null : this.tag.getName ()); | |
| }); | |
| Clazz.defineMethod (c$, "getTagType", | |
| function () { | |
| return (this.tag == null ? 0 : this.tag.tagType); | |
| }); | |
| Clazz.defineMethod (c$, "getAttributeByName", | |
| function (a) { | |
| return (this.tag == null ? null : this.tag.getAttributeByName (a)); | |
| }, "~S"); | |
| c$ = Clazz.p0p (); | |
| }; | |
| c$.$XMLParser$Tag$ = function () { | |
| Clazz.pu$h(self.c$); | |
| c$ = Clazz.decorateAsClass (function () { | |
| Clazz.prepareCallback (this, arguments); | |
| this.tagType = 0; | |
| this.name = null; | |
| this.text = null; | |
| this.attributes = null; | |
| Clazz.instantialize (this, arguments); | |
| }, JSV.source.XMLParser, "Tag"); | |
| Clazz.makeConstructor (c$, | |
| function () { | |
| }); | |
| Clazz.makeConstructor (c$, | |
| function (a) { | |
| this.text = a; | |
| this.tagType = (a.startsWith ("<!--") ? 6 : a.charAt (1) == '/' ? 2 : a.charAt (a.length - 2) == '/' ? 3 : 1); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "getName", | |
| function () { | |
| if (this.name != null) return this.name; | |
| var a = (this.tagType == 2 ? 2 : 1); | |
| var b = this.text.length - (this.tagType == 3 ? 2 : 1); | |
| while (a < b && Character.isWhitespace (this.text.charAt (a))) a++; | |
| var c = a; | |
| while (a < b && !Character.isWhitespace (this.text.charAt (a))) a++; | |
| return this.name = this.text.substring (c, a).toLowerCase ().trim (); | |
| }); | |
| Clazz.defineMethod (c$, "getAttributeByName", | |
| function (a) { | |
| if (this.attributes == null) this.getAttributes (); | |
| return this.attributes.get (a.toLowerCase ()); | |
| }, "~S"); | |
| Clazz.defineMethod (c$, "getAttributes", | |
| function () { | |
| this.attributes = new java.util.Hashtable (); | |
| var a = Clazz.innerTypeInstance (JSV.source.XMLParser.DataString, this, null, new JU.SB ().append (this.text)); | |
| try { | |
| if (a.skipTo (' ', false) < 0) return; | |
| var b; | |
| while ((b = ++a.ptr) >= 0) { | |
| if (a.skipTo ('=', false) < 0) return; | |
| var c = a.substring (b, a.ptr).trim ().toLowerCase (); | |
| a.skipTo ('"', false); | |
| b = ++a.ptr; | |
| a.skipTo ('"', true); | |
| var d = a.substring (b, a.ptr); | |
| this.attributes.put (c, d); | |
| var e = c.indexOf (":"); | |
| if (e >= 0) { | |
| c = c.substring (e).trim (); | |
| this.attributes.put (c, d); | |
| }} | |
| } catch (e) { | |
| if (Clazz.exceptionOf (e, Exception)) { | |
| } else { | |
| throw e; | |
| } | |
| } | |
| }); | |
| c$ = Clazz.p0p (); | |
| }; | |
| Clazz.defineStatics (c$, | |
| "TAG_NONE", 0, | |
| "START_ELEMENT", 1, | |
| "END_ELEMENT", 2, | |
| "START_END_ELEMENT", 3, | |
| "CHARACTERS", 4, | |
| "COMMENT", 6, | |
| "EOF", 8); | |
| }); | |