yaml_datetime.diff

yaml datetime patch - davidw (David Welton), 11/14/2008 01:04 am

Download (2.8 kB)

/home/davidw/downloads/ruby-1.8.7-p72/ext/syck/rubyext.c 2008-11-13 17:02:20.000000000 +0100
49 49
/*
50 50
 * symbols and constants
51 51
 */
52
static ID s_new, s_utc, s_at, s_to_f, s_to_i, s_read, s_binmode, s_call, s_cmp, s_transfer, s_update, s_dup, s_haskey, s_match, s_keys, s_unpack, s_tr_bang, s_default_set, s_tag_read_class, s_tag_subclasses, s_resolver, s_push, s_emitter, s_level, s_detect_implicit, s_node_import, s_out, s_input, s_intern, s_transform, s_yaml_new, s_yaml_initialize, s_node_export, s_to_yaml, s_write, s_set_resolver;
52
static ID s_new, s_utc, s_at, s_to_f, s_to_i, s_read, s_binmode, s_call, s_cmp, s_transfer, s_update, s_dup, s_haskey, s_match, s_keys, s_unpack, s_tr_bang, s_default_set, s_tag_read_class, s_tag_subclasses, s_resolver, s_push, s_emitter, s_level, s_detect_implicit, s_node_import, s_out, s_input, s_intern, s_transform, s_yaml_new, s_yaml_initialize, s_node_export, s_to_yaml, s_write, s_set_resolver, s_parse;
53 53
static ID s_tags, s_domain, s_kind, s_name, s_options, s_type_id, s_type_id_set, s_style, s_style_set, s_value, s_value_set;
54 54
static VALUE sym_model, sym_generic, sym_input, sym_bytecode;
55 55
static VALUE sym_scalar, sym_seq, sym_map;
56 56
static VALUE sym_1quote, sym_2quote, sym_fold, sym_literal, sym_plain, sym_inline;
57
static VALUE cDate, cNode, cMap, cSeq, cScalar, cOut, cParser, cResolver, cPrivateType, cDomainType, cYObject, cBadAlias, cDefaultKey, cMergeKey, cEmitter;
57
static VALUE cDate, cDateTime, cNode, cMap, cSeq, cScalar, cOut, cParser, cResolver, cPrivateType, cDomainType, cYObject, cBadAlias, cDefaultKey, cMergeKey, cEmitter;
58 58
static VALUE oDefaultResolver, oGenericResolver;
59 59

  
60 60
/*
......
463 463
            }
464 464
            else if ( strcmp( type_id, "timestamp#iso8601" ) == 0 )
465 465
            {
466
                obj = rb_syck_mktime( n->data.str->ptr, n->data.str->len );
466
                if ( !cDateTime ) {
467
                    /*
468
                     * Load Date module
469
                     */
470
                    rb_require( "date" );
471
                    cDateTime = rb_const_get( rb_cObject, rb_intern("DateTime") );
472
                }
473

  
474
                obj = rb_funcall( cDateTime, s_parse, 1,
475
                                  rb_str_new( n->data.str->ptr, n->data.str->len ));
476
                rb_require( "date" );
467 477
            }
468 478
            else if ( strcmp( type_id, "timestamp#spaced" ) == 0 )
469 479
            {
......
2195 2205
    s_transform = rb_intern( "transform" );
2196 2206
    s_yaml_new = rb_intern("yaml_new");
2197 2207
    s_yaml_initialize = rb_intern("yaml_initialize");
2208
    s_parse = rb_intern("parse");
2198 2209

  
2199 2210
    s_tags = rb_intern("@tags");
2200 2211
    s_name = rb_intern("@name");