diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2009-09-29 09:53:42 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2009-09-29 09:53:42 -0700 |
commit | d2bf942ac38b1b6e91116a06855a00d32b95d27b (patch) | |
tree | 0ecec2c190f7288929e0dbcfe2cc37547d5859cb /ext | |
parent | a23403e809e8ddcb6b6cccf8f0169606cd376331 (diff) | |
download | psych-d2bf942ac38b1b6e91116a06855a00d32b95d27b.zip |
sequences emit
Diffstat (limited to 'ext')
-rw-r--r-- | ext/psych/emitter.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/ext/psych/emitter.c b/ext/psych/emitter.c index ce2b77e..7b8a43a 100644 --- a/ext/psych/emitter.c +++ b/ext/psych/emitter.c @@ -136,6 +136,43 @@ static VALUE scalar( return self; } +static VALUE start_sequence( + VALUE self, + VALUE anchor, + VALUE tag, + VALUE implicit, + VALUE style +) { + yaml_emitter_t * emitter; + Data_Get_Struct(self, yaml_emitter_t, emitter); + + yaml_event_t event; + yaml_sequence_start_event_initialize( + &event, + (yaml_char_t *)(Qnil == anchor ? NULL : StringValuePtr(anchor)), + (yaml_char_t *)(Qnil == anchor ? NULL : StringValuePtr(tag)), + Qtrue == implicit ? 1 : 0, + (yaml_sequence_style_t)NUM2INT(style) + ); + + emit(emitter, &event); + + return self; +} + +static VALUE end_sequence(VALUE self) +{ + yaml_emitter_t * emitter; + Data_Get_Struct(self, yaml_emitter_t, emitter); + + yaml_event_t event; + yaml_sequence_end_event_initialize(&event); + + emit(emitter, &event); + + return self; +} + void Init_psych_emitter() { VALUE psych = rb_define_module("Psych"); @@ -150,4 +187,6 @@ void Init_psych_emitter() rb_define_method(cPsychEmitter, "start_document", start_document, 3); rb_define_method(cPsychEmitter, "end_document", end_document, 1); rb_define_method(cPsychEmitter, "scalar", scalar, 6); + rb_define_method(cPsychEmitter, "start_sequence", start_sequence, 4); + rb_define_method(cPsychEmitter, "end_sequence", end_sequence, 0); } |