MCPcopy
hub / github.com/go-yaml/yaml / yaml_emitter_write_double_quoted_scalar

Function yaml_emitter_write_double_quoted_scalar

emitterc.go:1727–1846  ·  view source on GitHub ↗
(emitter *yaml_emitter_t, value []byte, allow_breaks bool)

Source from the content-addressed store, hash-verified

1725}
1726
1727func yaml_emitter_write_double_quoted_scalar(emitter *yaml_emitter_t, value []byte, allow_breaks bool) bool {
1728 spaces := false
1729 if !yaml_emitter_write_indicator(emitter, []byte{'"'}, true, false, false) {
1730 return false
1731 }
1732
1733 for i := 0; i < len(value); {
1734 if !is_printable(value, i) || (!emitter.unicode && !is_ascii(value, i)) ||
1735 is_bom(value, i) || is_break(value, i) ||
1736 value[i] == '"' || value[i] == '\\' {
1737
1738 octet := value[i]
1739
1740 var w int
1741 var v rune
1742 switch {
1743 case octet&0x80 == 0x00:
1744 w, v = 1, rune(octet&0x7F)
1745 case octet&0xE0 == 0xC0:
1746 w, v = 2, rune(octet&0x1F)
1747 case octet&0xF0 == 0xE0:
1748 w, v = 3, rune(octet&0x0F)
1749 case octet&0xF8 == 0xF0:
1750 w, v = 4, rune(octet&0x07)
1751 }
1752 for k := 1; k < w; k++ {
1753 octet = value[i+k]
1754 v = (v << 6) + (rune(octet) & 0x3F)
1755 }
1756 i += w
1757
1758 if !put(emitter, '\\') {
1759 return false
1760 }
1761
1762 var ok bool
1763 switch v {
1764 case 0x00:
1765 ok = put(emitter, '0')
1766 case 0x07:
1767 ok = put(emitter, 'a')
1768 case 0x08:
1769 ok = put(emitter, 'b')
1770 case 0x09:
1771 ok = put(emitter, 't')
1772 case 0x0A:
1773 ok = put(emitter, 'n')
1774 case 0x0b:
1775 ok = put(emitter, 'v')
1776 case 0x0c:
1777 ok = put(emitter, 'f')
1778 case 0x0d:
1779 ok = put(emitter, 'r')
1780 case 0x1b:
1781 ok = put(emitter, 'e')
1782 case 0x22:
1783 ok = put(emitter, '"')
1784 case 0x5c:

Callers 1

Calls 10

is_printableFunction · 0.85
is_asciiFunction · 0.85
is_bomFunction · 0.85
is_breakFunction · 0.85
putFunction · 0.85
is_spaceFunction · 0.85
widthFunction · 0.85
writeFunction · 0.85

Tested by

no test coverage detected