Class: DataKit::Dataset::Field
- Inherits:
-
Object
- Object
- DataKit::Dataset::Field
- Defined in:
- lib/data_kit/dataset/field.rb
Constant Summary collapse
- Types =
[:string, :integer, :number, :datetime, :boolean, :null].freeze
Instance Attribute Summary collapse
-
#key ⇒ Object
Returns the value of attribute key.
-
#name ⇒ Object
Returns the value of attribute name.
-
#type ⇒ Object
Returns the value of attribute type.
Class Method Summary collapse
- .convert(value, type) ⇒ Object
- .is_type?(value, type) ⇒ Boolean
- .type?(value, hint_type = nil) ⇒ Boolean
Instance Method Summary collapse
-
#initialize(name, options = {}) ⇒ Field
constructor
A new instance of Field.
- #key? ⇒ Boolean
- #to_hash ⇒ Object
Constructor Details
#initialize(name, options = {}) ⇒ Field
Returns a new instance of Field.
11 12 13 14 15 |
# File 'lib/data_kit/dataset/field.rb', line 11 def initialize(name, = {}) @name = name @key = [:key] || false @type = ([:type] || :string).to_sym end |
Instance Attribute Details
#key ⇒ Object
Returns the value of attribute key.
8 9 10 |
# File 'lib/data_kit/dataset/field.rb', line 8 def key @key end |
#name ⇒ Object
Returns the value of attribute name.
7 8 9 |
# File 'lib/data_kit/dataset/field.rb', line 7 def name @name end |
#type ⇒ Object
Returns the value of attribute type.
9 10 11 |
# File 'lib/data_kit/dataset/field.rb', line 9 def type @type end |
Class Method Details
.convert(value, type) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/data_kit/dataset/field.rb', line 58 def convert(value, type) return nil if type == :null || value.nil? reformatted = Converters::Number.reformat(value) case type when :integer then Converters::Integer.convert(reformatted) when :number then Converters::Number.convert(reformatted) when :boolean then Converters::Boolean.convert(value) when :datetime then Converters::DateTime.convert(value) else value.to_s end end |
.is_type?(value, type) ⇒ Boolean
48 49 50 51 52 53 54 55 56 |
# File 'lib/data_kit/dataset/field.rb', line 48 def is_type?(value, type) case type when :integer then Converters::Integer.match?(Converters::Number.reformat(value)) when :number then Converters::Number.match?(Converters::Number.reformat(value)) when :boolean then Converters::Boolean.match?(value) when :datetime then Converters::DateTime.match?(value) when :string then false end end |
.type?(value, hint_type = nil) ⇒ Boolean
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/data_kit/dataset/field.rb', line 26 def type?(value, hint_type = nil) return :null if value.nil? if hint_type && is_type?(value, hint_type) return hint_type end reformatted = Converters::Number.reformat(value) if Converters::Integer.match?(reformatted) :integer elsif Converters::Number.match?(reformatted) :number elsif Converters::Boolean.match?(value) :boolean elsif Converters::DateTime.match?(value) :datetime else :string end end |
Instance Method Details
#key? ⇒ Boolean
17 18 19 |
# File 'lib/data_kit/dataset/field.rb', line 17 def key? key == true end |
#to_hash ⇒ Object
21 22 23 |
# File 'lib/data_kit/dataset/field.rb', line 21 def to_hash { 'name' => name, 'type' => type.to_s, 'key' => key?} end |