json 1.0.3-mswin32 → 1.0.4-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of json might be problematic. Click here for more details.
- data/CHANGES +6 -0
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/bin/prettify_json.rb +1 -1
- data/ext/json/ext/generator.so +0 -0
- data/ext/json/ext/generator/generator.c +18 -19
- data/ext/json/ext/generator/unicode.c +2 -2
- data/ext/json/ext/generator/unicode.h +13 -0
- data/ext/json/ext/parser.so +0 -0
- data/ext/json/ext/parser/parser.c +2 -2
- data/ext/json/ext/parser/parser.rl +2 -2
- data/ext/json/ext/parser/unicode.h +14 -0
- data/lib/json.rb +9 -3
- data/lib/json/common.rb +2 -1
- data/lib/json/version.rb +2 -1
- metadata +2 -2
    
        data/CHANGES
    CHANGED
    
    | @@ -1,3 +1,9 @@ | |
| 1 | 
            +
            2007-05-09 (1.0.4)
         | 
| 2 | 
            +
              * Applied a patch from Yui NARUSE <naruse@airemix.com> to make JSON compile
         | 
| 3 | 
            +
                under Ruby 1.9. Thank you very much for mailing it to me!
         | 
| 4 | 
            +
              * Made binary variants of JSON fail early, instead of falling back to the
         | 
| 5 | 
            +
                pure version. This should avoid overshadowing of eventual problems while
         | 
| 6 | 
            +
                loading of the binary.
         | 
| 1 7 | 
             
            2007-03-24 (1.0.3)
         | 
| 2 8 | 
             
              * Improved performance of pure variant a bit.
         | 
| 3 9 | 
             
              * The ext variant of this release supports the mswin32 platform. Ugh!
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1.0. | 
| 1 | 
            +
            1.0.4
         | 
    
        data/bin/prettify_json.rb
    CHANGED
    
    
    
        data/ext/json/ext/generator.so
    CHANGED
    
    | Binary file | 
| @@ -30,7 +30,6 @@ typedef struct JSON_Generator_StateStruct { | |
| 30 30 | 
             
            #define GET_STATE(self)                       \
         | 
| 31 31 | 
             
                JSON_Generator_State *state;              \
         | 
| 32 32 | 
             
                Data_Get_Struct(self, JSON_Generator_State, state);
         | 
| 33 | 
            -
            #define FUL(string) RSTRING(string)->len
         | 
| 34 33 |  | 
| 35 34 | 
             
            /* 
         | 
| 36 35 | 
             
             * Document-module: JSON::Ext::Generator
         | 
| @@ -55,19 +54,19 @@ static int hash_to_json_state_i(VALUE key, VALUE value, VALUE Vstate) | |
| 55 54 | 
             
                if (state->flag) {
         | 
| 56 55 | 
             
                    state->flag = 0;
         | 
| 57 56 | 
             
                    rb_str_buf_cat2(buf, ",");
         | 
| 58 | 
            -
                    if ( | 
| 57 | 
            +
                    if (RSTRING_LEN(state->object_nl)) rb_str_buf_append(buf, state->object_nl);
         | 
| 59 58 | 
             
                }
         | 
| 60 | 
            -
                if ( | 
| 59 | 
            +
                if (RSTRING_LEN(state->object_nl)) {
         | 
| 61 60 | 
             
                    rb_str_buf_append(buf, rb_str_times(state->indent, Vdepth));
         | 
| 62 61 | 
             
                }
         | 
| 63 62 | 
             
                json = rb_funcall(rb_funcall(key, i_to_s, 0), i_to_json, 2, Vstate, Vdepth);
         | 
| 64 63 | 
             
                rb_str_buf_append(buf, json);
         | 
| 65 64 | 
             
                OBJ_INFECT(buf, json);
         | 
| 66 | 
            -
                if ( | 
| 65 | 
            +
                if (RSTRING_LEN(state->space_before)) {
         | 
| 67 66 | 
             
                    rb_str_buf_append(buf, state->space_before);
         | 
| 68 67 | 
             
                }
         | 
| 69 68 | 
             
                rb_str_buf_cat2(buf, ":");
         | 
| 70 | 
            -
                if ( | 
| 69 | 
            +
                if (RSTRING_LEN(state->space)) rb_str_buf_append(buf, state->space);
         | 
| 71 70 | 
             
                json = rb_funcall(value, i_to_json, 2, Vstate, Vdepth);
         | 
| 72 71 | 
             
                state->flag = 1;
         | 
| 73 72 | 
             
                rb_str_buf_append(buf, json);
         | 
| @@ -88,10 +87,10 @@ inline static VALUE mHash_json_transfrom(VALUE self, VALUE Vstate, VALUE Vdepth) | |
| 88 87 | 
             
                state->depth = LONG2FIX(depth);
         | 
| 89 88 | 
             
                state->flag = 0;
         | 
| 90 89 | 
             
                rb_str_buf_cat2(result, "{");
         | 
| 91 | 
            -
                if ( | 
| 90 | 
            +
                if (RSTRING_LEN(state->object_nl)) rb_str_buf_append(result, state->object_nl);
         | 
| 92 91 | 
             
                rb_hash_foreach(self, hash_to_json_state_i, Vstate);
         | 
| 93 | 
            -
                if ( | 
| 94 | 
            -
                if ( | 
| 92 | 
            +
                if (RSTRING_LEN(state->object_nl)) rb_str_buf_append(result, state->object_nl);
         | 
| 93 | 
            +
                if (RSTRING_LEN(state->object_nl)) {
         | 
| 95 94 | 
             
                    rb_str_buf_append(result, rb_str_times(state->indent, Vdepth));
         | 
| 96 95 | 
             
                }
         | 
| 97 96 | 
             
                rb_str_buf_cat2(result, "}");
         | 
| @@ -103,7 +102,7 @@ static int hash_to_json_i(VALUE key, VALUE value, VALUE buf) | |
| 103 102 | 
             
                VALUE tmp;
         | 
| 104 103 |  | 
| 105 104 | 
             
                if (key == Qundef) return ST_CONTINUE;
         | 
| 106 | 
            -
                if ( | 
| 105 | 
            +
                if (RSTRING_LEN(buf) > 1) rb_str_buf_cat2(buf, ",");
         | 
| 107 106 | 
             
                tmp = rb_funcall(rb_funcall(key, i_to_s, 0), i_to_json, 0);
         | 
| 108 107 | 
             
                rb_str_buf_append(buf, tmp);
         | 
| 109 108 | 
             
                OBJ_INFECT(buf, tmp);
         | 
| @@ -157,7 +156,7 @@ static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self) | |
| 157 156 | 
             
            }
         | 
| 158 157 |  | 
| 159 158 | 
             
            inline static VALUE mArray_json_transfrom(VALUE self, VALUE Vstate, VALUE Vdepth) {
         | 
| 160 | 
            -
                long i, len =  | 
| 159 | 
            +
                long i, len = RARRAY_LEN(self);
         | 
| 161 160 | 
             
                VALUE shift, result;
         | 
| 162 161 | 
             
                long depth = NIL_P(Vdepth) ? 0 : FIX2LONG(Vdepth);
         | 
| 163 162 | 
             
                VALUE delim = rb_str_new2(",");
         | 
| @@ -167,13 +166,13 @@ inline static VALUE mArray_json_transfrom(VALUE self, VALUE Vstate, VALUE Vdepth | |
| 167 166 | 
             
                    VALUE self_id = rb_obj_id(self);
         | 
| 168 167 | 
             
                    rb_hash_aset(state->seen, self_id, Qtrue);
         | 
| 169 168 | 
             
                    result = rb_str_buf_new(len);
         | 
| 170 | 
            -
                    if ( | 
| 169 | 
            +
                    if (RSTRING_LEN(state->array_nl)) rb_str_append(delim, state->array_nl);
         | 
| 171 170 | 
             
                    shift = rb_str_times(state->indent, LONG2FIX(depth + 1));
         | 
| 172 171 |  | 
| 173 172 | 
             
                    rb_str_buf_cat2(result, "[");
         | 
| 174 173 | 
             
                    rb_str_buf_append(result, state->array_nl);
         | 
| 175 174 | 
             
                    for (i = 0;  i < len; i++) {
         | 
| 176 | 
            -
                        VALUE element =  | 
| 175 | 
            +
                        VALUE element = RARRAY_PTR(self)[i];
         | 
| 177 176 | 
             
                        if (RTEST(rb_hash_aref(state->seen, rb_obj_id(element)))) {
         | 
| 178 177 | 
             
                            rb_raise(eCircularDatastructure,
         | 
| 179 178 | 
             
                                    "circular data structures not supported!");
         | 
| @@ -183,7 +182,7 @@ inline static VALUE mArray_json_transfrom(VALUE self, VALUE Vstate, VALUE Vdepth | |
| 183 182 | 
             
                        rb_str_buf_append(result, shift);
         | 
| 184 183 | 
             
                        rb_str_buf_append(result, rb_funcall(element, i_to_json, 2, Vstate, LONG2FIX(depth + 1)));
         | 
| 185 184 | 
             
                    }
         | 
| 186 | 
            -
                    if ( | 
| 185 | 
            +
                    if (RSTRING_LEN(state->array_nl)) {
         | 
| 187 186 | 
             
                        rb_str_buf_append(result, state->array_nl);
         | 
| 188 187 | 
             
                        rb_str_buf_append(result, rb_str_times(state->indent, LONG2FIX(depth)));
         | 
| 189 188 | 
             
                    }
         | 
| @@ -191,20 +190,20 @@ inline static VALUE mArray_json_transfrom(VALUE self, VALUE Vstate, VALUE Vdepth | |
| 191 190 | 
             
                    rb_hash_delete(state->seen, self_id);
         | 
| 192 191 | 
             
                } else {
         | 
| 193 192 | 
             
                    result = rb_str_buf_new(len);
         | 
| 194 | 
            -
                    if ( | 
| 193 | 
            +
                    if (RSTRING_LEN(state->array_nl)) rb_str_append(delim, state->array_nl);
         | 
| 195 194 | 
             
                    shift = rb_str_times(state->indent, LONG2FIX(depth + 1));
         | 
| 196 195 |  | 
| 197 196 | 
             
                    rb_str_buf_cat2(result, "[");
         | 
| 198 197 | 
             
                    rb_str_buf_append(result, state->array_nl);
         | 
| 199 198 | 
             
                    for (i = 0;  i < len; i++) {
         | 
| 200 | 
            -
                        VALUE element =  | 
| 199 | 
            +
                        VALUE element = RARRAY_PTR(self)[i];
         | 
| 201 200 | 
             
                        OBJ_INFECT(result, element);
         | 
| 202 201 | 
             
                        if (i > 0) rb_str_buf_append(result, delim);
         | 
| 203 202 | 
             
                        rb_str_buf_append(result, shift);
         | 
| 204 203 | 
             
                        rb_str_buf_append(result, rb_funcall(element, i_to_json, 2, Vstate, LONG2FIX(depth + 1)));
         | 
| 205 204 | 
             
                    }
         | 
| 206 205 | 
             
                    rb_str_buf_append(result, state->array_nl);
         | 
| 207 | 
            -
                    if ( | 
| 206 | 
            +
                    if (RSTRING_LEN(state->array_nl)) {
         | 
| 208 207 | 
             
                        rb_str_buf_append(result, rb_str_times(state->indent, LONG2FIX(depth)));
         | 
| 209 208 | 
             
                    }
         | 
| 210 209 | 
             
                    rb_str_buf_cat2(result, "]");
         | 
| @@ -226,11 +225,11 @@ static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self) { | |
| 226 225 |  | 
| 227 226 | 
             
                rb_scan_args(argc, argv, "02", &Vstate, &Vdepth);
         | 
| 228 227 | 
             
                if (NIL_P(Vstate)) {
         | 
| 229 | 
            -
                    long i, len =  | 
| 228 | 
            +
                    long i, len = RARRAY_LEN(self);
         | 
| 230 229 | 
             
                    result = rb_str_buf_new(2 + 2 * len);
         | 
| 231 230 | 
             
                    rb_str_buf_cat2(result, "[");
         | 
| 232 231 | 
             
                    for (i = 0;  i < len; i++) {
         | 
| 233 | 
            -
                        VALUE element =  | 
| 232 | 
            +
                        VALUE element = RARRAY_PTR(self)[i];
         | 
| 234 233 | 
             
                        OBJ_INFECT(result, element);
         | 
| 235 234 | 
             
                        if (i > 0) rb_str_buf_cat2(result, ",");
         | 
| 236 235 | 
             
                        rb_str_buf_append(result, rb_funcall(element, i_to_json, 0));
         | 
| @@ -281,7 +280,7 @@ static VALUE mString_included_s(VALUE self, VALUE modul) { | |
| 281 280 | 
             
             */
         | 
| 282 281 | 
             
            static VALUE mString_to_json(int argc, VALUE *argv, VALUE self)
         | 
| 283 282 | 
             
            {
         | 
| 284 | 
            -
                VALUE result = rb_str_buf_new( | 
| 283 | 
            +
                VALUE result = rb_str_buf_new(RSTRING_LEN(self));
         | 
| 285 284 | 
             
                rb_str_buf_cat2(result, "\"");
         | 
| 286 285 | 
             
                JSON_convert_UTF8_to_JSON(result, self, strictConversion);
         | 
| 287 286 | 
             
                rb_str_buf_cat2(result, "\"");
         | 
| @@ -103,8 +103,8 @@ inline static unsigned char isLegalUTF8(const UTF8 *source, int length) | |
| 103 103 | 
             
            void JSON_convert_UTF8_to_JSON(VALUE buffer, VALUE string, ConversionFlags flags)
         | 
| 104 104 | 
             
            {
         | 
| 105 105 | 
             
                char buf[7];
         | 
| 106 | 
            -
                const UTF8* source = (UTF8 *)  | 
| 107 | 
            -
                const UTF8* sourceEnd = source +  | 
| 106 | 
            +
                const UTF8* source = (UTF8 *) RSTRING_PTR(string);
         | 
| 107 | 
            +
                const UTF8* sourceEnd = source + RSTRING_LEN(string);
         | 
| 108 108 |  | 
| 109 109 | 
             
                while (source < sourceEnd) {
         | 
| 110 110 | 
             
                    UTF32 ch = 0;
         | 
| @@ -37,4 +37,17 @@ static const UTF32 halfMask = 0x3FFUL; | |
| 37 37 |  | 
| 38 38 | 
             
            void JSON_convert_UTF8_to_JSON(VALUE buffer, VALUE string, ConversionFlags flags);
         | 
| 39 39 |  | 
| 40 | 
            +
            #ifndef RARRAY_PTR
         | 
| 41 | 
            +
            #define RARRAY_PTR(ARRAY) RARRAY(ARRAY)->ptr
         | 
| 42 | 
            +
            #endif
         | 
| 43 | 
            +
            #ifndef RARRAY_LEN
         | 
| 44 | 
            +
            #define RARRAY_LEN(ARRAY) RARRAY(ARRAY)->len
         | 
| 45 | 
            +
            #endif
         | 
| 46 | 
            +
            #ifndef RSTRING_PTR
         | 
| 47 | 
            +
            #define RSTRING_PTR(string) RSTRING(string)->ptr
         | 
| 48 | 
            +
            #endif
         | 
| 49 | 
            +
            #ifndef RSTRING_LEN
         | 
| 50 | 
            +
            #define RSTRING_LEN(string) RSTRING(string)->len
         | 
| 51 | 
            +
            #endif
         | 
| 52 | 
            +
             | 
| 40 53 | 
             
            #endif
         | 
    
        data/ext/json/ext/parser.so
    CHANGED
    
    | Binary file | 
| @@ -1317,8 +1317,8 @@ static VALUE cParser_initialize(VALUE self, VALUE source) | |
| 1317 1317 | 
             
                long len;
         | 
| 1318 1318 | 
             
                GET_STRUCT;
         | 
| 1319 1319 | 
             
                source = StringValue(source);
         | 
| 1320 | 
            -
                ptr =  | 
| 1321 | 
            -
                len =  | 
| 1320 | 
            +
                ptr = RSTRING_PTR(source);
         | 
| 1321 | 
            +
                len = RSTRING_LEN(source);
         | 
| 1322 1322 | 
             
                if (len < 2) {
         | 
| 1323 1323 | 
             
                    rb_raise(eParserError, "A JSON text must at least contain two octets!");
         | 
| 1324 1324 | 
             
                }
         | 
| @@ -412,8 +412,8 @@ static VALUE cParser_initialize(VALUE self, VALUE source) | |
| 412 412 | 
             
                long len;
         | 
| 413 413 | 
             
                GET_STRUCT;
         | 
| 414 414 | 
             
                source = StringValue(source);
         | 
| 415 | 
            -
                ptr =  | 
| 416 | 
            -
                len =  | 
| 415 | 
            +
                ptr = RSTRING_PTR(source);
         | 
| 416 | 
            +
                len = RSTRING_LEN(source);
         | 
| 417 417 | 
             
                if (len < 2) {
         | 
| 418 418 | 
             
                    rb_raise(eParserError, "A JSON text must at least contain two octets!");
         | 
| 419 419 | 
             
                }
         | 
| @@ -41,4 +41,18 @@ char *JSON_convert_UTF16_to_UTF8 ( | |
| 41 41 | 
             
                char *source,
         | 
| 42 42 | 
             
                char *sourceEnd,
         | 
| 43 43 | 
             
            		ConversionFlags flags);
         | 
| 44 | 
            +
             | 
| 45 | 
            +
            #ifndef RARRAY_PTR
         | 
| 46 | 
            +
            #define RARRAY_PTR(ARRAY) RARRAY(ARRAY)->ptr
         | 
| 47 | 
            +
            #endif
         | 
| 48 | 
            +
            #ifndef RARRAY_LEN
         | 
| 49 | 
            +
            #define RARRAY_LEN(ARRAY) RARRAY(ARRAY)->len
         | 
| 50 | 
            +
            #endif
         | 
| 51 | 
            +
            #ifndef RSTRING_PTR
         | 
| 52 | 
            +
            #define RSTRING_PTR(string) RSTRING(string)->ptr
         | 
| 53 | 
            +
            #endif
         | 
| 54 | 
            +
            #ifndef RSTRING_LEN
         | 
| 55 | 
            +
            #define RSTRING_LEN(string) RSTRING(string)->len
         | 
| 56 | 
            +
            #endif
         | 
| 57 | 
            +
             | 
| 44 58 | 
             
            #endif
         | 
    
        data/lib/json.rb
    CHANGED
    
    | @@ -197,9 +197,15 @@ require 'json/common' | |
| 197 197 | 
             
            # javasript prototype library (http://www.prototypejs.org) works.
         | 
| 198 198 | 
             
            #
         | 
| 199 199 | 
             
            module JSON
         | 
| 200 | 
            -
               | 
| 200 | 
            +
              require 'json/version'
         | 
| 201 | 
            +
             | 
| 202 | 
            +
              if VARIANT_BINARY
         | 
| 201 203 | 
             
                require 'json/ext'
         | 
| 202 | 
            -
               | 
| 203 | 
            -
                 | 
| 204 | 
            +
              else
         | 
| 205 | 
            +
                begin
         | 
| 206 | 
            +
                  require 'json/ext'
         | 
| 207 | 
            +
                rescue LoadError
         | 
| 208 | 
            +
                  require 'json/pure'
         | 
| 209 | 
            +
                end
         | 
| 204 210 | 
             
              end
         | 
| 205 211 | 
             
            end
         | 
    
        data/lib/json/common.rb
    CHANGED
    
    | @@ -29,11 +29,12 @@ module JSON | |
| 29 29 | 
             
                # level (absolute namespace path?). If there doesn't exist a constant at
         | 
| 30 30 | 
             
                # the given path, an ArgumentError is raised.
         | 
| 31 31 | 
             
                def deep_const_get(path) # :nodoc:
         | 
| 32 | 
            +
                  path = path.to_s
         | 
| 32 33 | 
             
                  path.split(/::/).inject(Object) do |p, c|
         | 
| 33 34 | 
             
                    case
         | 
| 34 35 | 
             
                    when c.empty?             then p
         | 
| 35 36 | 
             
                    when p.const_defined?(c)  then p.const_get(c)
         | 
| 36 | 
            -
                    else                      raise ArgumentError, "can't find #{path}"
         | 
| 37 | 
            +
                    else                      raise ArgumentError, "can't find const #{path}"
         | 
| 37 38 | 
             
                    end
         | 
| 38 39 | 
             
                  end
         | 
| 39 40 | 
             
                end
         | 
    
        data/lib/json/version.rb
    CHANGED
    
    | @@ -1,8 +1,9 @@ | |
| 1 1 | 
             
            module JSON
         | 
| 2 2 | 
             
              # JSON version
         | 
| 3 | 
            -
              VERSION         = '1.0. | 
| 3 | 
            +
              VERSION         = '1.0.4'
         | 
| 4 4 | 
             
              VERSION_ARRAY   = VERSION.split(/\./).map { |x| x.to_i } # :nodoc:
         | 
| 5 5 | 
             
              VERSION_MAJOR   = VERSION_ARRAY[0] # :nodoc:
         | 
| 6 6 | 
             
              VERSION_MINOR   = VERSION_ARRAY[1] # :nodoc:
         | 
| 7 7 | 
             
              VERSION_BUILD   = VERSION_ARRAY[2] # :nodoc:
         | 
| 8 | 
            +
              VARIANT_BINARY  = true
         | 
| 8 9 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -3,8 +3,8 @@ rubygems_version: 0.9.2 | |
| 3 3 | 
             
            specification_version: 1
         | 
| 4 4 | 
             
            name: json
         | 
| 5 5 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 6 | 
            -
              version: 1.0. | 
| 7 | 
            -
            date: 2007- | 
| 6 | 
            +
              version: 1.0.4
         | 
| 7 | 
            +
            date: 2007-05-10 00:00:00 +02:00
         | 
| 8 8 | 
             
            summary: A JSON implementation as a Ruby extension
         | 
| 9 9 | 
             
            require_paths: 
         | 
| 10 10 | 
             
            - ext/json/ext
         |