Module: Azure::Table::EdmType
- Defined in:
- lib/azure/table/edmtype.rb
Class Method Summary collapse
-
.property_type(value) ⇒ Object
Public: Get the Edm type of an object.
-
.serialize_query_value(value) ⇒ Object
Public: Serializes EDM value into proper value to be used in query.
-
.serialize_value(type, value) ⇒ Object
Public: Get the value of a property in a serialized way.
-
.unserialize_query_value(value, type) ⇒ Object
Public: Convert a serialized value into an typed object.
Class Method Details
.property_type(value) ⇒ Object
Public: Get the Edm type of an object
value - Object. An typed instance
Returns the Edm type as a String
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/azure/table/edmtype.rb', line 29 def self.property_type(value) case value when Float "Edm.Double" when Date, Time, DateTime "Edm.DateTime" when Integer value.abs < 2**31 ? "Edm.Int32" : "Edm.Int64" when TrueClass, FalseClass "Edm.Boolean" when GUID "Edm.Guid" when IO, File "Edm.Binary" when String value.encoding.names.include?("BINARY") ? "Edm.Binary" : "" else value.kind_of?(IO) ? "Edm.Binary" : "" end end |
.serialize_query_value(value) ⇒ Object
Public: Serializes EDM value into proper value to be used in query.
value - String. The value to serialize.
Returns the serialized value
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/azure/table/edmtype.rb', line 79 def self.serialize_query_value(value) case value when Date, Time, DateTime "datetime'#{value.iso8601}'" when TrueClass, FalseClass value ? "true" : "false" when Float, Integer value.abs < 2**31 ? value.to_s : value.to_s + "L" when GUID "guid'#{value.to_s}'" when IO, File "X'" + value.to_s.unpack("H*").join("") + "'" else if value != nil && value.encoding.names.include?("BINARY") "X'" + value.to_s.unpack("H*").join("") + "'" else # NULL also is treated as EdmType::STRING value.to_s.gsub("'","''"); end end end |
.serialize_value(type, value) ⇒ Object
Public: Get the value of a property in a serialized way
value - Object. An typed instance
Returns the Edm type as a String
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/azure/table/edmtype.rb', line 55 def self.serialize_value(type, value) case type when "Edm.Double", "Edm.Int32", "Edm.Int64", "Edm.Guid", "Edm.String", nil value.to_s when "Edm.Binary" Base64.encode64(value.to_s).chomp("\n") when "Edm.DateTime" value.xmlschema(7) when "Edm.Boolean" if value.nil? '' else value == true ? '1' : '0' end else value.to_s end end |
.unserialize_query_value(value, type) ⇒ Object
Public: Convert a serialized value into an typed object
value - String. The Edm value type - String. The Edm datatype
Returns an typed object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/azure/table/edmtype.rb', line 107 def self.unserialize_query_value(value, type) case type when "Edm.DateTime" Time.parse(value) when "Edm.Double" Float(value) when "Edm.Int32", "Edm.Int64" Integer(value) when "Edm.Boolean" /true/i === value when "Edm.Guid" GUID.new(value.to_s) when "Edm.Binary" Base64.decode64(value.to_s).force_encoding("BINARY") else value.to_s end end |