OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /v/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-src Date: 29-Jun-2006 08:42:33 Branch: HEAD Handle: 2006062907423300 Added files: openpkg-src/json json.patch Modified files: openpkg-src/json json.spec Log: The JSON JavaScript interface is very elegant but breaks at least Yahoo User Interface library and all similar code which iterates over all properties of an object or array. So, provide an explicit JSON.{encode,decode}() interface which always exist and let applications just delete the overloaded String/Object/Array methods if required. Summary: Revision Changes Path 1.1 +74 -0 openpkg-src/json/json.patch 1.11 +6 -4 openpkg-src/json/json.spec ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/json/json.patch ============================================================================ $ cvs diff -u -r0 -r1.1 json.patch --- /dev/null 2006-06-29 08:42:23 +0200 +++ json.patch 2006-06-29 08:42:33 +0200 @@ -0,0 +1,74 @@ +Index: json.js +--- json.js.orig 2006-06-29 08:25:57 +0200 ++++ json.js 2006-06-29 08:36:15 +0200 +@@ -4,22 +4,28 @@ + + This file adds these methods to JavaScript: + ++ JSON.encode(object) + object.toJSONString() + + This method produces a JSON text from an object. The + object must not contain any cyclical references. + ++ JSON.encode(array) + array.toJSONString() + + This method produces a JSON text from an array. The + array must not contain any cyclical references. + ++ JSON.decode(string) + string.parseJSON() + + This method parses a JSON text to produce an object or + array. It will return false if there is an error. + */ +-(function () { ++ ++var JSON = {}; ++ ++JSON.encode = function (obj) { + var m = { + '\b': '\\b', + '\t': '\\t', +@@ -99,22 +105,28 @@ + return '"' + x + '"'; + } + }; ++ return s.object(obj); ++}; + +- Object.prototype.toJSONString = function () { +- return s.object(this); +- }; +- +- Array.prototype.toJSONString = function () { +- return s.array(this); +- }; +-})(); +- +-String.prototype.parseJSON = function () { ++JSON.decode = function (str) { + try { + return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test( +- this.replace(/"(\\.|[^"\\])*"/g, ''))) && +- eval('(' + this + ')'); ++ str.replace(/"(\\.|[^"\\])*"/g, ''))) && ++ eval('(' + str + ')'); + } catch (e) { + return false; + } + }; ++ ++String.prototype.parseJSON = function () { ++ return JSON.decode(this); ++}; ++ ++Object.prototype.toJSONString = function () { ++ return JSON.encode(this); ++}; ++ ++Array.prototype.toJSONString = function () { ++ return JSON.encode(this); ++}; ++ @@ . patch -p0 <<'@@ .' Index: openpkg-src/json/json.spec ============================================================================ $ cvs diff -u -r1.10 -r1.11 json.spec --- openpkg-src/json/json.spec 22 Jun 2006 13:29:17 -0000 1.10 +++ openpkg-src/json/json.spec 29 Jun 2006 06:42:33 -0000 1.11 @@ -39,8 +39,8 @@ Class: EVAL Group: Language License: Open Source -Version: 20060622 -Release: 20060622 +Version: 20060629 +Release: 20060629 # list of sources Source0: http://oss.metaparadigm.com/json-c/json-c-%{V_api_c}.tar.gz @@ -48,6 +48,7 @@ Source2: http://www.cpan.org/authors/id/M/MA/MAKAMAKA/JSON-PC-%{V_api_pl2}.tar.gz Source3: ftp://ftp.openpkg.org/sources/CPY/VERSIONED/json/json-%{V_api_js}.js Source4: http://www.json.org/draft-crockford-jsonorg-json-%{V_draft}.txt +Patch0: json.patch # build information Prefix: %{l_prefix} @@ -93,6 +94,8 @@ %setup -q -c %setup -q -T -D -a 1 %setup -q -T -D -a 2 + cp %{SOURCE json-%{V_api_js}.js} json.js + %patch -p0 %build ( cd json-c-%{V_api_c} @@ -115,8 +118,7 @@ %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/share/json %{l_shtool} install -c -m 644 \ - %{SOURCE json-%{V_api_js}.js} \ - $RPM_BUILD_ROOT%{l_prefix}/share/json/json.js + json.js $RPM_BUILD_ROOT%{l_prefix}/share/json/ %{l_shtool} install -c -m 644 \ %{SOURCE draft-crockford-jsonorg-json-%{V_draft}.txt} \ $RPM_BUILD_ROOT%{l_prefix}/share/json/json.txt @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org