gettextpo 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +10 -0
- data/ext/gettextpo/gettextpo.c +4 -0
- data/lib/gettextpo/version.rb +1 -1
- metadata +3 -24
- data/.clang-format +0 -1
- data/.clangd +0 -2
- data/.dir-locals.el +0 -6
- data/.env.example +0 -2
- data/.envrc +0 -31
- data/.rdoc_options +0 -14
- data/build_config.rb +0 -27
- data/include/mrb_gettextpo.h +0 -24
- data/manifest.scm +0 -43
- data/mrbgem.rake +0 -24
- data/mrblib/mrb_gettextpo.rb +0 -58
- data/mrblib/mrb_gettextpo_version.rb +0 -23
- data/sig/gettextpo.rbs +0 -4
- data/src/mrb_gettextpo.c +0 -942
- data/test.cruby/gettextpo_test.rb +0 -53
- data/test.cruby/resources/a.po +0 -1
- data/test.cruby/resources/bad.po +0 -20
- data/test.cruby/resources/filepos.po +0 -3
- data/test.cruby/resources/format.po +0 -3
- data/test.cruby/resources/ok.po +0 -16
- data/test.cruby/test_helper.rb +0 -21
- data/test.cruby/tmp/.keep +0 -0
data/src/mrb_gettextpo.c
DELETED
|
@@ -1,942 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (C) 2026 gemmaro
|
|
3
|
-
*
|
|
4
|
-
* This program is free software: you can redistribute it and/or modify
|
|
5
|
-
* it under the terms of the GNU General Public License as published by
|
|
6
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
7
|
-
* (at your option) any later version.
|
|
8
|
-
*
|
|
9
|
-
* This program is distributed in the hope that it will be useful,
|
|
10
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
-
* GNU General Public License for more details.
|
|
13
|
-
*
|
|
14
|
-
* You should have received a copy of the GNU General Public License
|
|
15
|
-
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
#include "mrb_gettextpo.h"
|
|
19
|
-
#include <gettext-po.h>
|
|
20
|
-
#include <mruby.h>
|
|
21
|
-
#include <mruby/array.h>
|
|
22
|
-
#include <mruby/boxing_word.h>
|
|
23
|
-
#include <mruby/class.h>
|
|
24
|
-
#include <mruby/data.h>
|
|
25
|
-
#include <mruby/hash.h>
|
|
26
|
-
#include <mruby/object.h>
|
|
27
|
-
#include <mruby/presym.h>
|
|
28
|
-
#include <mruby/range.h>
|
|
29
|
-
#include <mruby/value.h>
|
|
30
|
-
#include <mruby/variable.h>
|
|
31
|
-
#include <stdbool.h>
|
|
32
|
-
#include <stddef.h>
|
|
33
|
-
#include <stdio.h>
|
|
34
|
-
#include <stdlib.h>
|
|
35
|
-
|
|
36
|
-
#define DONE mrb_gc_arena_restore (mrb, 0);
|
|
37
|
-
|
|
38
|
-
#define MODULE mrb_module_get_id (mrb, MRB_SYM (GettextPO))
|
|
39
|
-
#define MESSAGE mrb_class_get_under_id (mrb, MODULE, MRB_SYM (Message))
|
|
40
|
-
#define FLAG_ITERATOR \
|
|
41
|
-
mrb_class_get_under_id (mrb, MODULE, MRB_SYM (FlagIterator))
|
|
42
|
-
#define ERROR mrb_class_get_under_id (mrb, MODULE, MRB_SYM (Error))
|
|
43
|
-
|
|
44
|
-
#define NIL mrb_nil_value ()
|
|
45
|
-
#define STOP_ITERATION mrb_class_get_id (mrb, MRB_SYM (StopIteration))
|
|
46
|
-
|
|
47
|
-
static mrb_value
|
|
48
|
-
gettextpo_m_header_entry_value (mrb_state *mrb, mrb_value klass)
|
|
49
|
-
{
|
|
50
|
-
char *header = NULL, *field = NULL;
|
|
51
|
-
mrb_get_args (mrb, "zz", &header, &field);
|
|
52
|
-
|
|
53
|
-
char *string = po_header_field (header, field);
|
|
54
|
-
if (string)
|
|
55
|
-
{
|
|
56
|
-
mrb_value value = mrb_str_new_cstr (mrb, string);
|
|
57
|
-
free (string);
|
|
58
|
-
return value;
|
|
59
|
-
}
|
|
60
|
-
else
|
|
61
|
-
return NIL;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static mrb_value
|
|
65
|
-
gettextpo_m_header_with_updated_entry_value (mrb_state *mrb, mrb_value klass)
|
|
66
|
-
{
|
|
67
|
-
char *header = NULL, *field = NULL, *value = NULL;
|
|
68
|
-
mrb_get_args (mrb, "zzz", &header, &field, &value);
|
|
69
|
-
|
|
70
|
-
char *updated_header = po_header_set_field (header, field, value);
|
|
71
|
-
mrb_value header_value = mrb_str_new_cstr (mrb, updated_header);
|
|
72
|
-
free (updated_header);
|
|
73
|
-
return header_value;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
static void
|
|
77
|
-
gettextpo_flag_iterator_free (mrb_state *mrb, void *iter)
|
|
78
|
-
{
|
|
79
|
-
if (iter)
|
|
80
|
-
po_flag_iterator_free (iter);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
static const struct mrb_data_type gettextpo_flag_iterator_data_type = {
|
|
84
|
-
.struct_name = "gettextpo flag iterator",
|
|
85
|
-
.dfree = gettextpo_flag_iterator_free,
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
static mrb_value
|
|
89
|
-
gettextpo_flag_iterator_m_next (mrb_state *mrb, mrb_value self)
|
|
90
|
-
{
|
|
91
|
-
const char *flag = po_flag_next (DATA_PTR (self));
|
|
92
|
-
if (flag)
|
|
93
|
-
return mrb_str_new_cstr (mrb, flag);
|
|
94
|
-
else
|
|
95
|
-
mrb_raise (mrb, STOP_ITERATION, "no more flag");
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
static void
|
|
99
|
-
gettextpo_message_free (mrb_state *mrb, void *message)
|
|
100
|
-
{
|
|
101
|
-
/* NOTE: memory is freed by libgettextpo file struct */
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
static const struct mrb_data_type gettextpo_message_data_type = {
|
|
105
|
-
.struct_name = "gettextpo message",
|
|
106
|
-
.dfree = gettextpo_message_free,
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
#define OPTIONAL_STRING_GETTER(field) \
|
|
110
|
-
static mrb_value gettextpo_message_m_##field (mrb_state *mrb, \
|
|
111
|
-
mrb_value self) \
|
|
112
|
-
{ \
|
|
113
|
-
const char *string = po_message_##field (DATA_PTR (self)); \
|
|
114
|
-
return string ? mrb_str_new_cstr (mrb, string) : NIL; \
|
|
115
|
-
}
|
|
116
|
-
#define OPTIONAL_STRING_SETTER(field) \
|
|
117
|
-
static mrb_value gettextpo_message_m_##field##_set (mrb_state *mrb, \
|
|
118
|
-
mrb_value self) \
|
|
119
|
-
{ \
|
|
120
|
-
char *string = NULL; \
|
|
121
|
-
mrb_get_args (mrb, "z!", &string); \
|
|
122
|
-
po_message_set_##field (DATA_PTR (self), string); \
|
|
123
|
-
return NIL; \
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
OPTIONAL_STRING_GETTER (msgctxt);
|
|
127
|
-
OPTIONAL_STRING_SETTER (msgctxt);
|
|
128
|
-
|
|
129
|
-
#define STRING_GETTER(field) \
|
|
130
|
-
static mrb_value gettextpo_message_m_##field (mrb_state *mrb, \
|
|
131
|
-
mrb_value self) \
|
|
132
|
-
{ \
|
|
133
|
-
return mrb_str_new_cstr (mrb, po_message_##field (DATA_PTR (self))); \
|
|
134
|
-
}
|
|
135
|
-
#define STRING_SETTER(field) \
|
|
136
|
-
static mrb_value gettextpo_message_m_##field##_set (mrb_state *mrb, \
|
|
137
|
-
mrb_value self) \
|
|
138
|
-
{ \
|
|
139
|
-
char *string = NULL; \
|
|
140
|
-
mrb_get_args (mrb, "z", &string); \
|
|
141
|
-
po_message_set_##field (DATA_PTR (self), string); \
|
|
142
|
-
return NIL; \
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
STRING_GETTER (msgid);
|
|
146
|
-
STRING_SETTER (msgid);
|
|
147
|
-
STRING_GETTER (msgid_plural);
|
|
148
|
-
STRING_SETTER (msgid_plural);
|
|
149
|
-
STRING_GETTER (msgstr);
|
|
150
|
-
STRING_SETTER (msgstr);
|
|
151
|
-
|
|
152
|
-
static mrb_value
|
|
153
|
-
gettextpo_message_m_msgstr_plural (mrb_state *mrb, mrb_value self)
|
|
154
|
-
{
|
|
155
|
-
mrb_int index = 0;
|
|
156
|
-
mrb_get_args (mrb, "i", &index);
|
|
157
|
-
|
|
158
|
-
const char *msgstr_plural
|
|
159
|
-
= po_message_msgstr_plural (DATA_PTR (self), index);
|
|
160
|
-
return msgstr_plural ? mrb_str_new_cstr (mrb, msgstr_plural) : NIL;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
static mrb_value
|
|
164
|
-
gettextpo_message_m_msgstr_plural_set (mrb_state *mrb, mrb_value self)
|
|
165
|
-
{
|
|
166
|
-
int index = 0;
|
|
167
|
-
char *msgstr_plural = NULL;
|
|
168
|
-
mrb_get_args (mrb, "iz!", &index, &msgstr_plural);
|
|
169
|
-
|
|
170
|
-
po_message_set_msgstr_plural (DATA_PTR (self), index, msgstr_plural);
|
|
171
|
-
return NIL;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
STRING_GETTER (comments);
|
|
175
|
-
STRING_SETTER (comments);
|
|
176
|
-
STRING_GETTER (extracted_comments);
|
|
177
|
-
STRING_SETTER (extracted_comments);
|
|
178
|
-
OPTIONAL_STRING_GETTER (prev_msgctxt);
|
|
179
|
-
OPTIONAL_STRING_SETTER (prev_msgctxt);
|
|
180
|
-
OPTIONAL_STRING_GETTER (prev_msgid);
|
|
181
|
-
OPTIONAL_STRING_SETTER (prev_msgid);
|
|
182
|
-
OPTIONAL_STRING_GETTER (prev_msgid_plural);
|
|
183
|
-
OPTIONAL_STRING_SETTER (prev_msgid_plural);
|
|
184
|
-
|
|
185
|
-
#define BOOL_GETTER(field) \
|
|
186
|
-
static mrb_value gettextpo_message_m_##field (mrb_state *mrb, \
|
|
187
|
-
mrb_value self) \
|
|
188
|
-
{ \
|
|
189
|
-
return mrb_bool_value (po_message_is_##field (DATA_PTR (self))); \
|
|
190
|
-
}
|
|
191
|
-
#define BOOL_SETTER(field) \
|
|
192
|
-
static mrb_value gettextpo_message_m_##field##_set (mrb_state *mrb, \
|
|
193
|
-
mrb_value self) \
|
|
194
|
-
{ \
|
|
195
|
-
bool boolean = true; \
|
|
196
|
-
mrb_get_args (mrb, "b", &boolean); \
|
|
197
|
-
\
|
|
198
|
-
po_message_set_##field (DATA_PTR (self), boolean); \
|
|
199
|
-
return NIL; \
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
BOOL_GETTER (obsolete);
|
|
203
|
-
BOOL_SETTER (obsolete);
|
|
204
|
-
BOOL_GETTER (fuzzy);
|
|
205
|
-
BOOL_SETTER (fuzzy);
|
|
206
|
-
|
|
207
|
-
#define QUERY_FLAG(name) \
|
|
208
|
-
static mrb_value gettextpo_message_m_##name##_flag_q (mrb_state *mrb, \
|
|
209
|
-
mrb_value self) \
|
|
210
|
-
{ \
|
|
211
|
-
char *flag = NULL; \
|
|
212
|
-
mrb_get_args (mrb, "z", &flag); \
|
|
213
|
-
\
|
|
214
|
-
return mrb_bool_value ( \
|
|
215
|
-
po_message_has_##name##_flag (DATA_PTR (self), flag)); \
|
|
216
|
-
}
|
|
217
|
-
#define UPDATE_FLAG(name) \
|
|
218
|
-
static mrb_value gettextpo_message_m_##name##_flag_update (mrb_state *mrb, \
|
|
219
|
-
mrb_value self) \
|
|
220
|
-
{ \
|
|
221
|
-
char *flag = NULL; \
|
|
222
|
-
mrb_sym table[] = { MRB_SYM (set) }; \
|
|
223
|
-
size_t num = sizeof (table) / sizeof (table[0]); \
|
|
224
|
-
mrb_value values[] = { mrb_undef_value () }; \
|
|
225
|
-
mrb_kwargs kwargs = { .num = num, .table = table, .values = values }; \
|
|
226
|
-
mrb_get_args (mrb, "z:", &flag, &kwargs); \
|
|
227
|
-
\
|
|
228
|
-
po_message_set_##name##_flag (DATA_PTR (self), flag, \
|
|
229
|
-
mrb_undef_p (values[0]) \
|
|
230
|
-
|| mrb_test (values[0])); \
|
|
231
|
-
return mrb_nil_value (); \
|
|
232
|
-
}
|
|
233
|
-
#define FLAG_ITERATOR_METHOD(name) \
|
|
234
|
-
static mrb_value gettextpo_message_m_##name##_flag_iterator ( \
|
|
235
|
-
mrb_state *mrb, mrb_value self) \
|
|
236
|
-
{ \
|
|
237
|
-
return mrb_obj_value (mrb_data_object_alloc ( \
|
|
238
|
-
mrb, FLAG_ITERATOR, \
|
|
239
|
-
po_message_##name##_flags_iterator (DATA_PTR (self)), \
|
|
240
|
-
&gettextpo_flag_iterator_data_type)); \
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
QUERY_FLAG (workflow);
|
|
244
|
-
UPDATE_FLAG (workflow);
|
|
245
|
-
FLAG_ITERATOR_METHOD (workflow);
|
|
246
|
-
|
|
247
|
-
static mrb_value
|
|
248
|
-
gettextpo_message_m_format_q (mrb_state *mrb, mrb_value self)
|
|
249
|
-
{
|
|
250
|
-
char *format = NULL;
|
|
251
|
-
mrb_get_args (mrb, "z", &format);
|
|
252
|
-
|
|
253
|
-
return mrb_bool_value (po_message_is_format (DATA_PTR (self), format));
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
static mrb_value
|
|
257
|
-
gettextpo_message_m_format (mrb_state *mrb, mrb_value self)
|
|
258
|
-
{
|
|
259
|
-
char *format = NULL;
|
|
260
|
-
mrb_get_args (mrb, "z", &format);
|
|
261
|
-
|
|
262
|
-
switch (po_message_get_format (DATA_PTR (self), format))
|
|
263
|
-
{
|
|
264
|
-
case 1:
|
|
265
|
-
return mrb_true_value ();
|
|
266
|
-
break;
|
|
267
|
-
case 0:
|
|
268
|
-
return mrb_false_value ();
|
|
269
|
-
break;
|
|
270
|
-
case -1:
|
|
271
|
-
return mrb_nil_value ();
|
|
272
|
-
break;
|
|
273
|
-
default:
|
|
274
|
-
mrb_raise (mrb, ERROR, "unreachable");
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
static mrb_value
|
|
279
|
-
gettextpo_message_m_format_set (mrb_state *mrb, mrb_value self)
|
|
280
|
-
{
|
|
281
|
-
char *format = NULL;
|
|
282
|
-
mrb_sym table[] = { MRB_SYM (opposite), MRB_SYM (remove) };
|
|
283
|
-
size_t num = sizeof (table) / sizeof (table[0]);
|
|
284
|
-
mrb_value values[] = { mrb_false_value (), mrb_false_value () };
|
|
285
|
-
mrb_kwargs kwargs = { .num = num, .table = table, .values = values };
|
|
286
|
-
mrb_get_args (mrb, "z:", &format, &kwargs);
|
|
287
|
-
|
|
288
|
-
bool opposite = !mrb_undef_p (values[0]) && mrb_test (values[0]);
|
|
289
|
-
bool remove = !mrb_undef_p (values[1]) && mrb_test (values[1]);
|
|
290
|
-
if (opposite && remove)
|
|
291
|
-
mrb_raise (mrb, ERROR,
|
|
292
|
-
"opposite and remove cannot be set at the same time");
|
|
293
|
-
po_message_set_format (DATA_PTR (self), format,
|
|
294
|
-
opposite ? 0 : (remove ? -1 : 1));
|
|
295
|
-
return NIL;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
QUERY_FLAG (sticky);
|
|
299
|
-
UPDATE_FLAG (sticky);
|
|
300
|
-
FLAG_ITERATOR_METHOD (sticky);
|
|
301
|
-
|
|
302
|
-
static mrb_value
|
|
303
|
-
gettextpo_message_m_range (mrb_state *mrb, mrb_value self)
|
|
304
|
-
{
|
|
305
|
-
mrb_value range;
|
|
306
|
-
mrb_get_args (mrb, "o", &range);
|
|
307
|
-
|
|
308
|
-
int min = mrb_integer (mrb_range_beg (mrb, range));
|
|
309
|
-
int max = mrb_integer (mrb_range_end (mrb, range));
|
|
310
|
-
return mrb_bool_value (po_message_is_range (DATA_PTR (self), &min, &max));
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
static mrb_value
|
|
314
|
-
gettextpo_message_m_range_set (mrb_state *mrb, mrb_value self)
|
|
315
|
-
{
|
|
316
|
-
mrb_value range;
|
|
317
|
-
mrb_get_args (mrb, "o", &range);
|
|
318
|
-
|
|
319
|
-
po_message_set_range (DATA_PTR (self),
|
|
320
|
-
mrb_integer (mrb_range_beg (mrb, range)),
|
|
321
|
-
mrb_integer (mrb_range_end (mrb, range)));
|
|
322
|
-
return NIL;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
static struct
|
|
326
|
-
{
|
|
327
|
-
bool error;
|
|
328
|
-
mrb_value *xerror;
|
|
329
|
-
mrb_value *xerror2;
|
|
330
|
-
mrb_state *state;
|
|
331
|
-
mrb_value *file;
|
|
332
|
-
} gettextpo_xerror_context = {};
|
|
333
|
-
|
|
334
|
-
static void
|
|
335
|
-
gettextpo_xerror_context_reset (mrb_state *state)
|
|
336
|
-
{
|
|
337
|
-
gettextpo_xerror_context.error = false;
|
|
338
|
-
gettextpo_xerror_context.xerror = NULL;
|
|
339
|
-
gettextpo_xerror_context.xerror2 = NULL;
|
|
340
|
-
gettextpo_xerror_context.state = state;
|
|
341
|
-
gettextpo_xerror_context.file = NULL;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
static void
|
|
345
|
-
gettextpo_xerror (const int severity, const po_message_t message,
|
|
346
|
-
const char *const filename, const size_t lineno,
|
|
347
|
-
const size_t column, const int multiline_p,
|
|
348
|
-
const char *const message_text)
|
|
349
|
-
{
|
|
350
|
-
gettextpo_xerror_context.error = true;
|
|
351
|
-
if (!gettextpo_xerror_context.xerror
|
|
352
|
-
|| mrb_nil_p (*gettextpo_xerror_context.xerror)
|
|
353
|
-
|| mrb_undef_p (*gettextpo_xerror_context.xerror))
|
|
354
|
-
return;
|
|
355
|
-
|
|
356
|
-
mrb_state *mrb = gettextpo_xerror_context.state;
|
|
357
|
-
mrb_value kwargs = mrb_hash_new (mrb);
|
|
358
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (severity)),
|
|
359
|
-
mrb_int_value (mrb, severity));
|
|
360
|
-
if (message)
|
|
361
|
-
{
|
|
362
|
-
mrb_value value = mrb_obj_value (mrb_data_object_alloc (
|
|
363
|
-
mrb, MESSAGE, message, &gettextpo_message_data_type));
|
|
364
|
-
mrb_iv_set (mrb, value, MRB_IVSYM (file),
|
|
365
|
-
*gettextpo_xerror_context.file);
|
|
366
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (message)), value);
|
|
367
|
-
}
|
|
368
|
-
if (filename)
|
|
369
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (filename)),
|
|
370
|
-
mrb_str_new_cstr (mrb, filename));
|
|
371
|
-
if (filename && (lineno != (size_t)(-1)))
|
|
372
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (lineno)),
|
|
373
|
-
mrb_int_value (mrb, lineno));
|
|
374
|
-
if (filename && lineno != (size_t)(-1) && column != (size_t)(-1))
|
|
375
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (column)),
|
|
376
|
-
mrb_int_value (mrb, column));
|
|
377
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (multiline)),
|
|
378
|
-
mrb_bool_value (multiline_p));
|
|
379
|
-
if (message_text)
|
|
380
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (message_text)),
|
|
381
|
-
mrb_str_new_cstr (mrb, message_text));
|
|
382
|
-
/* If someday proc calling supports keyword arguments, update
|
|
383
|
-
this. */
|
|
384
|
-
mrb_funcall_id (mrb, *gettextpo_xerror_context.xerror, MRB_SYM (call), 1,
|
|
385
|
-
kwargs);
|
|
386
|
-
|
|
387
|
-
if (severity == PO_SEVERITY_FATAL_ERROR)
|
|
388
|
-
abort ();
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
static void
|
|
392
|
-
gettextpo_xerror2 (const int severity, const po_message_t message1,
|
|
393
|
-
const char *const filename1, const size_t lineno1,
|
|
394
|
-
const size_t column1, const int multiline_p1,
|
|
395
|
-
const char *const message_text1,
|
|
396
|
-
const po_message_t message2, const char *const filename2,
|
|
397
|
-
const size_t lineno2, const size_t column2,
|
|
398
|
-
const int multiline_p2, const char *const message_text2)
|
|
399
|
-
{
|
|
400
|
-
gettextpo_xerror_context.error = true;
|
|
401
|
-
if (!gettextpo_xerror_context.xerror2
|
|
402
|
-
|| mrb_nil_p (*gettextpo_xerror_context.xerror2)
|
|
403
|
-
|| mrb_undef_p (*gettextpo_xerror_context.xerror2))
|
|
404
|
-
return;
|
|
405
|
-
|
|
406
|
-
mrb_state *mrb = gettextpo_xerror_context.state;
|
|
407
|
-
mrb_value kwargs = mrb_hash_new (mrb);
|
|
408
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (severity)),
|
|
409
|
-
mrb_int_value (mrb, severity));
|
|
410
|
-
if (message1)
|
|
411
|
-
{
|
|
412
|
-
mrb_value value = mrb_obj_value (mrb_data_object_alloc (
|
|
413
|
-
mrb, MESSAGE, message1, &gettextpo_message_data_type));
|
|
414
|
-
mrb_iv_set (mrb, value, MRB_IVSYM (file),
|
|
415
|
-
*gettextpo_xerror_context.file);
|
|
416
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (message1)), value);
|
|
417
|
-
}
|
|
418
|
-
if (filename1)
|
|
419
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (filename1)),
|
|
420
|
-
mrb_str_new_cstr (mrb, filename1));
|
|
421
|
-
if (filename1 && (lineno1 != (size_t)(-1)))
|
|
422
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (lineno1)),
|
|
423
|
-
mrb_int_value (mrb, lineno1));
|
|
424
|
-
if (filename1 && lineno1 != (size_t)(-1) && column1 != (size_t)(-1))
|
|
425
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (column1)),
|
|
426
|
-
mrb_int_value (mrb, column1));
|
|
427
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (multiline1)),
|
|
428
|
-
mrb_bool_value (multiline_p1));
|
|
429
|
-
if (message_text1)
|
|
430
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (message_text1)),
|
|
431
|
-
mrb_str_new_cstr (mrb, message_text1));
|
|
432
|
-
if (message2)
|
|
433
|
-
{
|
|
434
|
-
mrb_value value = mrb_obj_value (mrb_data_object_alloc (
|
|
435
|
-
mrb, MESSAGE, message2, &gettextpo_message_data_type));
|
|
436
|
-
mrb_iv_set (mrb, value, MRB_IVSYM (file),
|
|
437
|
-
*gettextpo_xerror_context.file);
|
|
438
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (message2)), value);
|
|
439
|
-
}
|
|
440
|
-
if (filename2)
|
|
441
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (filename2)),
|
|
442
|
-
mrb_str_new_cstr (mrb, filename2));
|
|
443
|
-
if (filename2 && (lineno2 != (size_t)(-1)))
|
|
444
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (lineno2)),
|
|
445
|
-
mrb_int_value (mrb, lineno2));
|
|
446
|
-
if (filename2 && lineno2 != (size_t)(-1) && column2 != (size_t)(-1))
|
|
447
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (column2)),
|
|
448
|
-
mrb_int_value (mrb, column2));
|
|
449
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (multiline2)),
|
|
450
|
-
mrb_bool_value (multiline_p2));
|
|
451
|
-
if (message_text2)
|
|
452
|
-
mrb_hash_set (mrb, kwargs, mrb_symbol_value (MRB_SYM (message_text2)),
|
|
453
|
-
mrb_str_new_cstr (mrb, message_text2));
|
|
454
|
-
/* If someday proc calling supports keyword arguments, update
|
|
455
|
-
this. */
|
|
456
|
-
mrb_funcall_id (mrb, *gettextpo_xerror_context.xerror2, MRB_SYM (call), 1,
|
|
457
|
-
kwargs);
|
|
458
|
-
|
|
459
|
-
if (severity == PO_SEVERITY_FATAL_ERROR)
|
|
460
|
-
abort ();
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
static const struct po_xerror_handler gettextpo_xerror_handler = {
|
|
464
|
-
.xerror = gettextpo_xerror,
|
|
465
|
-
.xerror2 = gettextpo_xerror2,
|
|
466
|
-
};
|
|
467
|
-
|
|
468
|
-
static mrb_value
|
|
469
|
-
gettextpo_m_formats (mrb_state *mrb, mrb_value self)
|
|
470
|
-
{
|
|
471
|
-
mrb_value value = mrb_ary_new (mrb);
|
|
472
|
-
const char *const *formats = po_format_list ();
|
|
473
|
-
for (size_t index = 0; formats[index]; index++)
|
|
474
|
-
mrb_ary_push (mrb, value, mrb_str_new_cstr (mrb, formats[index]));
|
|
475
|
-
return value;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
static mrb_value
|
|
479
|
-
gettextpo_m_format_pretty_name (mrb_state *mrb, mrb_value self)
|
|
480
|
-
{
|
|
481
|
-
char *format = NULL;
|
|
482
|
-
mrb_get_args (mrb, "z", &format);
|
|
483
|
-
const char *name = po_format_pretty_name (format);
|
|
484
|
-
return name ? mrb_str_new_cstr (mrb, name) : NIL;
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
static void
|
|
488
|
-
gettextpo_file_free (mrb_state *mrb, void *file)
|
|
489
|
-
{
|
|
490
|
-
if (file)
|
|
491
|
-
po_file_free (file);
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
static const struct mrb_data_type gettextpo_file_data_type = {
|
|
495
|
-
.struct_name = "gettextpo file",
|
|
496
|
-
.dfree = gettextpo_file_free,
|
|
497
|
-
};
|
|
498
|
-
|
|
499
|
-
static mrb_value
|
|
500
|
-
gettextpo_file_m_initialize (mrb_state *mrb, mrb_value self)
|
|
501
|
-
{
|
|
502
|
-
mrb_data_init (self, po_file_create (), &gettextpo_file_data_type);
|
|
503
|
-
return self;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
/**
|
|
507
|
-
* call-seq: read(filename)
|
|
508
|
-
*
|
|
509
|
-
* +filename+ must be resolved.
|
|
510
|
-
*/
|
|
511
|
-
static mrb_value
|
|
512
|
-
gettextpo_file_m_read (mrb_state *mrb, mrb_value klass)
|
|
513
|
-
{
|
|
514
|
-
char *filename = NULL;
|
|
515
|
-
mrb_sym table[] = { MRB_SYM (xerror), MRB_SYM (xerror2) };
|
|
516
|
-
size_t num = sizeof (table) / sizeof (table[0]);
|
|
517
|
-
mrb_value values[] = { NIL, NIL };
|
|
518
|
-
mrb_kwargs kwargs = { .num = num, .table = table, .values = values };
|
|
519
|
-
mrb_get_args (mrb, "z:", &filename, &kwargs);
|
|
520
|
-
|
|
521
|
-
gettextpo_xerror_context_reset (mrb);
|
|
522
|
-
gettextpo_xerror_context.xerror = &values[0];
|
|
523
|
-
gettextpo_xerror_context.xerror2 = &values[1];
|
|
524
|
-
mrb_value file = mrb_obj_value (mrb_data_object_alloc (
|
|
525
|
-
mrb, mrb_class_ptr (klass), NULL, &gettextpo_file_data_type));
|
|
526
|
-
gettextpo_xerror_context.file = &file;
|
|
527
|
-
|
|
528
|
-
po_file_t po_file = po_file_read (filename, &gettextpo_xerror_handler);
|
|
529
|
-
if (gettextpo_xerror_context.error || !po_file)
|
|
530
|
-
mrb_raise (mrb, ERROR, "failed to read file");
|
|
531
|
-
DATA_PTR (file) = po_file;
|
|
532
|
-
return file;
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
static mrb_value
|
|
536
|
-
gettextpo_file_m_write (mrb_state *mrb, mrb_value file)
|
|
537
|
-
{
|
|
538
|
-
char *filename = NULL;
|
|
539
|
-
mrb_sym table[] = { MRB_SYM (xerror), MRB_SYM (xerror2) };
|
|
540
|
-
size_t num = sizeof (table) / sizeof (table[0]);
|
|
541
|
-
mrb_value values[] = { NIL, NIL };
|
|
542
|
-
mrb_kwargs kwargs = { .num = num, .table = table, .values = values };
|
|
543
|
-
mrb_get_args (mrb, "z:", &filename, &kwargs);
|
|
544
|
-
|
|
545
|
-
gettextpo_xerror_context_reset (mrb);
|
|
546
|
-
gettextpo_xerror_context.xerror = &values[0];
|
|
547
|
-
gettextpo_xerror_context.xerror2 = &values[1];
|
|
548
|
-
gettextpo_xerror_context.file = &file;
|
|
549
|
-
|
|
550
|
-
po_file_write (DATA_PTR (file), filename, &gettextpo_xerror_handler);
|
|
551
|
-
if (gettextpo_xerror_context.error)
|
|
552
|
-
mrb_raise (mrb, ERROR, "failed to write file");
|
|
553
|
-
return NIL;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
static mrb_value
|
|
557
|
-
gettextpo_file_m_domains (mrb_state *mrb, mrb_value file)
|
|
558
|
-
{
|
|
559
|
-
const char *const *domains = po_file_domains (DATA_PTR (file));
|
|
560
|
-
mrb_value value = mrb_ary_new (mrb);
|
|
561
|
-
for (size_t index = 0; domains[index]; index++)
|
|
562
|
-
mrb_ary_push (mrb, value, mrb_str_new_cstr (mrb, domains[index]));
|
|
563
|
-
return value;
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
static mrb_value
|
|
567
|
-
gettextpo_file_m_domain_header (mrb_state *mrb, mrb_value file)
|
|
568
|
-
{
|
|
569
|
-
char *domain = NULL;
|
|
570
|
-
mrb_get_args (mrb, "|z", &domain);
|
|
571
|
-
|
|
572
|
-
const char *header = po_file_domain_header (DATA_PTR (file), domain);
|
|
573
|
-
return header ? mrb_str_new_cstr (mrb, header) : NIL;
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
static void
|
|
577
|
-
gettextpo_message_iterator_free (mrb_state *mrb, void *message_iterator)
|
|
578
|
-
{
|
|
579
|
-
if (message_iterator)
|
|
580
|
-
po_message_iterator_free (message_iterator);
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
static const struct mrb_data_type gettextpo_message_iterator_data_type = {
|
|
584
|
-
.struct_name = "gettextpo message iterator",
|
|
585
|
-
.dfree = gettextpo_message_iterator_free,
|
|
586
|
-
};
|
|
587
|
-
|
|
588
|
-
static mrb_value
|
|
589
|
-
gettextpo_file_m_message_iterator (mrb_state *mrb, mrb_value file)
|
|
590
|
-
{
|
|
591
|
-
const char *domain = NULL;
|
|
592
|
-
mrb_get_args (mrb, "|z", &domain);
|
|
593
|
-
|
|
594
|
-
mrb_value value = mrb_obj_value (mrb_data_object_alloc (
|
|
595
|
-
mrb,
|
|
596
|
-
mrb_class_get_under_id (mrb,
|
|
597
|
-
mrb_module_get_id (mrb, MRB_SYM (GettextPO)),
|
|
598
|
-
MRB_SYM (MessageIterator)),
|
|
599
|
-
po_message_iterator (DATA_PTR (file), domain),
|
|
600
|
-
&gettextpo_message_iterator_data_type));
|
|
601
|
-
mrb_iv_set (mrb, value, MRB_IVSYM (file), file);
|
|
602
|
-
return value;
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
static mrb_value
|
|
606
|
-
gettextpo_message_iterator_m_next (mrb_state *mrb, mrb_value message_iterator)
|
|
607
|
-
{
|
|
608
|
-
po_message_t message = po_next_message (DATA_PTR (message_iterator));
|
|
609
|
-
if (message)
|
|
610
|
-
{
|
|
611
|
-
mrb_value value = mrb_obj_value (mrb_data_object_alloc (
|
|
612
|
-
mrb,
|
|
613
|
-
mrb_class_get_under_id (mrb,
|
|
614
|
-
mrb_module_get_id (mrb, MRB_SYM (GettextPO)),
|
|
615
|
-
MRB_SYM (Message)),
|
|
616
|
-
message, &gettextpo_message_data_type));
|
|
617
|
-
mrb_iv_set (mrb, value, MRB_IVSYM (file),
|
|
618
|
-
mrb_iv_get (mrb, message_iterator, MRB_IVSYM (file)));
|
|
619
|
-
return value;
|
|
620
|
-
}
|
|
621
|
-
else
|
|
622
|
-
mrb_raise (mrb, STOP_ITERATION, "end of PO message iterator");
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
static mrb_value
|
|
626
|
-
gettextpo_message_iterator_m_insert (mrb_state *mrb,
|
|
627
|
-
mrb_value message_iterator)
|
|
628
|
-
{
|
|
629
|
-
char *msgid, *msgstr;
|
|
630
|
-
mrb_get_args (mrb, "zz", &msgid, &msgstr);
|
|
631
|
-
|
|
632
|
-
po_message_t message = po_message_create ();
|
|
633
|
-
po_message_set_msgid (message, msgid);
|
|
634
|
-
po_message_set_msgstr (message, msgstr);
|
|
635
|
-
po_message_insert (DATA_PTR (message_iterator), message);
|
|
636
|
-
|
|
637
|
-
mrb_value value = mrb_obj_value (mrb_data_object_alloc (
|
|
638
|
-
mrb,
|
|
639
|
-
mrb_class_get_under_id (mrb,
|
|
640
|
-
mrb_module_get_id (mrb, MRB_SYM (GettextPO)),
|
|
641
|
-
MRB_SYM (Message)),
|
|
642
|
-
message, &gettextpo_message_data_type));
|
|
643
|
-
mrb_iv_set (mrb, value, MRB_IVSYM (file),
|
|
644
|
-
mrb_iv_get (mrb, message_iterator, MRB_IVSYM (file)));
|
|
645
|
-
return value;
|
|
646
|
-
}
|
|
647
|
-
|
|
648
|
-
static void
|
|
649
|
-
gettextpo_filepos_free (mrb_state *mrb, void *filepos)
|
|
650
|
-
{
|
|
651
|
-
/* NOTE: filepos is freed by file struct */
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
static const mrb_data_type gettextpo_filepos_data_type = {
|
|
655
|
-
.struct_name = "gettextpo filepos",
|
|
656
|
-
.dfree = gettextpo_filepos_free,
|
|
657
|
-
};
|
|
658
|
-
|
|
659
|
-
static mrb_value
|
|
660
|
-
gettextpo_message_m_filepos (mrb_state *mrb, mrb_value self)
|
|
661
|
-
{
|
|
662
|
-
mrb_int index = 0;
|
|
663
|
-
mrb_get_args (mrb, "i", &index);
|
|
664
|
-
|
|
665
|
-
po_filepos_t pos = po_message_filepos (DATA_PTR (self), index);
|
|
666
|
-
if (pos)
|
|
667
|
-
{
|
|
668
|
-
mrb_value value = mrb_obj_value (mrb_data_object_alloc (
|
|
669
|
-
mrb, mrb_class_get_under_id (mrb, MODULE, MRB_SYM (FilePos)), pos,
|
|
670
|
-
&gettextpo_filepos_data_type));
|
|
671
|
-
mrb_iv_set (mrb, value, MRB_IVSYM (file),
|
|
672
|
-
mrb_iv_get (mrb, self, MRB_IVSYM (file)));
|
|
673
|
-
return value;
|
|
674
|
-
}
|
|
675
|
-
else
|
|
676
|
-
return NIL;
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
static mrb_value
|
|
680
|
-
gettextpo_filepos_m_file (mrb_state *mrb, mrb_value self)
|
|
681
|
-
{
|
|
682
|
-
const char *file = po_filepos_file (DATA_PTR (self));
|
|
683
|
-
return file ? mrb_str_new_cstr (mrb, file) : NIL;
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
static mrb_value
|
|
687
|
-
gettextpo_filepos_m_start_line (mrb_state *mrb, mrb_value self)
|
|
688
|
-
{
|
|
689
|
-
size_t start_line = po_filepos_start_line (DATA_PTR (self));
|
|
690
|
-
return start_line == (size_t)(-1) ? NIL : mrb_int_value (mrb, start_line);
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
static mrb_value
|
|
694
|
-
gettextpo_message_m_add_filepos (mrb_state *mrb, mrb_value self)
|
|
695
|
-
{
|
|
696
|
-
char *file = NULL;
|
|
697
|
-
size_t start_line = 0;
|
|
698
|
-
mrb_get_args (mrb, "zi", &file, &start_line);
|
|
699
|
-
|
|
700
|
-
po_message_add_filepos (DATA_PTR (self), file, start_line);
|
|
701
|
-
return NIL;
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
static mrb_value
|
|
705
|
-
gettextpo_message_m_remove_filepos (mrb_state *mrb, mrb_value self)
|
|
706
|
-
{
|
|
707
|
-
mrb_int start_line = 0;
|
|
708
|
-
mrb_get_args (mrb, "i", &start_line);
|
|
709
|
-
|
|
710
|
-
po_message_remove_filepos (DATA_PTR (self), start_line);
|
|
711
|
-
return NIL;
|
|
712
|
-
}
|
|
713
|
-
|
|
714
|
-
static mrb_value
|
|
715
|
-
gettextpo_file_m_check_all (mrb_state *mrb, mrb_value self)
|
|
716
|
-
{
|
|
717
|
-
mrb_sym table[] = { MRB_SYM (xerror), MRB_SYM (xerror2) };
|
|
718
|
-
size_t num = sizeof (table) / sizeof (table[0]);
|
|
719
|
-
mrb_value values[] = { NIL, NIL };
|
|
720
|
-
mrb_kwargs kwargs = { .num = num, .table = table, .values = values };
|
|
721
|
-
mrb_get_args (mrb, ":", &kwargs);
|
|
722
|
-
|
|
723
|
-
gettextpo_xerror_context_reset (mrb);
|
|
724
|
-
gettextpo_xerror_context.xerror = &values[0];
|
|
725
|
-
gettextpo_xerror_context.xerror2 = &values[1];
|
|
726
|
-
gettextpo_xerror_context.file = &self;
|
|
727
|
-
|
|
728
|
-
po_file_check_all (DATA_PTR (self), &gettextpo_xerror_handler);
|
|
729
|
-
if (gettextpo_xerror_context.error)
|
|
730
|
-
mrb_raise (mrb, ERROR, "check all for file failed");
|
|
731
|
-
return NIL;
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
static mrb_value
|
|
735
|
-
gettextpo_message_m_check_all (mrb_state *mrb, mrb_value self)
|
|
736
|
-
{
|
|
737
|
-
mrb_value iterator;
|
|
738
|
-
mrb_sym table[] = { MRB_SYM (xerror), MRB_SYM (xerror2) };
|
|
739
|
-
size_t num = sizeof (table) / sizeof (table[0]);
|
|
740
|
-
mrb_value values[] = { NIL, NIL };
|
|
741
|
-
mrb_kwargs kwargs = { .num = num, .table = table, .values = values };
|
|
742
|
-
mrb_get_args (mrb, "o:", &iterator, &kwargs);
|
|
743
|
-
|
|
744
|
-
gettextpo_xerror_context_reset (mrb);
|
|
745
|
-
gettextpo_xerror_context.xerror = &values[0];
|
|
746
|
-
gettextpo_xerror_context.xerror2 = &values[1];
|
|
747
|
-
mrb_value file = mrb_iv_get (mrb, self, MRB_IVSYM (file));
|
|
748
|
-
gettextpo_xerror_context.file = &file;
|
|
749
|
-
|
|
750
|
-
po_message_check_all (DATA_PTR (self), DATA_PTR (iterator),
|
|
751
|
-
&gettextpo_xerror_handler);
|
|
752
|
-
if (gettextpo_xerror_context.error)
|
|
753
|
-
mrb_raise (mrb, ERROR, "check all for message failed");
|
|
754
|
-
return NIL;
|
|
755
|
-
}
|
|
756
|
-
|
|
757
|
-
static mrb_value
|
|
758
|
-
gettextpo_message_m_check_format (mrb_state *mrb, mrb_value self)
|
|
759
|
-
{
|
|
760
|
-
mrb_sym table[] = { MRB_SYM (xerror), MRB_SYM (xerror2) };
|
|
761
|
-
size_t num = sizeof (table) / sizeof (table[0]);
|
|
762
|
-
mrb_value values[] = { NIL, NIL };
|
|
763
|
-
mrb_kwargs kwargs = { .num = num, .table = table, .values = values };
|
|
764
|
-
mrb_get_args (mrb, ":", &kwargs);
|
|
765
|
-
|
|
766
|
-
gettextpo_xerror_context_reset (mrb);
|
|
767
|
-
gettextpo_xerror_context.xerror = &values[0];
|
|
768
|
-
gettextpo_xerror_context.xerror2 = &values[1];
|
|
769
|
-
mrb_value file = mrb_iv_get (mrb, self, MRB_IVSYM (file));
|
|
770
|
-
gettextpo_xerror_context.file = &file;
|
|
771
|
-
|
|
772
|
-
po_message_check_format (DATA_PTR (self), &gettextpo_xerror_handler);
|
|
773
|
-
if (gettextpo_xerror_context.error)
|
|
774
|
-
mrb_raise (mrb, ERROR, "check format for message failed");
|
|
775
|
-
return NIL;
|
|
776
|
-
}
|
|
777
|
-
|
|
778
|
-
void
|
|
779
|
-
mrb_mruby_gettextpo_gem_init (mrb_state *const mrb)
|
|
780
|
-
{
|
|
781
|
-
struct RClass *const mrb_mGettextPO
|
|
782
|
-
= mrb_define_module_id (mrb, MRB_SYM (GettextPO));
|
|
783
|
-
mrb_define_const_id (mrb, mrb_mGettextPO, MRB_SYM (LIBGETTEXTPO_VERSION),
|
|
784
|
-
mrb_int_value (mrb, libgettextpo_version));
|
|
785
|
-
mrb_define_const_id (mrb, mrb_mGettextPO, MRB_SYM (SEVERITY_WARNING),
|
|
786
|
-
mrb_int_value (mrb, PO_SEVERITY_WARNING));
|
|
787
|
-
mrb_define_const_id (mrb, mrb_mGettextPO, MRB_SYM (SEVERITY_ERROR),
|
|
788
|
-
mrb_int_value (mrb, PO_SEVERITY_ERROR));
|
|
789
|
-
mrb_define_const_id (mrb, mrb_mGettextPO, MRB_SYM (SEVERITY_FATAL_ERROR),
|
|
790
|
-
mrb_int_value (mrb, PO_SEVERITY_FATAL_ERROR));
|
|
791
|
-
mrb_define_module_function_id (mrb, mrb_mGettextPO, MRB_SYM (formats),
|
|
792
|
-
gettextpo_m_formats, MRB_ARGS_NONE ());
|
|
793
|
-
mrb_define_module_function_id (
|
|
794
|
-
mrb, mrb_mGettextPO, MRB_SYM (format_pretty_name),
|
|
795
|
-
gettextpo_m_format_pretty_name, MRB_ARGS_REQ (1));
|
|
796
|
-
mrb_define_module_function_id (
|
|
797
|
-
mrb, mrb_mGettextPO, MRB_SYM (header_entry_value),
|
|
798
|
-
gettextpo_m_header_entry_value, MRB_ARGS_REQ (2));
|
|
799
|
-
mrb_define_module_function_id (
|
|
800
|
-
mrb, mrb_mGettextPO, MRB_SYM (header_with_updated_entry_value),
|
|
801
|
-
gettextpo_m_header_with_updated_entry_value, MRB_ARGS_REQ (3));
|
|
802
|
-
struct RClass *const mrb_cFile = mrb_define_class_under_id (
|
|
803
|
-
mrb, mrb_mGettextPO, MRB_SYM (File), mrb->object_class);
|
|
804
|
-
MRB_SET_INSTANCE_TT (mrb_cFile, MRB_TT_CDATA);
|
|
805
|
-
mrb_define_class_method_id (mrb, mrb_cFile, MRB_SYM (read),
|
|
806
|
-
gettextpo_file_m_read, MRB_ARGS_ANY ());
|
|
807
|
-
mrb_define_method_id (mrb, mrb_cFile, MRB_SYM (initialize),
|
|
808
|
-
gettextpo_file_m_initialize, MRB_ARGS_NONE ());
|
|
809
|
-
mrb_define_method_id (mrb, mrb_cFile, MRB_SYM (write),
|
|
810
|
-
gettextpo_file_m_write, MRB_ARGS_ANY ());
|
|
811
|
-
mrb_define_method_id (mrb, mrb_cFile, MRB_SYM (domains),
|
|
812
|
-
gettextpo_file_m_domains, MRB_ARGS_NONE ());
|
|
813
|
-
mrb_define_method_id (mrb, mrb_cFile, MRB_SYM (message_iterator),
|
|
814
|
-
gettextpo_file_m_message_iterator, MRB_ARGS_OPT (1));
|
|
815
|
-
mrb_define_method_id (mrb, mrb_cFile, MRB_SYM (domain_header),
|
|
816
|
-
gettextpo_file_m_domain_header, MRB_ARGS_OPT (1));
|
|
817
|
-
mrb_define_method_id (mrb, mrb_cFile, MRB_SYM (check_all),
|
|
818
|
-
gettextpo_file_m_check_all, MRB_ARGS_ANY ());
|
|
819
|
-
struct RClass *const mrb_cMessage = mrb_define_class_under_id (
|
|
820
|
-
mrb, mrb_mGettextPO, MRB_SYM (Message), mrb->object_class);
|
|
821
|
-
MRB_SET_INSTANCE_TT (mrb_cMessage, MRB_TT_CDATA);
|
|
822
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (msgctxt),
|
|
823
|
-
gettextpo_message_m_msgctxt, MRB_ARGS_NONE ());
|
|
824
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (msgctxt),
|
|
825
|
-
gettextpo_message_m_msgctxt_set, MRB_ARGS_REQ (1));
|
|
826
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (msgid),
|
|
827
|
-
gettextpo_message_m_msgid, MRB_ARGS_NONE ());
|
|
828
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (msgid),
|
|
829
|
-
gettextpo_message_m_msgid_set, MRB_ARGS_REQ (1));
|
|
830
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (msgid_plural),
|
|
831
|
-
gettextpo_message_m_msgid_plural, MRB_ARGS_NONE ());
|
|
832
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (msgid_plural),
|
|
833
|
-
gettextpo_message_m_msgid_plural_set,
|
|
834
|
-
MRB_ARGS_REQ (1));
|
|
835
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (msgstr),
|
|
836
|
-
gettextpo_message_m_msgstr, MRB_ARGS_NONE ());
|
|
837
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (msgstr),
|
|
838
|
-
gettextpo_message_m_msgstr_set, MRB_ARGS_REQ (1));
|
|
839
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (msgstr_plural),
|
|
840
|
-
gettextpo_message_m_msgstr_plural, MRB_ARGS_REQ (1));
|
|
841
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (set_msgstr_plural),
|
|
842
|
-
gettextpo_message_m_msgstr_plural_set,
|
|
843
|
-
MRB_ARGS_REQ (2));
|
|
844
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (comments),
|
|
845
|
-
gettextpo_message_m_comments, MRB_ARGS_NONE ());
|
|
846
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (comments),
|
|
847
|
-
gettextpo_message_m_comments_set, MRB_ARGS_REQ (1));
|
|
848
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (extracted_comments),
|
|
849
|
-
gettextpo_message_m_extracted_comments,
|
|
850
|
-
MRB_ARGS_NONE ());
|
|
851
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (extracted_comments),
|
|
852
|
-
gettextpo_message_m_extracted_comments_set,
|
|
853
|
-
MRB_ARGS_REQ (1));
|
|
854
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (prev_msgctxt),
|
|
855
|
-
gettextpo_message_m_prev_msgctxt, MRB_ARGS_NONE ());
|
|
856
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (prev_msgctxt),
|
|
857
|
-
gettextpo_message_m_prev_msgctxt_set,
|
|
858
|
-
MRB_ARGS_REQ (1));
|
|
859
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (prev_msgid),
|
|
860
|
-
gettextpo_message_m_prev_msgid, MRB_ARGS_NONE ());
|
|
861
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (prev_msgid),
|
|
862
|
-
gettextpo_message_m_prev_msgid_set, MRB_ARGS_REQ (1));
|
|
863
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (prev_msgid_plural),
|
|
864
|
-
gettextpo_message_m_prev_msgid_plural,
|
|
865
|
-
MRB_ARGS_NONE ());
|
|
866
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (prev_msgid_plural),
|
|
867
|
-
gettextpo_message_m_prev_msgid_plural_set,
|
|
868
|
-
MRB_ARGS_REQ (1));
|
|
869
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_Q (obsolete),
|
|
870
|
-
gettextpo_message_m_obsolete, MRB_ARGS_NONE ());
|
|
871
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (obsolete),
|
|
872
|
-
gettextpo_message_m_obsolete_set, MRB_ARGS_REQ (1));
|
|
873
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_Q (fuzzy),
|
|
874
|
-
gettextpo_message_m_fuzzy, MRB_ARGS_NONE ());
|
|
875
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (fuzzy),
|
|
876
|
-
gettextpo_message_m_fuzzy_set, MRB_ARGS_REQ (1));
|
|
877
|
-
|
|
878
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_Q (workflow_flag),
|
|
879
|
-
gettextpo_message_m_workflow_flag_q, MRB_ARGS_REQ (1));
|
|
880
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (update_workflow_flag),
|
|
881
|
-
gettextpo_message_m_workflow_flag_update,
|
|
882
|
-
MRB_ARGS_ANY ());
|
|
883
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (workflow_flag_iterator),
|
|
884
|
-
gettextpo_message_m_workflow_flag_iterator,
|
|
885
|
-
MRB_ARGS_NONE ());
|
|
886
|
-
|
|
887
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_Q (format),
|
|
888
|
-
gettextpo_message_m_format_q, MRB_ARGS_REQ (1));
|
|
889
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (format),
|
|
890
|
-
gettextpo_message_m_format, MRB_ARGS_REQ (1));
|
|
891
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (update_format),
|
|
892
|
-
gettextpo_message_m_format_set, MRB_ARGS_ANY ());
|
|
893
|
-
|
|
894
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_Q (sticky_flag),
|
|
895
|
-
gettextpo_message_m_sticky_flag_q, MRB_ARGS_REQ (1));
|
|
896
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (update_sticky_flag),
|
|
897
|
-
gettextpo_message_m_sticky_flag_update,
|
|
898
|
-
MRB_ARGS_ANY ());
|
|
899
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (sticky_flag_iterator),
|
|
900
|
-
gettextpo_message_m_sticky_flag_iterator,
|
|
901
|
-
MRB_ARGS_NONE ());
|
|
902
|
-
|
|
903
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_Q (range),
|
|
904
|
-
gettextpo_message_m_range, MRB_ARGS_REQ (1));
|
|
905
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM_E (range),
|
|
906
|
-
gettextpo_message_m_range_set, MRB_ARGS_REQ (1));
|
|
907
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (filepos),
|
|
908
|
-
gettextpo_message_m_filepos, MRB_ARGS_REQ (1));
|
|
909
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (add_filepos),
|
|
910
|
-
gettextpo_message_m_add_filepos, MRB_ARGS_REQ (2));
|
|
911
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (remove_filepos),
|
|
912
|
-
gettextpo_message_m_remove_filepos, MRB_ARGS_REQ (1));
|
|
913
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (check_all),
|
|
914
|
-
gettextpo_message_m_check_all, MRB_ARGS_ANY ());
|
|
915
|
-
mrb_define_method_id (mrb, mrb_cMessage, MRB_SYM (check_format),
|
|
916
|
-
gettextpo_message_m_check_format, MRB_ARGS_ANY ());
|
|
917
|
-
struct RClass *const mrb_cMessageIterator = mrb_define_class_under_id (
|
|
918
|
-
mrb, mrb_mGettextPO, MRB_SYM (MessageIterator), mrb->object_class);
|
|
919
|
-
MRB_SET_INSTANCE_TT (mrb_cMessageIterator, MRB_TT_CDATA);
|
|
920
|
-
mrb_define_method_id (mrb, mrb_cMessageIterator, MRB_SYM (next),
|
|
921
|
-
gettextpo_message_iterator_m_next, MRB_ARGS_NONE ());
|
|
922
|
-
mrb_define_method_id (mrb, mrb_cMessageIterator, MRB_SYM (insert),
|
|
923
|
-
gettextpo_message_iterator_m_insert, MRB_ARGS_REQ (2));
|
|
924
|
-
struct RClass *const mrb_cFilePos = mrb_define_class_under_id (
|
|
925
|
-
mrb, mrb_mGettextPO, MRB_SYM (FilePos), mrb->object_class);
|
|
926
|
-
MRB_SET_INSTANCE_TT (mrb_cFilePos, MRB_TT_CDATA);
|
|
927
|
-
mrb_define_method_id (mrb, mrb_cFilePos, MRB_SYM (file),
|
|
928
|
-
gettextpo_filepos_m_file, MRB_ARGS_NONE ());
|
|
929
|
-
mrb_define_method_id (mrb, mrb_cFilePos, MRB_SYM (start_line),
|
|
930
|
-
gettextpo_filepos_m_start_line, MRB_ARGS_NONE ());
|
|
931
|
-
struct RClass *const mrb_cFlagIterator = mrb_define_class_under_id (
|
|
932
|
-
mrb, mrb_mGettextPO, MRB_SYM (FlagIterator), mrb->object_class);
|
|
933
|
-
MRB_SET_INSTANCE_TT (mrb_cFlagIterator, MRB_TT_CDATA);
|
|
934
|
-
mrb_define_method_id (mrb, mrb_cFlagIterator, MRB_SYM (next),
|
|
935
|
-
gettextpo_flag_iterator_m_next, MRB_ARGS_NONE ());
|
|
936
|
-
DONE;
|
|
937
|
-
}
|
|
938
|
-
|
|
939
|
-
void
|
|
940
|
-
mrb_mruby_gettextpo_gem_final (const mrb_state *const mrb)
|
|
941
|
-
{
|
|
942
|
-
}
|