class PG::CompositeCoder
This is the base class for all type cast classes of PostgreSQL types, that are made up of some sub type.
Attributes
Public Instance Methods
The character that separates values within the composite type.
static VALUE pg_coder_delimiter_get(VALUE self) { t_pg_composite_coder *this = RTYPEDDATA_DATA(self); return rb_str_new(&this->delimiter, 1); }
Specifies the character that separates values within the composite type. The default is a comma. This must be a single one-byte character.
static VALUE pg_coder_delimiter_set(VALUE self, VALUE delimiter) { t_pg_composite_coder *this = RTYPEDDATA_DATA(self); StringValue(delimiter); if(RSTRING_LEN(delimiter) != 1) rb_raise( rb_eArgError, "delimiter size must be one byte"); this->delimiter = *RSTRING_PTR(delimiter); return delimiter; }
Specifies the PG::Coder
object that is used to encode or decode the single elementes of this composite type.
If set to nil
all values are encoded and decoded as String objects.
static VALUE pg_coder_elements_type_set(VALUE self, VALUE elem_type) { t_pg_composite_coder *this = RTYPEDDATA_DATA( self ); if ( NIL_P(elem_type) ){ this->elem = NULL; } else if ( rb_obj_is_kind_of(elem_type, rb_cPG_Coder) ){ this->elem = RTYPEDDATA_DATA( elem_type ); } else { rb_raise( rb_eTypeError, "wrong elements type %s (expected some kind of PG::Coder)", rb_obj_classname( elem_type ) ); } rb_iv_set( self, "@elements_type", elem_type ); return elem_type; }
PG::Coder#inspect
# File lib/pg/coder.rb, line 79 def inspect str = super str[-1,0] = " elements_type=#{elements_type.inspect} #{needs_quotation? ? 'needs' : 'no'} quotation" str end
Specifies whether the assigned elements_type
requires quotation marks to be transferred safely. Encoding with needs_quotation=
false is somewhat faster.
The default is true
. This option is ignored for decoding of values.
static VALUE pg_coder_needs_quotation_set(VALUE self, VALUE needs_quotation) { t_pg_composite_coder *this = RTYPEDDATA_DATA(self); this->needs_quotation = RTEST(needs_quotation); return needs_quotation; }
Specifies whether the assigned elements_type
requires quotation marks to be transferred safely.
static VALUE pg_coder_needs_quotation_get(VALUE self) { t_pg_composite_coder *this = RTYPEDDATA_DATA(self); return this->needs_quotation ? Qtrue : Qfalse; }
PG::Coder#to_h
# File lib/pg/coder.rb, line 71 def to_h super.merge!({ elements_type: elements_type, needs_quotation: needs_quotation?, delimiter: delimiter, }) end