psych 3.0.0.beta2-x86-mingw32

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.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.travis.yml +20 -0
  4. data/CHANGELOG.rdoc +576 -0
  5. data/Gemfile +3 -0
  6. data/Mavenfile +7 -0
  7. data/README.md +73 -0
  8. data/Rakefile +46 -0
  9. data/bin/console +7 -0
  10. data/bin/setup +6 -0
  11. data/ext/psych/.gitignore +11 -0
  12. data/ext/psych/depend +3 -0
  13. data/ext/psych/extconf.rb +39 -0
  14. data/ext/psych/psych.c +34 -0
  15. data/ext/psych/psych.h +17 -0
  16. data/ext/psych/psych_emitter.c +554 -0
  17. data/ext/psych/psych_emitter.h +8 -0
  18. data/ext/psych/psych_parser.c +568 -0
  19. data/ext/psych/psych_parser.h +6 -0
  20. data/ext/psych/psych_to_ruby.c +39 -0
  21. data/ext/psych/psych_to_ruby.h +8 -0
  22. data/ext/psych/psych_yaml_tree.c +24 -0
  23. data/ext/psych/psych_yaml_tree.h +8 -0
  24. data/ext/psych/yaml/LICENSE +19 -0
  25. data/ext/psych/yaml/api.c +1392 -0
  26. data/ext/psych/yaml/config.h +10 -0
  27. data/ext/psych/yaml/dumper.c +394 -0
  28. data/ext/psych/yaml/emitter.c +2329 -0
  29. data/ext/psych/yaml/loader.c +444 -0
  30. data/ext/psych/yaml/parser.c +1374 -0
  31. data/ext/psych/yaml/reader.c +469 -0
  32. data/ext/psych/yaml/scanner.c +3576 -0
  33. data/ext/psych/yaml/writer.c +141 -0
  34. data/ext/psych/yaml/yaml.h +1971 -0
  35. data/ext/psych/yaml/yaml_private.h +662 -0
  36. data/lib/2.2/psych.so +0 -0
  37. data/lib/2.3/psych.so +0 -0
  38. data/lib/2.4/psych.so +0 -0
  39. data/lib/psych/class_loader.rb +102 -0
  40. data/lib/psych/coder.rb +95 -0
  41. data/lib/psych/core_ext.rb +19 -0
  42. data/lib/psych/exception.rb +14 -0
  43. data/lib/psych/handler.rb +250 -0
  44. data/lib/psych/handlers/document_stream.rb +23 -0
  45. data/lib/psych/handlers/recorder.rb +40 -0
  46. data/lib/psych/json/ruby_events.rb +20 -0
  47. data/lib/psych/json/stream.rb +17 -0
  48. data/lib/psych/json/tree_builder.rb +13 -0
  49. data/lib/psych/json/yaml_events.rb +30 -0
  50. data/lib/psych/nodes/alias.rb +19 -0
  51. data/lib/psych/nodes/document.rb +61 -0
  52. data/lib/psych/nodes/mapping.rb +57 -0
  53. data/lib/psych/nodes/node.rb +56 -0
  54. data/lib/psych/nodes/scalar.rb +68 -0
  55. data/lib/psych/nodes/sequence.rb +82 -0
  56. data/lib/psych/nodes/stream.rb +38 -0
  57. data/lib/psych/nodes.rb +78 -0
  58. data/lib/psych/omap.rb +5 -0
  59. data/lib/psych/parser.rb +52 -0
  60. data/lib/psych/scalar_scanner.rb +149 -0
  61. data/lib/psych/set.rb +5 -0
  62. data/lib/psych/stream.rb +38 -0
  63. data/lib/psych/streaming.rb +28 -0
  64. data/lib/psych/syntax_error.rb +22 -0
  65. data/lib/psych/tree_builder.rb +97 -0
  66. data/lib/psych/versions.rb +9 -0
  67. data/lib/psych/visitors/depth_first.rb +27 -0
  68. data/lib/psych/visitors/emitter.rb +52 -0
  69. data/lib/psych/visitors/json_tree.rb +25 -0
  70. data/lib/psych/visitors/to_ruby.rb +401 -0
  71. data/lib/psych/visitors/visitor.rb +20 -0
  72. data/lib/psych/visitors/yaml_tree.rb +551 -0
  73. data/lib/psych/visitors.rb +7 -0
  74. data/lib/psych/y.rb +10 -0
  75. data/lib/psych.rb +511 -0
  76. data/psych.gemspec +64 -0
  77. metadata +175 -0
@@ -0,0 +1,10 @@
1
+ #define PACKAGE_NAME "yaml"
2
+ #define PACKAGE_TARNAME "yaml"
3
+ #define PACKAGE_VERSION "0.1.7"
4
+ #define PACKAGE_STRING "yaml 0.1.7"
5
+ #define PACKAGE_BUGREPORT "https://github.com/yaml/libyaml/issues"
6
+ #define PACKAGE_URL "https://github.com/yaml/libyaml"
7
+ #define YAML_VERSION_MAJOR 0
8
+ #define YAML_VERSION_MINOR 1
9
+ #define YAML_VERSION_PATCH 7
10
+ #define YAML_VERSION_STRING "0.1.7"
@@ -0,0 +1,394 @@
1
+
2
+ #include "yaml_private.h"
3
+
4
+ /*
5
+ * API functions.
6
+ */
7
+
8
+ YAML_DECLARE(int)
9
+ yaml_emitter_open(yaml_emitter_t *emitter);
10
+
11
+ YAML_DECLARE(int)
12
+ yaml_emitter_close(yaml_emitter_t *emitter);
13
+
14
+ YAML_DECLARE(int)
15
+ yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document);
16
+
17
+ /*
18
+ * Clean up functions.
19
+ */
20
+
21
+ static void
22
+ yaml_emitter_delete_document_and_anchors(yaml_emitter_t *emitter);
23
+
24
+ /*
25
+ * Anchor functions.
26
+ */
27
+
28
+ static void
29
+ yaml_emitter_anchor_node(yaml_emitter_t *emitter, int index);
30
+
31
+ static yaml_char_t *
32
+ yaml_emitter_generate_anchor(yaml_emitter_t *emitter, int anchor_id);
33
+
34
+
35
+ /*
36
+ * Serialize functions.
37
+ */
38
+
39
+ static int
40
+ yaml_emitter_dump_node(yaml_emitter_t *emitter, int index);
41
+
42
+ static int
43
+ yaml_emitter_dump_alias(yaml_emitter_t *emitter, yaml_char_t *anchor);
44
+
45
+ static int
46
+ yaml_emitter_dump_scalar(yaml_emitter_t *emitter, yaml_node_t *node,
47
+ yaml_char_t *anchor);
48
+
49
+ static int
50
+ yaml_emitter_dump_sequence(yaml_emitter_t *emitter, yaml_node_t *node,
51
+ yaml_char_t *anchor);
52
+
53
+ static int
54
+ yaml_emitter_dump_mapping(yaml_emitter_t *emitter, yaml_node_t *node,
55
+ yaml_char_t *anchor);
56
+
57
+ /*
58
+ * Issue a STREAM-START event.
59
+ */
60
+
61
+ YAML_DECLARE(int)
62
+ yaml_emitter_open(yaml_emitter_t *emitter)
63
+ {
64
+ yaml_event_t event;
65
+ yaml_mark_t mark = { 0, 0, 0 };
66
+
67
+ assert(emitter); /* Non-NULL emitter object is required. */
68
+ assert(!emitter->opened); /* Emitter should not be opened yet. */
69
+
70
+ STREAM_START_EVENT_INIT(event, YAML_ANY_ENCODING, mark, mark);
71
+
72
+ if (!yaml_emitter_emit(emitter, &event)) {
73
+ return 0;
74
+ }
75
+
76
+ emitter->opened = 1;
77
+
78
+ return 1;
79
+ }
80
+
81
+ /*
82
+ * Issue a STREAM-END event.
83
+ */
84
+
85
+ YAML_DECLARE(int)
86
+ yaml_emitter_close(yaml_emitter_t *emitter)
87
+ {
88
+ yaml_event_t event;
89
+ yaml_mark_t mark = { 0, 0, 0 };
90
+
91
+ assert(emitter); /* Non-NULL emitter object is required. */
92
+ assert(emitter->opened); /* Emitter should be opened. */
93
+
94
+ if (emitter->closed) return 1;
95
+
96
+ STREAM_END_EVENT_INIT(event, mark, mark);
97
+
98
+ if (!yaml_emitter_emit(emitter, &event)) {
99
+ return 0;
100
+ }
101
+
102
+ emitter->closed = 1;
103
+
104
+ return 1;
105
+ }
106
+
107
+ /*
108
+ * Dump a YAML document.
109
+ */
110
+
111
+ YAML_DECLARE(int)
112
+ yaml_emitter_dump(yaml_emitter_t *emitter, yaml_document_t *document)
113
+ {
114
+ yaml_event_t event;
115
+ yaml_mark_t mark = { 0, 0, 0 };
116
+
117
+ assert(emitter); /* Non-NULL emitter object is required. */
118
+ assert(document); /* Non-NULL emitter object is expected. */
119
+
120
+ emitter->document = document;
121
+
122
+ if (!emitter->opened) {
123
+ if (!yaml_emitter_open(emitter)) goto error;
124
+ }
125
+
126
+ if (STACK_EMPTY(emitter, document->nodes)) {
127
+ if (!yaml_emitter_close(emitter)) goto error;
128
+ yaml_emitter_delete_document_and_anchors(emitter);
129
+ return 1;
130
+ }
131
+
132
+ assert(emitter->opened); /* Emitter should be opened. */
133
+
134
+ emitter->anchors = yaml_malloc(sizeof(*(emitter->anchors))
135
+ * (document->nodes.top - document->nodes.start));
136
+ if (!emitter->anchors) goto error;
137
+ memset(emitter->anchors, 0, sizeof(*(emitter->anchors))
138
+ * (document->nodes.top - document->nodes.start));
139
+
140
+ DOCUMENT_START_EVENT_INIT(event, document->version_directive,
141
+ document->tag_directives.start, document->tag_directives.end,
142
+ document->start_implicit, mark, mark);
143
+ if (!yaml_emitter_emit(emitter, &event)) goto error;
144
+
145
+ yaml_emitter_anchor_node(emitter, 1);
146
+ if (!yaml_emitter_dump_node(emitter, 1)) goto error;
147
+
148
+ DOCUMENT_END_EVENT_INIT(event, document->end_implicit, mark, mark);
149
+ if (!yaml_emitter_emit(emitter, &event)) goto error;
150
+
151
+ yaml_emitter_delete_document_and_anchors(emitter);
152
+
153
+ return 1;
154
+
155
+ error:
156
+
157
+ yaml_emitter_delete_document_and_anchors(emitter);
158
+
159
+ return 0;
160
+ }
161
+
162
+ /*
163
+ * Clean up the emitter object after a document is dumped.
164
+ */
165
+
166
+ static void
167
+ yaml_emitter_delete_document_and_anchors(yaml_emitter_t *emitter)
168
+ {
169
+ int index;
170
+
171
+ if (!emitter->anchors) {
172
+ yaml_document_delete(emitter->document);
173
+ emitter->document = NULL;
174
+ return;
175
+ }
176
+
177
+ for (index = 0; emitter->document->nodes.start + index
178
+ < emitter->document->nodes.top; index ++) {
179
+ yaml_node_t node = emitter->document->nodes.start[index];
180
+ if (!emitter->anchors[index].serialized) {
181
+ yaml_free(node.tag);
182
+ if (node.type == YAML_SCALAR_NODE) {
183
+ yaml_free(node.data.scalar.value);
184
+ }
185
+ }
186
+ if (node.type == YAML_SEQUENCE_NODE) {
187
+ STACK_DEL(emitter, node.data.sequence.items);
188
+ }
189
+ if (node.type == YAML_MAPPING_NODE) {
190
+ STACK_DEL(emitter, node.data.mapping.pairs);
191
+ }
192
+ }
193
+
194
+ STACK_DEL(emitter, emitter->document->nodes);
195
+ yaml_free(emitter->anchors);
196
+
197
+ emitter->anchors = NULL;
198
+ emitter->last_anchor_id = 0;
199
+ emitter->document = NULL;
200
+ }
201
+
202
+ /*
203
+ * Check the references of a node and assign the anchor id if needed.
204
+ */
205
+
206
+ static void
207
+ yaml_emitter_anchor_node(yaml_emitter_t *emitter, int index)
208
+ {
209
+ yaml_node_t *node = emitter->document->nodes.start + index - 1;
210
+ yaml_node_item_t *item;
211
+ yaml_node_pair_t *pair;
212
+
213
+ emitter->anchors[index-1].references ++;
214
+
215
+ if (emitter->anchors[index-1].references == 1) {
216
+ switch (node->type) {
217
+ case YAML_SEQUENCE_NODE:
218
+ for (item = node->data.sequence.items.start;
219
+ item < node->data.sequence.items.top; item ++) {
220
+ yaml_emitter_anchor_node(emitter, *item);
221
+ }
222
+ break;
223
+ case YAML_MAPPING_NODE:
224
+ for (pair = node->data.mapping.pairs.start;
225
+ pair < node->data.mapping.pairs.top; pair ++) {
226
+ yaml_emitter_anchor_node(emitter, pair->key);
227
+ yaml_emitter_anchor_node(emitter, pair->value);
228
+ }
229
+ break;
230
+ default:
231
+ break;
232
+ }
233
+ }
234
+
235
+ else if (emitter->anchors[index-1].references == 2) {
236
+ emitter->anchors[index-1].anchor = (++ emitter->last_anchor_id);
237
+ }
238
+ }
239
+
240
+ /*
241
+ * Generate a textual representation for an anchor.
242
+ */
243
+
244
+ #define ANCHOR_TEMPLATE "id%03d"
245
+ #define ANCHOR_TEMPLATE_LENGTH 16
246
+
247
+ static yaml_char_t *
248
+ yaml_emitter_generate_anchor(yaml_emitter_t *emitter, int anchor_id)
249
+ {
250
+ yaml_char_t *anchor = yaml_malloc(ANCHOR_TEMPLATE_LENGTH);
251
+
252
+ if (!anchor) return NULL;
253
+
254
+ sprintf((char *)anchor, ANCHOR_TEMPLATE, anchor_id);
255
+
256
+ return anchor;
257
+ }
258
+
259
+ /*
260
+ * Serialize a node.
261
+ */
262
+
263
+ static int
264
+ yaml_emitter_dump_node(yaml_emitter_t *emitter, int index)
265
+ {
266
+ yaml_node_t *node = emitter->document->nodes.start + index - 1;
267
+ int anchor_id = emitter->anchors[index-1].anchor;
268
+ yaml_char_t *anchor = NULL;
269
+
270
+ if (anchor_id) {
271
+ anchor = yaml_emitter_generate_anchor(emitter, anchor_id);
272
+ if (!anchor) return 0;
273
+ }
274
+
275
+ if (emitter->anchors[index-1].serialized) {
276
+ return yaml_emitter_dump_alias(emitter, anchor);
277
+ }
278
+
279
+ emitter->anchors[index-1].serialized = 1;
280
+
281
+ switch (node->type) {
282
+ case YAML_SCALAR_NODE:
283
+ return yaml_emitter_dump_scalar(emitter, node, anchor);
284
+ case YAML_SEQUENCE_NODE:
285
+ return yaml_emitter_dump_sequence(emitter, node, anchor);
286
+ case YAML_MAPPING_NODE:
287
+ return yaml_emitter_dump_mapping(emitter, node, anchor);
288
+ default:
289
+ assert(0); /* Could not happen. */
290
+ break;
291
+ }
292
+
293
+ return 0; /* Could not happen. */
294
+ }
295
+
296
+ /*
297
+ * Serialize an alias.
298
+ */
299
+
300
+ static int
301
+ yaml_emitter_dump_alias(yaml_emitter_t *emitter, yaml_char_t *anchor)
302
+ {
303
+ yaml_event_t event;
304
+ yaml_mark_t mark = { 0, 0, 0 };
305
+
306
+ ALIAS_EVENT_INIT(event, anchor, mark, mark);
307
+
308
+ return yaml_emitter_emit(emitter, &event);
309
+ }
310
+
311
+ /*
312
+ * Serialize a scalar.
313
+ */
314
+
315
+ static int
316
+ yaml_emitter_dump_scalar(yaml_emitter_t *emitter, yaml_node_t *node,
317
+ yaml_char_t *anchor)
318
+ {
319
+ yaml_event_t event;
320
+ yaml_mark_t mark = { 0, 0, 0 };
321
+
322
+ int plain_implicit = (strcmp((char *)node->tag,
323
+ YAML_DEFAULT_SCALAR_TAG) == 0);
324
+ int quoted_implicit = (strcmp((char *)node->tag,
325
+ YAML_DEFAULT_SCALAR_TAG) == 0);
326
+
327
+ SCALAR_EVENT_INIT(event, anchor, node->tag, node->data.scalar.value,
328
+ node->data.scalar.length, plain_implicit, quoted_implicit,
329
+ node->data.scalar.style, mark, mark);
330
+
331
+ return yaml_emitter_emit(emitter, &event);
332
+ }
333
+
334
+ /*
335
+ * Serialize a sequence.
336
+ */
337
+
338
+ static int
339
+ yaml_emitter_dump_sequence(yaml_emitter_t *emitter, yaml_node_t *node,
340
+ yaml_char_t *anchor)
341
+ {
342
+ yaml_event_t event;
343
+ yaml_mark_t mark = { 0, 0, 0 };
344
+
345
+ int implicit = (strcmp((char *)node->tag, YAML_DEFAULT_SEQUENCE_TAG) == 0);
346
+
347
+ yaml_node_item_t *item;
348
+
349
+ SEQUENCE_START_EVENT_INIT(event, anchor, node->tag, implicit,
350
+ node->data.sequence.style, mark, mark);
351
+ if (!yaml_emitter_emit(emitter, &event)) return 0;
352
+
353
+ for (item = node->data.sequence.items.start;
354
+ item < node->data.sequence.items.top; item ++) {
355
+ if (!yaml_emitter_dump_node(emitter, *item)) return 0;
356
+ }
357
+
358
+ SEQUENCE_END_EVENT_INIT(event, mark, mark);
359
+ if (!yaml_emitter_emit(emitter, &event)) return 0;
360
+
361
+ return 1;
362
+ }
363
+
364
+ /*
365
+ * Serialize a mapping.
366
+ */
367
+
368
+ static int
369
+ yaml_emitter_dump_mapping(yaml_emitter_t *emitter, yaml_node_t *node,
370
+ yaml_char_t *anchor)
371
+ {
372
+ yaml_event_t event;
373
+ yaml_mark_t mark = { 0, 0, 0 };
374
+
375
+ int implicit = (strcmp((char *)node->tag, YAML_DEFAULT_MAPPING_TAG) == 0);
376
+
377
+ yaml_node_pair_t *pair;
378
+
379
+ MAPPING_START_EVENT_INIT(event, anchor, node->tag, implicit,
380
+ node->data.mapping.style, mark, mark);
381
+ if (!yaml_emitter_emit(emitter, &event)) return 0;
382
+
383
+ for (pair = node->data.mapping.pairs.start;
384
+ pair < node->data.mapping.pairs.top; pair ++) {
385
+ if (!yaml_emitter_dump_node(emitter, pair->key)) return 0;
386
+ if (!yaml_emitter_dump_node(emitter, pair->value)) return 0;
387
+ }
388
+
389
+ MAPPING_END_EVENT_INIT(event, mark, mark);
390
+ if (!yaml_emitter_emit(emitter, &event)) return 0;
391
+
392
+ return 1;
393
+ }
394
+