Bienvenue sur PostGIS.fr

Bienvenue sur PostGIS.fr , le site de la communauté des utilisateurs francophones de PostGIS.

PostGIS ajoute le support d'objets géographique à la base de données PostgreSQL. En effet, PostGIS "spatialise" le serverur PostgreSQL, ce qui permet de l'utiliser comme une base de données SIG.

Maintenu à jour, en fonction de nos disponibilités et des diverses sorties des outils que nous testons, nous vous proposons l'ensemble de nos travaux publiés en langue française.

source: trunk/workshop-routing-foss4g/web/ext/src/ext-core/src/util/JSON.js @ 76

Revision 76, 6.2 KB checked in by djay, 12 years ago (diff)

Ajout du répertoire web

  • Property svn:executable set to *
Line 
1/*!
2 * Ext JS Library 3.4.0
3 * Copyright(c) 2006-2011 Sencha Inc.
4 * licensing@sencha.com
5 * http://www.sencha.com/license
6 */
7/**
8 * @class Ext.util.JSON
9 * Modified version of Douglas Crockford"s json.js that doesn"t
10 * mess with the Object prototype
11 * http://www.json.org/js.html
12 * @singleton
13 */
14Ext.util.JSON = new (function(){
15    var useHasOwn = !!{}.hasOwnProperty,
16        isNative = function() {
17            var useNative = null;
18
19            return function() {
20                if (useNative === null) {
21                    useNative = Ext.USE_NATIVE_JSON && window.JSON && JSON.toString() == '[object JSON]';
22                }
23       
24                return useNative;
25            };
26        }(),
27        pad = function(n) {
28            return n < 10 ? "0" + n : n;
29        },
30        doDecode = function(json){
31            return json ? eval("(" + json + ")") : "";   
32        },
33        doEncode = function(o){
34            if(!Ext.isDefined(o) || o === null){
35                return "null";
36            }else if(Ext.isArray(o)){
37                return encodeArray(o);
38            }else if(Ext.isDate(o)){
39                return Ext.util.JSON.encodeDate(o);
40            }else if(Ext.isString(o)){
41                return encodeString(o);
42            }else if(typeof o == "number"){
43                //don't use isNumber here, since finite checks happen inside isNumber
44                return isFinite(o) ? String(o) : "null";
45            }else if(Ext.isBoolean(o)){
46                return String(o);
47            }else {
48                var a = ["{"], b, i, v;
49                for (i in o) {
50                    // don't encode DOM objects
51                    if(!o.getElementsByTagName){
52                        if(!useHasOwn || o.hasOwnProperty(i)) {
53                            v = o[i];
54                            switch (typeof v) {
55                            case "undefined":
56                            case "function":
57                            case "unknown":
58                                break;
59                            default:
60                                if(b){
61                                    a.push(',');
62                                }
63                                a.push(doEncode(i), ":",
64                                        v === null ? "null" : doEncode(v));
65                                b = true;
66                            }
67                        }
68                    }
69                }
70                a.push("}");
71                return a.join("");
72            }   
73        },
74        m = {
75            "\b": '\\b',
76            "\t": '\\t',
77            "\n": '\\n',
78            "\f": '\\f',
79            "\r": '\\r',
80            '"' : '\\"',
81            "\\": '\\\\'
82        },
83        encodeString = function(s){
84            if (/["\\\x00-\x1f]/.test(s)) {
85                return '"' + s.replace(/([\x00-\x1f\\"])/g, function(a, b) {
86                    var c = m[b];
87                    if(c){
88                        return c;
89                    }
90                    c = b.charCodeAt();
91                    return "\\u00" +
92                        Math.floor(c / 16).toString(16) +
93                        (c % 16).toString(16);
94                }) + '"';
95            }
96            return '"' + s + '"';
97        },
98        encodeArray = function(o){
99            var a = ["["], b, i, l = o.length, v;
100                for (i = 0; i < l; i += 1) {
101                    v = o[i];
102                    switch (typeof v) {
103                        case "undefined":
104                        case "function":
105                        case "unknown":
106                            break;
107                        default:
108                            if (b) {
109                                a.push(',');
110                            }
111                            a.push(v === null ? "null" : Ext.util.JSON.encode(v));
112                            b = true;
113                    }
114                }
115                a.push("]");
116                return a.join("");
117        };
118
119    /**
120     * <p>Encodes a Date. This returns the actual string which is inserted into the JSON string as the literal expression.
121     * <b>The returned value includes enclosing double quotation marks.</b></p>
122     * <p>The default return format is "yyyy-mm-ddThh:mm:ss".</p>
123     * <p>To override this:</p><pre><code>
124Ext.util.JSON.encodeDate = function(d) {
125    return d.format('"Y-m-d"');
126};
127</code></pre>
128     * @param {Date} d The Date to encode
129     * @return {String} The string literal to use in a JSON string.
130     */
131    this.encodeDate = function(o){
132        return '"' + o.getFullYear() + "-" +
133                pad(o.getMonth() + 1) + "-" +
134                pad(o.getDate()) + "T" +
135                pad(o.getHours()) + ":" +
136                pad(o.getMinutes()) + ":" +
137                pad(o.getSeconds()) + '"';
138    };
139
140    /**
141     * Encodes an Object, Array or other value
142     * @param {Mixed} o The variable to encode
143     * @return {String} The JSON string
144     */
145    this.encode = function() {
146        var ec;
147        return function(o) {
148            if (!ec) {
149                // setup encoding function on first access
150                ec = isNative() ? JSON.stringify : doEncode;
151            }
152            return ec(o);
153        };
154    }();
155
156
157    /**
158     * Decodes (parses) a JSON string to an object. If the JSON is invalid, this function throws a SyntaxError unless the safe option is set.
159     * @param {String} json The JSON string
160     * @return {Object} The resulting object
161     */
162    this.decode = function() {
163        var dc;
164        return function(json) {
165            if (!dc) {
166                // setup decoding function on first access
167                dc = isNative() ? JSON.parse : doDecode;
168            }
169            return dc(json);
170        };
171    }();
172
173})();
174/**
175 * Shorthand for {@link Ext.util.JSON#encode}
176 * @param {Mixed} o The variable to encode
177 * @return {String} The JSON string
178 * @member Ext
179 * @method encode
180 */
181Ext.encode = Ext.util.JSON.encode;
182/**
183 * Shorthand for {@link Ext.util.JSON#decode}
184 * @param {String} json The JSON string
185 * @param {Boolean} safe (optional) Whether to return null or throw an exception if the JSON is invalid.
186 * @return {Object} The resulting object
187 * @member Ext
188 * @method decode
189 */
190Ext.decode = Ext.util.JSON.decode;
Note: See TracBrowser for help on using the repository browser.