aboutsummaryrefslogtreecommitdiffstats
path: root/doc/phpdoc/js/jquery.xml2json.js
diff options
context:
space:
mode:
authorpiernov <piernov@piernov.org>2016-05-08 20:45:40 +0200
committerpiernov <piernov@piernov.org>2016-05-08 20:45:40 +0200
commit9f28616dfd1cc425c5013937bab729217b7be2e6 (patch)
treec08a53708a6f59374d56b872c4047cbf80c81e27 /doc/phpdoc/js/jquery.xml2json.js
parent07f9658d2fecc5f88cc27fba8502246a30d8fdc0 (diff)
downloadcandybox-9f28616dfd1cc425c5013937bab729217b7be2e6.tar.gz
candybox-9f28616dfd1cc425c5013937bab729217b7be2e6.tar.bz2
candybox-9f28616dfd1cc425c5013937bab729217b7be2e6.tar.xz
candybox-9f28616dfd1cc425c5013937bab729217b7be2e6.zip
Add build_doc.sh script + generated phpdoc
Diffstat (limited to 'doc/phpdoc/js/jquery.xml2json.js')
-rw-r--r--doc/phpdoc/js/jquery.xml2json.js193
1 files changed, 193 insertions, 0 deletions
diff --git a/doc/phpdoc/js/jquery.xml2json.js b/doc/phpdoc/js/jquery.xml2json.js
new file mode 100644
index 0000000..b8053ba
--- /dev/null
+++ b/doc/phpdoc/js/jquery.xml2json.js
@@ -0,0 +1,193 @@
+/*
+ ### jQuery XML to JSON Plugin v1.3 - 2013-02-18 ###
+ * http://www.fyneworks.com/ - diego@fyneworks.com
+ * Licensed under http://en.wikipedia.org/wiki/MIT_License
+ ###
+ Website: http://www.fyneworks.com/jquery/xml-to-json/
+*//*
+ # INSPIRED BY: http://www.terracoder.com/
+ AND: http://www.thomasfrank.se/xml_to_json.html
+ AND: http://www.kawa.net/works/js/xml/objtree-e.html
+*//*
+ This simple script converts XML (document of code) into a JSON object. It is the combination of 2
+ 'xml to json' great parsers (see below) which allows for both 'simple' and 'extended' parsing modes.
+*/
+// Avoid collisions
+;if(window.jQuery) (function($){
+
+ // Add function to jQuery namespace
+ $.extend({
+
+ // converts xml documents and xml text to json object
+ xml2json: function(xml, extended) {
+ if(!xml) return {}; // quick fail
+
+ //### PARSER LIBRARY
+ // Core function
+ function parseXML(node, simple){
+ if(!node) return null;
+ var txt = '', obj = null, att = null;
+ var nt = node.nodeType, nn = jsVar(node.localName || node.nodeName);
+ var nv = node.text || node.nodeValue || '';
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,nt,nv.length+' bytes']);
+ if(node.childNodes){
+ if(node.childNodes.length>0){
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'CHILDREN',node.childNodes]);
+ $.each(node.childNodes, function(n,cn){
+ var cnt = cn.nodeType, cnn = jsVar(cn.localName || cn.nodeName);
+ var cnv = cn.text || cn.nodeValue || '';
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>a',cnn,cnt,cnv]);
+ if(cnt == 8){
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>b',cnn,'COMMENT (ignore)']);
+ return; // ignore comment node
+ }
+ else if(cnt == 3 || cnt == 4 || !cnn){
+ // ignore white-space in between tags
+ if(cnv.match(/^\s+$/)){
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>c',cnn,'WHITE-SPACE (ignore)']);
+ return;
+ };
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>d',cnn,'TEXT']);
+ txt += cnv.replace(/^\s+/,'').replace(/\s+$/,'');
+ // make sure we ditch trailing spaces from markup
+ }
+ else{
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>e',cnn,'OBJECT']);
+ obj = obj || {};
+ if(obj[cnn]){
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>f',cnn,'ARRAY']);
+
+ // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
+ if(!obj[cnn].length) obj[cnn] = myArr(obj[cnn]);
+ obj[cnn] = myArr(obj[cnn]);
+
+ obj[cnn][ obj[cnn].length ] = parseXML(cn, true/* simple */);
+ obj[cnn].length = obj[cnn].length;
+ }
+ else{
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'node>g',cnn,'dig deeper...']);
+ obj[cnn] = parseXML(cn);
+ };
+ };
+ });
+ };//node.childNodes.length>0
+ };//node.childNodes
+ if(node.attributes){
+ if(node.attributes.length>0){
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'ATTRIBUTES',node.attributes])
+ att = {}; obj = obj || {};
+ $.each(node.attributes, function(a,at){
+ var atn = jsVar(at.name), atv = at.value;
+ att[atn] = atv;
+ if(obj[atn]){
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'attr>',atn,'ARRAY']);
+
+ // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
+ //if(!obj[atn].length) obj[atn] = myArr(obj[atn]);//[ obj[ atn ] ];
+ obj[cnn] = myArr(obj[cnn]);
+
+ obj[atn][ obj[atn].length ] = atv;
+ obj[atn].length = obj[atn].length;
+ }
+ else{
+ /*DBG*/ //if(window.console) console.log(['x2j',nn,'attr>',atn,'TEXT']);
+ obj[atn] = atv;
+ };
+ });
+ //obj['attributes'] = att;
+ };//node.attributes.length>0
+ };//node.attributes
+ if(obj){
+ obj = $.extend( (txt!='' ? new String(txt) : {}),/* {text:txt},*/ obj || {}/*, att || {}*/);
+ //txt = (obj.text) ? (typeof(obj.text)=='object' ? obj.text : [obj.text || '']).concat([txt]) : txt;
+ txt = (obj.text) ? ([obj.text || '']).concat([txt]) : txt;
+ if(txt) obj.text = txt;
+ txt = '';
+ };
+ var out = obj || txt;
+ //console.log([extended, simple, out]);
+ if(extended){
+ if(txt) out = {};//new String(out);
+ txt = out.text || txt || '';
+ if(txt) out.text = txt;
+ if(!simple) out = myArr(out);
+ };
+ return out;
+ };// parseXML
+ // Core Function End
+ // Utility functions
+ var jsVar = function(s){ return String(s || '').replace(/-/g,"_"); };
+
+ // NEW isNum function: 01/09/2010
+ // Thanks to Emile Grau, GigaTecnologies S.L., www.gigatransfer.com, www.mygigamail.com
+ function isNum(s){
+ // based on utility function isNum from xml2json plugin (http://www.fyneworks.com/ - diego@fyneworks.com)
+ // few bugs corrected from original function :
+ // - syntax error : regexp.test(string) instead of string.test(reg)
+ // - regexp modified to accept comma as decimal mark (latin syntax : 25,24 )
+ // - regexp modified to reject if no number before decimal mark : ".7" is not accepted
+ // - string is "trimmed", allowing to accept space at the beginning and end of string
+ var regexp=/^((-)?([0-9]+)(([\.\,]{0,1})([0-9]+))?$)/
+ return (typeof s == "number") || regexp.test(String((s && typeof s == "string") ? jQuery.trim(s) : ''));
+ };
+ // OLD isNum function: (for reference only)
+ //var isNum = function(s){ return (typeof s == "number") || String((s && typeof s == "string") ? s : '').test(/^((-)?([0-9]*)((\.{0,1})([0-9]+))?$)/); };
+
+ var myArr = function(o){
+
+ // http://forum.jquery.com/topic/jquery-jquery-xml2json-problems-when-siblings-of-the-same-tagname-only-have-a-textnode-as-a-child
+ //if(!o.length) o = [ o ]; o.length=o.length;
+ if(!$.isArray(o)) o = [ o ]; o.length=o.length;
+
+ // here is where you can attach additional functionality, such as searching and sorting...
+ return o;
+ };
+ // Utility functions End
+ //### PARSER LIBRARY END
+
+ // Convert plain text to xml
+ if(typeof xml=='string') xml = $.text2xml(xml);
+
+ // Quick fail if not xml (or if this is a node)
+ if(!xml.nodeType) return;
+ if(xml.nodeType == 3 || xml.nodeType == 4) return xml.nodeValue;
+
+ // Find xml root node
+ var root = (xml.nodeType == 9) ? xml.documentElement : xml;
+
+ // Convert xml to json
+ var out = parseXML(root, true /* simple */);
+
+ // Clean-up memory
+ xml = null; root = null;
+
+ // Send output
+ return out;
+ },
+
+ // Convert text to XML DOM
+ text2xml: function(str) {
+ // NOTE: I'd like to use jQuery for this, but jQuery makes all tags uppercase
+ //return $(xml)[0];
+
+ /* prior to jquery 1.9 */
+ /*
+ var out;
+ try{
+ var xml = ((!$.support.opacity && !$.support.style))?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser();
+ xml.async = false;
+ }catch(e){ throw new Error("XML Parser could not be instantiated") };
+ try{
+ if((!$.support.opacity && !$.support.style)) out = (xml.loadXML(str))?xml:false;
+ else out = xml.parseFromString(str, "text/xml");
+ }catch(e){ throw new Error("Error parsing XML string") };
+ return out;
+ */
+
+ /* jquery 1.9+ */
+ return $.parseXML(str);
+ }
+
+ }); // extend $
+
+})(jQuery);