Module: Crystalline
- Extended by:
- T::Sig
- Defined in:
- lib/crystalline.rb,
lib/crystalline/utils.rb,
lib/crystalline/metadata_fields.rb
Overview
typed: true frozen_string_literal: true
Defined Under Namespace
Modules: MetadataFields
Classes: FieldAugmented
Class Method Summary
collapse
Class Method Details
.non_nilable_attr_count(klass) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/crystalline/utils.rb', line 62
def self.non_nilable_attr_count(klass)
if klass.respond_to? :fields
return -1 * klass.fields.count do |field|
!T.nilable? field.type
end
else
if klass == String
return 0
elsif klass.is_a?(T::Types::TypedArray) || klass.is_a?(T::Types::TypedHash)
return 1
end
return 2
end
end
|
.to_dict(complex) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/crystalline/utils.rb', line 16
def self.to_dict(complex)
if complex.is_a? Array
complex.map { |v| Crystalline.to_dict(v) }
elsif complex.is_a? Hash
complex.transform_values { |v| Crystalline.to_dict(v) }
elsif complex.is_a? Crystalline::FieldAugmented
complex.to_dict
else
val_to_string complex, primitives: false
end
end
|
.to_json(complex) ⇒ Object
28
29
30
|
# File 'lib/crystalline/utils.rb', line 28
def self.to_json(complex)
JSON.dump(to_dict(complex))
end
|
.unmarshal_json(data, type) ⇒ Object
.val_to_string(val, primitives: true) ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/crystalline/utils.rb', line 49
def self.val_to_string(val, primitives: true)
if val.is_a? T::Enum
val.serialize
elsif val.is_a? DateTime
val.strftime('%Y-%m-%dT%H:%M:%S.%NZ')
elsif primitives
val.to_s
else
val
end
end
|