Class: Object::Syck::Emitter
Instance Attribute Summary collapse
Instance Method Summary collapse
-
#emit(*args) ⇒ Object
YAML::Syck::Emitter.emit( object_id ) { |out| ... }.
-
#initialize(*args) ⇒ Object
constructor
YAML::Syck::Emitter.reset( options ).
-
#node_export(node) ⇒ Object
YAML::Syck::Emitter#node_export.
-
#reset(*args) ⇒ Object
YAML::Syck::Emitter.reset( options ).
-
#set_resolver(resolver) ⇒ Object
YAML::Syck::Emitter#set_resolver.
Constructor Details
#initialize(*args) ⇒ Object
YAML::Syck::Emitter.reset( options )
2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 |
# File 'ext/syck/rubyext.c', line 2131
VALUE
syck_emitter_reset(int argc, VALUE *argv, VALUE self)
{
VALUE options, tmp;
SyckEmitter *emitter;
struct emitter_xtra *bonus;
TypedData_Get_Struct(self, SyckEmitter, &syck_emitter_type, emitter);
bonus = (struct emitter_xtra *)emitter->bonus;
bonus->oid = Qnil;
bonus->port = rb_str_new2( "" );
bonus->data = id_hash_new();
if (rb_scan_args(argc, argv, "01", &options) == 0)
{
options = rb_hash_new();
rb_ivar_set(self, s_options, options);
}
else if ( !NIL_P(tmp = rb_check_string_type(options)) )
{
bonus->port = tmp;
}
else if ( rb_respond_to( options, s_write ) )
{
bonus->port = options;
}
else
{
Check_Type(options, T_HASH);
rb_ivar_set(self, s_options, options);
}
emitter->headless = 0;
rb_ivar_set(self, s_level, INT2FIX(0));
rb_ivar_set(self, s_resolver, Qnil);
return self;
}
|
Instance Attribute Details
#level ⇒ Object
Instance Method Details
#emit(*args) ⇒ Object
YAML::Syck::Emitter.emit( object_id ) { |out| ... }
2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 |
# File 'ext/syck/rubyext.c', line 2173
VALUE
syck_emitter_emit(int argc, VALUE *argv, VALUE self)
{
VALUE oid, proc;
SyckEmitter *emitter;
struct emitter_xtra *bonus;
SYMID symple;
int level = FIX2INT(rb_ivar_get(self, s_level)) + 1;
rb_ivar_set(self, s_level, INT2FIX(level));
rb_scan_args(argc, argv, "1&", &oid, &proc);
TypedData_Get_Struct(self, SyckEmitter, &syck_emitter_type, emitter);
bonus = (struct emitter_xtra *)emitter->bonus;
/* Calculate anchors, normalize nodes, build a simpler symbol table */
bonus->oid = oid;
if ( !NIL_P( oid ) && RTEST( rb_funcall( bonus->data, s_haskey, 1, oid ) ) ) {
symple = rb_hash_aref( bonus->data, oid );
} else {
symple = rb_funcall( proc, s_call, 1, rb_ivar_get( self, s_out ) );
}
syck_emitter_mark_node( emitter, (st_data_t)symple );
/* Second pass, build emitted string */
level -= 1;
rb_ivar_set(self, s_level, INT2FIX(level));
if ( level == 0 )
{
syck_emit(emitter, (st_data_t)symple);
syck_emitter_flush(emitter, 0);
return bonus->port;
}
return symple;
}
|
#node_export(node) ⇒ Object
YAML::Syck::Emitter#node_export
2213 2214 2215 2216 2217 |
# File 'ext/syck/rubyext.c', line 2213
VALUE
syck_emitter_node_export(VALUE self, VALUE node)
{
return rb_funcall( node, s_to_yaml, 1, self );
}
|
#reset(*args) ⇒ Object
YAML::Syck::Emitter.reset( options )
2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 |
# File 'ext/syck/rubyext.c', line 2131
VALUE
syck_emitter_reset(int argc, VALUE *argv, VALUE self)
{
VALUE options, tmp;
SyckEmitter *emitter;
struct emitter_xtra *bonus;
TypedData_Get_Struct(self, SyckEmitter, &syck_emitter_type, emitter);
bonus = (struct emitter_xtra *)emitter->bonus;
bonus->oid = Qnil;
bonus->port = rb_str_new2( "" );
bonus->data = id_hash_new();
if (rb_scan_args(argc, argv, "01", &options) == 0)
{
options = rb_hash_new();
rb_ivar_set(self, s_options, options);
}
else if ( !NIL_P(tmp = rb_check_string_type(options)) )
{
bonus->port = tmp;
}
else if ( rb_respond_to( options, s_write ) )
{
bonus->port = options;
}
else
{
Check_Type(options, T_HASH);
rb_ivar_set(self, s_options, options);
}
emitter->headless = 0;
rb_ivar_set(self, s_level, INT2FIX(0));
rb_ivar_set(self, s_resolver, Qnil);
return self;
}
|
#set_resolver(resolver) ⇒ Object
YAML::Syck::Emitter#set_resolver
2222 2223 2224 2225 2226 2227 |
# File 'ext/syck/rubyext.c', line 2222
VALUE
syck_emitter_set_resolver(VALUE self, VALUE resolver)
{
rb_ivar_set( self, s_resolver, resolver );
return self;
}
|