class GettextPO::File
Public Class Methods
Source
VALUE
gettextpo_po_file_m_initialize (VALUE self)
{
DATA_PTR (self) = po_file_create ();
return self;
}
See also message_iterator and GettextPO::MessageIterator#insert methods for the further manipulations.
Source
VALUE
gettextpo_po_file_m_read (int argc, VALUE *argv, VALUE klass)
{
VALUE filename, kwargs;
rb_scan_args (argc, argv, "1:", &filename, &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 self = rb_obj_alloc (klass);
gettextpo_xerror_context.file = &self;
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];
DATA_PTR (self)
= po_file_read (StringValueCStr (filename), &gettextpo_xerror_handler);
if (gettextpo_xerror_context.error)
rb_raise (rb_eError, "failed to read");
return self;
}
xerror and xerror2 are Proc objects. xerror takes keyword arguments severity, message, filename, lineno, column, multiline, and message_text. xerror2 takes keyword arguments severity, message1, filename1, lineno1, column1, multiline1, message_text1, message2, filename2, lineno2, column2, multiline2, and message_text2. See also GettextPO for general exception handlings.
Public Instance Methods
Source
VALUE
gettextpo_po_file_m_check_all (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 ();
gettextpo_xerror_context.file = &self;
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_file_check_all (DATA_PTR (self), &gettextpo_xerror_handler);
if (gettextpo_xerror_context.error)
rb_raise (rb_eError, "check all for file failed");
return Qnil;
}
See also ::read for exception error handlings.
Source
VALUE
gettextpo_po_file_m_domain_header (int argc, VALUE *argv, VALUE self)
{
VALUE domain;
rb_scan_args (argc, argv, "01", &domain);
const char *header = po_file_domain_header (
DATA_PTR (self), NIL_P (domain) ? NULL : StringValueCStr (domain));
return header ? rb_str_new_cstr (header) : Qnil;
}
domain can be nil to use a default. Possibly returns nil.
See also GettextPO.header_entry_value.
Source
VALUE
gettextpo_po_file_m_domains (VALUE self)
{
const char *const *domains = po_file_domains (DATA_PTR (self));
VALUE result = rb_ary_new ();
for (size_t index = 0; domains[index]; index++)
rb_ary_push (result, rb_str_new_cstr (domains[index]));
return result;
}
Source
VALUE
gettextpo_po_file_m_message_iterator (int argc, VALUE *argv, VALUE self)
{
VALUE domain;
rb_scan_args (argc, argv, "01", &domain);
VALUE iterator = rb_obj_alloc (rb_cMessageIterator);
DATA_PTR (iterator) = po_message_iterator (
DATA_PTR (self), NIL_P (domain) ? NULL : StringValueCStr (domain));
rb_ivar_set (iterator, rb_intern ("@file"), self);
return iterator;
}
Source
VALUE
gettextpo_po_file_m_write (int argc, VALUE *argv, VALUE self)
{
VALUE filename, kwargs;
rb_scan_args (argc, argv, "1:", &filename, &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 ();
gettextpo_xerror_context.file = &self;
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_file_write (DATA_PTR (self), StringValueCStr (filename),
&gettextpo_xerror_handler);
if (gettextpo_xerror_context.error)
rb_raise (rb_eError, "failed to write");
return Qnil;
}
See also ::read for exception error handlings.