49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/cbor-diagnostic.rb', line 49
def cbor_diagnostic(options = {})
if lengths = cbor_stream?
pos = 0
"(_ #{lengths.map{|l| r = self[pos, l].cbor_diagnostic(options); pos += l; r}.join(", ")})"
else
if encoding == Encoding::BINARY
if options[:try_decode_embedded] && self != ''
begin
rest = self
result = []
while rest != ''
dv, rest = CBOR.decode_with_rest(rest)
result << dv
end
return "<< #{result.map{|x| x.cbor_diagnostic(options)}.join(", ")} >>"
rescue StandardError => e
end
end
if options[:bytes_as_text] && (u8 = dup.force_encoding(Encoding::UTF_8)).valid_encoding?
"'#{u8.cbor_diagnostic(options)[1..-2].gsub("'", "\\\\'")}'" else
"h'#{hexbytes}'"
end
else
if options[:utf8]
to_json
else
to_json.encode(Encoding::UTF_16BE).bytes.each_slice(2).map {
|c1, c2| c = (c1 << 8)+c2; c < 128 ? c.chr : '\u%04x' % c }.join
end
end
end
end
|