/*
* call-seq:
* lazy_doc.default(key) -> string
*
* This method is used internally to lazily load fields. You should never
* really need to call it yourself.
*/
static VALUE
frt_lzd_default(VALUE self, VALUE rkey)
{
LazyDoc *lazy_doc = (LazyDoc *)DATA_PTR(rb_ivar_get(self, id_data));
char *field = NULL;
switch (TYPE(rkey)) {
case T_STRING:
field = rs2s(rkey);
rkey = ID2SYM(rb_intern(field));
break;
case T_SYMBOL:
field = frt_field(rkey);
break;
default:
rb_raise(rb_eArgError,
"%s cannot be a key to a field. Field keys must "
" be symbols.", rs2s(rb_obj_as_string(rkey)));
break;
}
return frt_lazy_df_load(self, rkey, h_get(lazy_doc->field_dict, field));
}