Module: Azure::Storage::Table::EdmType
- Defined in:
- table/lib/azure/storage/table/edmtype.rb
Class Method Summary collapse
-
.deserialize_value(value, type) ⇒ Object
Public: Convert a serialized value into an typed object.
-
.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.
- .to_edm_time(value) ⇒ Object
Class Method Details
.deserialize_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
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'table/lib/azure/storage/table/edmtype.rb', line 109 def self.deserialize_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" value == true || value == "true" ? true : false when "Edm.Guid" GUID.new(value.to_s) when "Edm.Binary" Base64.decode64(value.to_s).force_encoding("BINARY") else value == "" ? nil : value.to_s end end |
.property_type(value) ⇒ Object
Public: Get the Edm type of an object
value - Object. An typed instance
Returns the Edm type as a String
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'table/lib/azure/storage/table/edmtype.rb', line 37 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
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'table/lib/azure/storage/table/edmtype.rb', line 81 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
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'table/lib/azure/storage/table/edmtype.rb', line 63 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" to_edm_time(value) else value.to_s end end |
.to_edm_time(value) ⇒ Object
128 129 130 131 |
# File 'table/lib/azure/storage/table/edmtype.rb', line 128 def self.to_edm_time(value) date = value.is_a?(Time) ? value : Time.parse(value) date.utc.strftime("%Y-%m-%dT%H:%M:%S.%6N0Z") end |