Decode simple value (Bool or Nil).

master
Karchnu 2020-11-26 17:05:22 +01:00
parent 0c8baf1ccd
commit a058ab3ccf
2 changed files with 23 additions and 6 deletions

View File

@ -47,6 +47,14 @@ class CBOR::Decoder
end
end
def read_simple_value : Bool?
case token = @current_token
when Token::SimpleValueT
finish_token!
token.value.to_t
end
end
def read_string : String
case token = @current_token
when Token::StringT

View File

@ -218,13 +218,22 @@ end
def Union.new(decoder : CBOR::Decoder)
{% begin %}
case decoder.current_token
{% if T.includes? Nil %}
{% if T.includes? Nil || T.includes? Bool %}
when CBOR::Token::SimpleValueT
return decoder.read_nil
{% end %}
{% if T.includes? Bool %}
when CBOR::Token::SimpleValueT
return decoder.read_bool
# This value could be either a boolean or nil.
value = decoder.read_simple_value
case value
{% if T.includes? Bool %}
when Bool
return value
{% end %}
{% if T.includes? Nil %}
when Nil
return nil
{% end %}
else
raise "value is neither Bool or Nil"
end
{% end %}
{% if T.includes? String %}
when CBOR::Token::StringT