class GettextPO::Message
This class doesn’t provide the new class method. Refre to GettextPO::MessageIterator#next or GettextPO::MessageIterator#insert.
Public Instance Methods
Source
VALUE
gettextpo_po_message_m_add_filepos (VALUE self, VALUE file, VALUE start_line)
{
po_message_add_filepos (DATA_PTR (self), StringValueCStr (file),
NUM2INT (start_line));
return Qnil;
}
Source
VALUE
gettextpo_po_message_m_check_all (int argc, VALUE *argv, VALUE self)
{
VALUE iterator, kwargs;
rb_scan_args (argc, argv, "1:", &iterator, &kwargs);
ID kwargs_ids[] = { rb_intern ("xerror"), rb_intern ("xerror2") };
VALUE kwargs_vals[] = { Qundef, Qundef };
rb_get_kwargs (kwargs, kwargs_ids, 0, 2, kwargs_vals);
gettextpo_xerror_context_reset ();
VALUE file = rb_ivar_get (self, rb_intern ("@file"));
gettextpo_xerror_context.file = &file;
if (kwargs_vals[0] != Qundef)
gettextpo_xerror_context.user_xerror = &kwargs_vals[0];
if (kwargs_vals[1] != Qundef)
gettextpo_xerror_context.user_xerror2 = &kwargs_vals[1];
po_message_check_all (DATA_PTR (self), DATA_PTR (iterator),
&gettextpo_xerror_handler);
if (gettextpo_xerror_context.error)
rb_raise (rb_eError, "check all for message failed");
return Qnil;
}
See also GettextPO::File.read for exception error handlings.
Source
VALUE
gettextpo_po_message_m_check_format (int argc, VALUE *argv, VALUE self)
{
VALUE kwargs;
rb_scan_args (argc, argv, ":", &kwargs);
ID kwargs_ids[] = { rb_intern ("xerror"), rb_intern ("xerror2") };
VALUE kwargs_vals[] = { Qundef, Qundef };
rb_get_kwargs (kwargs, kwargs_ids, 0, 2, kwargs_vals);
gettextpo_xerror_context_reset ();
VALUE file = rb_ivar_get (self, rb_intern ("@file"));
gettextpo_xerror_context.file = &file;
if (kwargs_vals[0] != Qundef)
gettextpo_xerror_context.user_xerror = &kwargs_vals[0];
if (kwargs_vals[1] != Qundef)
gettextpo_xerror_context.user_xerror2 = &kwargs_vals[1];
po_message_check_format (DATA_PTR (self), &gettextpo_xerror_handler);
if (gettextpo_xerror_context.error)
rb_raise (rb_eError, "check format for message failed");
return Qnil;
}
See also GettextPO::File.read for exception error handlings.
Source
VALUE
gettextpo_po_message_m_filepos (VALUE self, VALUE index)
{
po_filepos_t pos = po_message_filepos (DATA_PTR (self), NUM2INT (index));
if (pos)
{
VALUE filepos = rb_obj_alloc (rb_cFilePos);
DATA_PTR (filepos) = pos;
rb_ivar_set (filepos, rb_intern ("@file"),
rb_ivar_get (self, rb_intern ("@file")));
return filepos;
}
else
return Qnil;
}
Possibly returns nil.
Source
VALUE
gettextpo_po_message_m_format (VALUE self, VALUE format)
{
return po_message_is_format (DATA_PTR (self), StringValueCStr (format))
? Qtrue
: Qfalse;
}
Possibly returns nil.
context can be nil to remove it.
Possibly returns nil.
id can be nil to remove it.
Source
VALUE
gettextpo_po_message_m_msgstr_plural (VALUE self, VALUE index)
{
const char *msgstr_plural
= po_message_msgstr_plural (DATA_PTR (self), NUM2INT (index));
return msgstr_plural ? rb_str_new_cstr (msgstr_plural) : Qnil;
}
Possibly returns nil.
Possibly returns nil.
context can be nil to remove it.
Possibly returns nil.
id can be nil to remove it.
Possibly returns nil.
id can be nil to remove it.
Source
VALUE
gettextpo_po_message_m_range_set (VALUE self, VALUE range)
{
VALUE min, max;
int exclude;
rb_range_values (range, &min, &max, &exclude);
po_message_set_range (DATA_PTR (self), min, max);
return Qnil;
}
Source
VALUE
gettextpo_po_message_m_range (VALUE self, VALUE range)
{
VALUE min, max;
int exclude;
rb_range_values (range, &min, &max, &exclude);
int min_int = NUM2INT (min);
int max_int = NUM2INT (max);
return po_message_is_range (DATA_PTR (self), &min_int, &max_int) ? Qtrue
: Qfalse;
}
Source
VALUE
gettextpo_po_message_m_remove_filepos (VALUE self, VALUE index)
{
po_message_remove_filepos (DATA_PTR (self), NUM2INT (index));
return Qnil;
}
Source
VALUE
gettextpo_po_message_m_msgstr_plural_set (VALUE self, VALUE index,
VALUE msgstr_plural)
{
po_message_set_msgstr_plural (
DATA_PTR (self), NUM2INT (index),
NIL_P (msgstr_plural) ? NULL : StringValueCStr (msgstr_plural));
return Qnil;
}
str can be nil to remove it.
Source
VALUE
gettextpo_po_message_m_format_set (int argc, VALUE *argv, VALUE self)
{
VALUE format, kwargs;
rb_scan_args (argc, argv, "1:", &format, &kwargs);
ID kwargs_ids[] = { rb_intern ("opposite"), rb_intern ("remove") };
VALUE kwargs_vals[] = { Qundef, Qundef };
rb_get_kwargs (kwargs, kwargs_ids, 0, 2, kwargs_vals);
bool opposite = !RB_UNDEF_P (kwargs_vals[0]) && RB_TEST (kwargs_vals[0]);
bool remove = !RB_UNDEF_P (kwargs_vals[1]) && RB_TEST (kwargs_vals[1]);
if (opposite && remove)
rb_raise (rb_eError, "opposite and remove cannot be set at the same time");
po_message_set_format (DATA_PTR (self), StringValueCStr (format),
opposite ? 0 : (remove ? -1 : 1));
return Qnil;
}
Set by default. opposite sets a “no-” prefixed format type.