Class: NatsWork::Protocol::TypeMapper
- Inherits:
-
Object
- Object
- NatsWork::Protocol::TypeMapper
- Defined in:
- lib/natswork/protocol.rb
Overview
Type mapper for cross-language support
Constant Summary collapse
- RUBY_TO_PYTHON =
Ruby to Python type mapping
{ 'NilClass' => 'None', 'TrueClass' => 'bool', 'FalseClass' => 'bool', 'Integer' => 'int', 'Float' => 'float', 'String' => 'str', 'Symbol' => 'str', 'Array' => 'list', 'Hash' => 'dict', 'Time' => 'datetime', 'Date' => 'date', 'DateTime' => 'datetime' }.freeze
- PYTHON_TO_RUBY =
Python to Ruby type mapping
{ 'None' => 'nil', 'bool' => 'Boolean', 'int' => 'Integer', 'float' => 'Float', 'str' => 'String', 'list' => 'Array', 'tuple' => 'Array', 'dict' => 'Hash', 'datetime' => 'Time', 'date' => 'Date', 'bytes' => 'String' }.freeze
Class Method Summary collapse
- .deserialize_from_language(value, source_language) ⇒ Object
- .deserialize_from_python(value) ⇒ Object
- .serialize_for_go(value) ⇒ Object
- .serialize_for_javascript(value) ⇒ Object
- .serialize_for_language(value, target_language) ⇒ Object
- .serialize_for_python(value) ⇒ Object
Class Method Details
.deserialize_from_language(value, source_language) ⇒ Object
374 375 376 377 378 379 380 381 |
# File 'lib/natswork/protocol.rb', line 374 def self.deserialize_from_language(value, source_language) case source_language.downcase when 'python' deserialize_from_python(value) else value end end |
.deserialize_from_python(value) ⇒ Object
383 384 385 386 387 388 389 |
# File 'lib/natswork/protocol.rb', line 383 def self.deserialize_from_python(value) if value.is_a?(String) && value =~ /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/ Time.parse(value) else value end end |
.serialize_for_go(value) ⇒ Object
361 362 363 364 365 366 367 368 369 370 371 372 |
# File 'lib/natswork/protocol.rb', line 361 def self.serialize_for_go(value) case value when Time, DateTime value.utc.iso8601 when Date value.iso8601 when Symbol value.to_s else value end end |
.serialize_for_javascript(value) ⇒ Object
346 347 348 349 350 351 352 353 354 355 356 357 358 359 |
# File 'lib/natswork/protocol.rb', line 346 def self.serialize_for_javascript(value) case value when Time, DateTime value.utc.iso8601 when Date value.iso8601 when Symbol value.to_s when BigDecimal value.to_f else value end end |
.serialize_for_language(value, target_language) ⇒ Object
318 319 320 321 322 323 324 325 326 327 328 329 |
# File 'lib/natswork/protocol.rb', line 318 def self.serialize_for_language(value, target_language) case target_language.downcase when 'python' serialize_for_python(value) when 'javascript', 'node', 'nodejs' serialize_for_javascript(value) when 'go', 'golang' serialize_for_go(value) else value end end |
.serialize_for_python(value) ⇒ Object
331 332 333 334 335 336 337 338 339 340 341 342 343 344 |
# File 'lib/natswork/protocol.rb', line 331 def self.serialize_for_python(value) case value when Time, DateTime value.utc.iso8601 when Date value.iso8601 when Symbol value.to_s when nil nil else value end end |