def to_zaml(z)
z.with_structured_prefix(self) do
case
when self == ''
z.emit('""')
when self.to_ascii8bit !~ /\A(?: # ?: non-capturing group (grouping with no back references)
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*\z/nx
z.emit("!binary ")
[self].pack("m*").to_zaml(z)
when ((self =~ /\A[a-zA-Z\/][-\[\]_\/.a-zA-Z0-9]*\z/) and
(self !~ /^(?:true|false|yes|no|on|null|off)$/))
z.emit(self)
when (self =~ /\n/ and self !~ /\A\s/ and self !~ /\s\z/)
if self[-1..-1] == "\n" then z.emit('|+') else z.emit('|-') end
z.nested { split("\n",-1).each { |line| z.nl; z.emit(line) } }
else
escaped = gsub(/[\"\x00-\x1F]/) do |c|
ZAML_ESCAPES[c] || "\\x#{c[0].ord.to_s(16)}"
end
z.emit("\"#{escaped}\"")
end
end
end