github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/encoding/kmgYaml/yaml_emitter_process.go (about)

     1  package kmgYaml
     2  
     3  // Write an achor.
     4  func yaml_emitter_process_anchor(emitter *yaml_emitter_t) bool {
     5  	if emitter.anchor_data.anchor == nil {
     6  		return true
     7  	}
     8  	c := []byte{'&'}
     9  	if emitter.anchor_data.alias {
    10  		c[0] = '*'
    11  	}
    12  	if !yaml_emitter_write_indicator(emitter, c, true, false, false) {
    13  		return false
    14  	}
    15  	return yaml_emitter_write_anchor(emitter, emitter.anchor_data.anchor)
    16  }
    17  
    18  // Write a tag.
    19  func yaml_emitter_process_tag(emitter *yaml_emitter_t) bool {
    20  	if len(emitter.tag_data.handle) == 0 && len(emitter.tag_data.suffix) == 0 {
    21  		return true
    22  	}
    23  	if len(emitter.tag_data.handle) > 0 {
    24  		if !yaml_emitter_write_tag_handle(emitter, emitter.tag_data.handle) {
    25  			return false
    26  		}
    27  		if len(emitter.tag_data.suffix) > 0 {
    28  			if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {
    29  				return false
    30  			}
    31  		}
    32  	} else {
    33  		// [Go] Allocate these slices elsewhere.
    34  		if !yaml_emitter_write_indicator(emitter, []byte("!<"), true, false, false) {
    35  			return false
    36  		}
    37  		if !yaml_emitter_write_tag_content(emitter, emitter.tag_data.suffix, false) {
    38  			return false
    39  		}
    40  		if !yaml_emitter_write_indicator(emitter, []byte{'>'}, false, false, false) {
    41  			return false
    42  		}
    43  	}
    44  	return true
    45  }
    46  
    47  // Write a scalar.
    48  func yaml_emitter_process_scalar(emitter *yaml_emitter_t) bool {
    49  	switch emitter.scalar_data.style {
    50  	case yaml_PLAIN_SCALAR_STYLE:
    51  		return yaml_emitter_write_plain_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
    52  
    53  	case yaml_SINGLE_QUOTED_SCALAR_STYLE:
    54  		return yaml_emitter_write_single_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
    55  
    56  	case yaml_DOUBLE_QUOTED_SCALAR_STYLE:
    57  		return yaml_emitter_write_double_quoted_scalar(emitter, emitter.scalar_data.value, !emitter.simple_key_context)
    58  
    59  	case yaml_LITERAL_SCALAR_STYLE:
    60  		return yaml_emitter_write_literal_scalar(emitter, emitter.scalar_data.value)
    61  
    62  	case yaml_FOLDED_SCALAR_STYLE:
    63  		return yaml_emitter_write_folded_scalar(emitter, emitter.scalar_data.value)
    64  	}
    65  	panic("unknown scalar style")
    66  }