diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2009-09-29 17:16:29 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2009-09-29 17:16:29 -0700 |
commit | f9764c806980a663dbc75a8ec1764d02a225595d (patch) | |
tree | 6f08b36991fb1befeb1b0c950d13998b8661a677 /ext | |
parent | 26eee0cd258ef47d595e9ae44e06ccf4d71ced56 (diff) | |
download | psych-f9764c806980a663dbc75a8ec1764d02a225595d.zip |
aliases can be emitted
Diffstat (limited to 'ext')
-rw-r--r-- | ext/psych/emitter.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/ext/psych/emitter.c b/ext/psych/emitter.c index d6b13f9..126f174 100644 --- a/ext/psych/emitter.c +++ b/ext/psych/emitter.c @@ -210,6 +210,22 @@ static VALUE end_mapping(VALUE self) return self; } +static VALUE alias(VALUE self, VALUE anchor) +{ + yaml_emitter_t * emitter; + Data_Get_Struct(self, yaml_emitter_t, emitter); + + yaml_event_t event; + yaml_alias_event_initialize( + &event, + (yaml_char_t *)(Qnil == anchor ? NULL : StringValuePtr(anchor)) + ); + + emit(emitter, &event); + + return self; +} + void Init_psych_emitter() { VALUE psych = rb_define_module("Psych"); @@ -228,4 +244,5 @@ void Init_psych_emitter() rb_define_method(cPsychEmitter, "end_sequence", end_sequence, 0); rb_define_method(cPsychEmitter, "start_mapping", start_mapping, 4); rb_define_method(cPsychEmitter, "end_mapping", end_mapping, 0); + rb_define_method(cPsychEmitter, "alias", alias, 1); } |