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

Reply via email to