...
1 package yaml
2
3 import (
4 "fmt"
5 "io"
6 )
7
8
9 type yaml_version_directive_t struct {
10 major int8
11 minor int8
12 }
13
14
15 type yaml_tag_directive_t struct {
16 handle []byte
17 prefix []byte
18 }
19
20 type yaml_encoding_t int
21
22
23 const (
24
25 yaml_ANY_ENCODING yaml_encoding_t = iota
26
27 yaml_UTF8_ENCODING
28 yaml_UTF16LE_ENCODING
29 yaml_UTF16BE_ENCODING
30 )
31
32 type yaml_break_t int
33
34
35 const (
36
37 yaml_ANY_BREAK yaml_break_t = iota
38
39 yaml_CR_BREAK
40 yaml_LN_BREAK
41 yaml_CRLN_BREAK
42 )
43
44 type yaml_error_type_t int
45
46
47 const (
48
49 yaml_NO_ERROR yaml_error_type_t = iota
50
51 yaml_MEMORY_ERROR
52 yaml_READER_ERROR
53 yaml_SCANNER_ERROR
54 yaml_PARSER_ERROR
55 yaml_COMPOSER_ERROR
56 yaml_WRITER_ERROR
57 yaml_EMITTER_ERROR
58 )
59
60
61 type yaml_mark_t struct {
62 index int
63 line int
64 column int
65 }
66
67
68
69 type yaml_style_t int8
70
71 type yaml_scalar_style_t yaml_style_t
72
73
74 const (
75
76 yaml_ANY_SCALAR_STYLE yaml_scalar_style_t = iota
77
78 yaml_PLAIN_SCALAR_STYLE
79 yaml_SINGLE_QUOTED_SCALAR_STYLE
80 yaml_DOUBLE_QUOTED_SCALAR_STYLE
81 yaml_LITERAL_SCALAR_STYLE
82 yaml_FOLDED_SCALAR_STYLE
83 )
84
85 type yaml_sequence_style_t yaml_style_t
86
87
88 const (
89
90 yaml_ANY_SEQUENCE_STYLE yaml_sequence_style_t = iota
91
92 yaml_BLOCK_SEQUENCE_STYLE
93 yaml_FLOW_SEQUENCE_STYLE
94 )
95
96 type yaml_mapping_style_t yaml_style_t
97
98
99 const (
100
101 yaml_ANY_MAPPING_STYLE yaml_mapping_style_t = iota
102
103 yaml_BLOCK_MAPPING_STYLE
104 yaml_FLOW_MAPPING_STYLE
105 )
106
107
108
109 type yaml_token_type_t int
110
111
112 const (
113
114 yaml_NO_TOKEN yaml_token_type_t = iota
115
116 yaml_STREAM_START_TOKEN
117 yaml_STREAM_END_TOKEN
118
119 yaml_VERSION_DIRECTIVE_TOKEN
120 yaml_TAG_DIRECTIVE_TOKEN
121 yaml_DOCUMENT_START_TOKEN
122 yaml_DOCUMENT_END_TOKEN
123
124 yaml_BLOCK_SEQUENCE_START_TOKEN
125 yaml_BLOCK_MAPPING_START_TOKEN
126 yaml_BLOCK_END_TOKEN
127
128 yaml_FLOW_SEQUENCE_START_TOKEN
129 yaml_FLOW_SEQUENCE_END_TOKEN
130 yaml_FLOW_MAPPING_START_TOKEN
131 yaml_FLOW_MAPPING_END_TOKEN
132
133 yaml_BLOCK_ENTRY_TOKEN
134 yaml_FLOW_ENTRY_TOKEN
135 yaml_KEY_TOKEN
136 yaml_VALUE_TOKEN
137
138 yaml_ALIAS_TOKEN
139 yaml_ANCHOR_TOKEN
140 yaml_TAG_TOKEN
141 yaml_SCALAR_TOKEN
142 )
143
144 func (tt yaml_token_type_t) String() string {
145 switch tt {
146 case yaml_NO_TOKEN:
147 return "yaml_NO_TOKEN"
148 case yaml_STREAM_START_TOKEN:
149 return "yaml_STREAM_START_TOKEN"
150 case yaml_STREAM_END_TOKEN:
151 return "yaml_STREAM_END_TOKEN"
152 case yaml_VERSION_DIRECTIVE_TOKEN:
153 return "yaml_VERSION_DIRECTIVE_TOKEN"
154 case yaml_TAG_DIRECTIVE_TOKEN:
155 return "yaml_TAG_DIRECTIVE_TOKEN"
156 case yaml_DOCUMENT_START_TOKEN:
157 return "yaml_DOCUMENT_START_TOKEN"
158 case yaml_DOCUMENT_END_TOKEN:
159 return "yaml_DOCUMENT_END_TOKEN"
160 case yaml_BLOCK_SEQUENCE_START_TOKEN:
161 return "yaml_BLOCK_SEQUENCE_START_TOKEN"
162 case yaml_BLOCK_MAPPING_START_TOKEN:
163 return "yaml_BLOCK_MAPPING_START_TOKEN"
164 case yaml_BLOCK_END_TOKEN:
165 return "yaml_BLOCK_END_TOKEN"
166 case yaml_FLOW_SEQUENCE_START_TOKEN:
167 return "yaml_FLOW_SEQUENCE_START_TOKEN"
168 case yaml_FLOW_SEQUENCE_END_TOKEN:
169 return "yaml_FLOW_SEQUENCE_END_TOKEN"
170 case yaml_FLOW_MAPPING_START_TOKEN:
171 return "yaml_FLOW_MAPPING_START_TOKEN"
172 case yaml_FLOW_MAPPING_END_TOKEN:
173 return "yaml_FLOW_MAPPING_END_TOKEN"
174 case yaml_BLOCK_ENTRY_TOKEN:
175 return "yaml_BLOCK_ENTRY_TOKEN"
176 case yaml_FLOW_ENTRY_TOKEN:
177 return "yaml_FLOW_ENTRY_TOKEN"
178 case yaml_KEY_TOKEN:
179 return "yaml_KEY_TOKEN"
180 case yaml_VALUE_TOKEN:
181 return "yaml_VALUE_TOKEN"
182 case yaml_ALIAS_TOKEN:
183 return "yaml_ALIAS_TOKEN"
184 case yaml_ANCHOR_TOKEN:
185 return "yaml_ANCHOR_TOKEN"
186 case yaml_TAG_TOKEN:
187 return "yaml_TAG_TOKEN"
188 case yaml_SCALAR_TOKEN:
189 return "yaml_SCALAR_TOKEN"
190 }
191 return "<unknown token>"
192 }
193
194
195 type yaml_token_t struct {
196
197 typ yaml_token_type_t
198
199
200 start_mark, end_mark yaml_mark_t
201
202
203 encoding yaml_encoding_t
204
205
206
207 value []byte
208
209
210 suffix []byte
211
212
213 prefix []byte
214
215
216 style yaml_scalar_style_t
217
218
219 major, minor int8
220 }
221
222
223
224 type yaml_event_type_t int8
225
226
227 const (
228
229 yaml_NO_EVENT yaml_event_type_t = iota
230
231 yaml_STREAM_START_EVENT
232 yaml_STREAM_END_EVENT
233 yaml_DOCUMENT_START_EVENT
234 yaml_DOCUMENT_END_EVENT
235 yaml_ALIAS_EVENT
236 yaml_SCALAR_EVENT
237 yaml_SEQUENCE_START_EVENT
238 yaml_SEQUENCE_END_EVENT
239 yaml_MAPPING_START_EVENT
240 yaml_MAPPING_END_EVENT
241 )
242
243 var eventStrings = []string{
244 yaml_NO_EVENT: "none",
245 yaml_STREAM_START_EVENT: "stream start",
246 yaml_STREAM_END_EVENT: "stream end",
247 yaml_DOCUMENT_START_EVENT: "document start",
248 yaml_DOCUMENT_END_EVENT: "document end",
249 yaml_ALIAS_EVENT: "alias",
250 yaml_SCALAR_EVENT: "scalar",
251 yaml_SEQUENCE_START_EVENT: "sequence start",
252 yaml_SEQUENCE_END_EVENT: "sequence end",
253 yaml_MAPPING_START_EVENT: "mapping start",
254 yaml_MAPPING_END_EVENT: "mapping end",
255 }
256
257 func (e yaml_event_type_t) String() string {
258 if e < 0 || int(e) >= len(eventStrings) {
259 return fmt.Sprintf("unknown event %d", e)
260 }
261 return eventStrings[e]
262 }
263
264
265 type yaml_event_t struct {
266
267
268 typ yaml_event_type_t
269
270
271 start_mark, end_mark yaml_mark_t
272
273
274 encoding yaml_encoding_t
275
276
277 version_directive *yaml_version_directive_t
278
279
280 tag_directives []yaml_tag_directive_t
281
282
283 anchor []byte
284
285
286 tag []byte
287
288
289 value []byte
290
291
292
293 implicit bool
294
295
296 quoted_implicit bool
297
298
299 style yaml_style_t
300 }
301
302 func (e *yaml_event_t) scalar_style() yaml_scalar_style_t { return yaml_scalar_style_t(e.style) }
303 func (e *yaml_event_t) sequence_style() yaml_sequence_style_t { return yaml_sequence_style_t(e.style) }
304 func (e *yaml_event_t) mapping_style() yaml_mapping_style_t { return yaml_mapping_style_t(e.style) }
305
306
307
308 const (
309 yaml_NULL_TAG = "tag:yaml.org,2002:null"
310 yaml_BOOL_TAG = "tag:yaml.org,2002:bool"
311 yaml_STR_TAG = "tag:yaml.org,2002:str"
312 yaml_INT_TAG = "tag:yaml.org,2002:int"
313 yaml_FLOAT_TAG = "tag:yaml.org,2002:float"
314 yaml_TIMESTAMP_TAG = "tag:yaml.org,2002:timestamp"
315
316 yaml_SEQ_TAG = "tag:yaml.org,2002:seq"
317 yaml_MAP_TAG = "tag:yaml.org,2002:map"
318
319
320 yaml_BINARY_TAG = "tag:yaml.org,2002:binary"
321 yaml_MERGE_TAG = "tag:yaml.org,2002:merge"
322
323 yaml_DEFAULT_SCALAR_TAG = yaml_STR_TAG
324 yaml_DEFAULT_SEQUENCE_TAG = yaml_SEQ_TAG
325 yaml_DEFAULT_MAPPING_TAG = yaml_MAP_TAG
326 )
327
328 type yaml_node_type_t int
329
330
331 const (
332
333 yaml_NO_NODE yaml_node_type_t = iota
334
335 yaml_SCALAR_NODE
336 yaml_SEQUENCE_NODE
337 yaml_MAPPING_NODE
338 )
339
340
341 type yaml_node_item_t int
342
343
344 type yaml_node_pair_t struct {
345 key int
346 value int
347 }
348
349
350 type yaml_node_t struct {
351 typ yaml_node_type_t
352 tag []byte
353
354
355
356
357 scalar struct {
358 value []byte
359 length int
360 style yaml_scalar_style_t
361 }
362
363
364 sequence struct {
365 items_data []yaml_node_item_t
366 style yaml_sequence_style_t
367 }
368
369
370 mapping struct {
371 pairs_data []yaml_node_pair_t
372 pairs_start *yaml_node_pair_t
373 pairs_end *yaml_node_pair_t
374 pairs_top *yaml_node_pair_t
375 style yaml_mapping_style_t
376 }
377
378 start_mark yaml_mark_t
379 end_mark yaml_mark_t
380
381 }
382
383
384 type yaml_document_t struct {
385
386
387 nodes []yaml_node_t
388
389
390 version_directive *yaml_version_directive_t
391
392
393 tag_directives_data []yaml_tag_directive_t
394 tag_directives_start int
395 tag_directives_end int
396
397 start_implicit int
398 end_implicit int
399
400
401 start_mark, end_mark yaml_mark_t
402 }
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419 type yaml_read_handler_t func(parser *yaml_parser_t, buffer []byte) (n int, err error)
420
421
422 type yaml_simple_key_t struct {
423 possible bool
424 required bool
425 token_number int
426 mark yaml_mark_t
427 }
428
429
430 type yaml_parser_state_t int
431
432 const (
433 yaml_PARSE_STREAM_START_STATE yaml_parser_state_t = iota
434
435 yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE
436 yaml_PARSE_DOCUMENT_START_STATE
437 yaml_PARSE_DOCUMENT_CONTENT_STATE
438 yaml_PARSE_DOCUMENT_END_STATE
439 yaml_PARSE_BLOCK_NODE_STATE
440 yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE
441 yaml_PARSE_FLOW_NODE_STATE
442 yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE
443 yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE
444 yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE
445 yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE
446 yaml_PARSE_BLOCK_MAPPING_KEY_STATE
447 yaml_PARSE_BLOCK_MAPPING_VALUE_STATE
448 yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE
449 yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE
450 yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE
451 yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE
452 yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE
453 yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE
454 yaml_PARSE_FLOW_MAPPING_KEY_STATE
455 yaml_PARSE_FLOW_MAPPING_VALUE_STATE
456 yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE
457 yaml_PARSE_END_STATE
458 )
459
460 func (ps yaml_parser_state_t) String() string {
461 switch ps {
462 case yaml_PARSE_STREAM_START_STATE:
463 return "yaml_PARSE_STREAM_START_STATE"
464 case yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE:
465 return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE"
466 case yaml_PARSE_DOCUMENT_START_STATE:
467 return "yaml_PARSE_DOCUMENT_START_STATE"
468 case yaml_PARSE_DOCUMENT_CONTENT_STATE:
469 return "yaml_PARSE_DOCUMENT_CONTENT_STATE"
470 case yaml_PARSE_DOCUMENT_END_STATE:
471 return "yaml_PARSE_DOCUMENT_END_STATE"
472 case yaml_PARSE_BLOCK_NODE_STATE:
473 return "yaml_PARSE_BLOCK_NODE_STATE"
474 case yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE:
475 return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE"
476 case yaml_PARSE_FLOW_NODE_STATE:
477 return "yaml_PARSE_FLOW_NODE_STATE"
478 case yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE:
479 return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE"
480 case yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE:
481 return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE"
482 case yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE:
483 return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE"
484 case yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE:
485 return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE"
486 case yaml_PARSE_BLOCK_MAPPING_KEY_STATE:
487 return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE"
488 case yaml_PARSE_BLOCK_MAPPING_VALUE_STATE:
489 return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE"
490 case yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE:
491 return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE"
492 case yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE:
493 return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE"
494 case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE:
495 return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE"
496 case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE:
497 return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE"
498 case yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE:
499 return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE"
500 case yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE:
501 return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE"
502 case yaml_PARSE_FLOW_MAPPING_KEY_STATE:
503 return "yaml_PARSE_FLOW_MAPPING_KEY_STATE"
504 case yaml_PARSE_FLOW_MAPPING_VALUE_STATE:
505 return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE"
506 case yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE:
507 return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE"
508 case yaml_PARSE_END_STATE:
509 return "yaml_PARSE_END_STATE"
510 }
511 return "<unknown parser state>"
512 }
513
514
515 type yaml_alias_data_t struct {
516 anchor []byte
517 index int
518 mark yaml_mark_t
519 }
520
521
522
523
524
525 type yaml_parser_t struct {
526
527
528
529 error yaml_error_type_t
530
531 problem string
532
533
534 problem_offset int
535 problem_value int
536 problem_mark yaml_mark_t
537
538
539 context string
540 context_mark yaml_mark_t
541
542
543
544 read_handler yaml_read_handler_t
545
546 input_reader io.Reader
547 input []byte
548 input_pos int
549
550 eof bool
551
552 buffer []byte
553 buffer_pos int
554
555 unread int
556
557 raw_buffer []byte
558 raw_buffer_pos int
559
560 encoding yaml_encoding_t
561
562 offset int
563 mark yaml_mark_t
564
565
566
567 stream_start_produced bool
568 stream_end_produced bool
569
570 flow_level int
571
572 tokens []yaml_token_t
573 tokens_head int
574 tokens_parsed int
575 token_available bool
576
577 indent int
578 indents []int
579
580 simple_key_allowed bool
581 simple_keys []yaml_simple_key_t
582 simple_keys_by_tok map[int]int
583
584
585
586 state yaml_parser_state_t
587 states []yaml_parser_state_t
588 marks []yaml_mark_t
589 tag_directives []yaml_tag_directive_t
590
591
592
593 aliases []yaml_alias_data_t
594
595 document *yaml_document_t
596 }
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614 type yaml_write_handler_t func(emitter *yaml_emitter_t, buffer []byte) error
615
616 type yaml_emitter_state_t int
617
618
619 const (
620
621 yaml_EMIT_STREAM_START_STATE yaml_emitter_state_t = iota
622
623 yaml_EMIT_FIRST_DOCUMENT_START_STATE
624 yaml_EMIT_DOCUMENT_START_STATE
625 yaml_EMIT_DOCUMENT_CONTENT_STATE
626 yaml_EMIT_DOCUMENT_END_STATE
627 yaml_EMIT_FLOW_SEQUENCE_FIRST_ITEM_STATE
628 yaml_EMIT_FLOW_SEQUENCE_ITEM_STATE
629 yaml_EMIT_FLOW_MAPPING_FIRST_KEY_STATE
630 yaml_EMIT_FLOW_MAPPING_KEY_STATE
631 yaml_EMIT_FLOW_MAPPING_SIMPLE_VALUE_STATE
632 yaml_EMIT_FLOW_MAPPING_VALUE_STATE
633 yaml_EMIT_BLOCK_SEQUENCE_FIRST_ITEM_STATE
634 yaml_EMIT_BLOCK_SEQUENCE_ITEM_STATE
635 yaml_EMIT_BLOCK_MAPPING_FIRST_KEY_STATE
636 yaml_EMIT_BLOCK_MAPPING_KEY_STATE
637 yaml_EMIT_BLOCK_MAPPING_SIMPLE_VALUE_STATE
638 yaml_EMIT_BLOCK_MAPPING_VALUE_STATE
639 yaml_EMIT_END_STATE
640 )
641
642
643
644
645
646 type yaml_emitter_t struct {
647
648
649
650 error yaml_error_type_t
651 problem string
652
653
654
655 write_handler yaml_write_handler_t
656
657 output_buffer *[]byte
658 output_writer io.Writer
659
660 buffer []byte
661 buffer_pos int
662
663 raw_buffer []byte
664 raw_buffer_pos int
665
666 encoding yaml_encoding_t
667
668
669
670 canonical bool
671 best_indent int
672 best_width int
673 unicode bool
674 line_break yaml_break_t
675
676 state yaml_emitter_state_t
677 states []yaml_emitter_state_t
678
679 events []yaml_event_t
680 events_head int
681
682 indents []int
683
684 tag_directives []yaml_tag_directive_t
685
686 indent int
687
688 flow_level int
689
690 root_context bool
691 sequence_context bool
692 mapping_context bool
693 simple_key_context bool
694
695 line int
696 column int
697 whitespace bool
698 indention bool
699 open_ended bool
700
701
702 anchor_data struct {
703 anchor []byte
704 alias bool
705 }
706
707
708 tag_data struct {
709 handle []byte
710 suffix []byte
711 }
712
713
714 scalar_data struct {
715 value []byte
716 multiline bool
717 flow_plain_allowed bool
718 block_plain_allowed bool
719 single_quoted_allowed bool
720 block_allowed bool
721 style yaml_scalar_style_t
722 }
723
724
725
726 opened bool
727 closed bool
728
729
730 anchors *struct {
731 references int
732 anchor int
733 serialized bool
734 }
735
736 last_anchor_id int
737
738 document *yaml_document_t
739 }
740
View as plain text