Class: Filemaker::Model::Field
- Inherits:
-
Object
- Object
- Filemaker::Model::Field
- Defined in:
- lib/filemaker/model/field.rb
Instance Attribute Summary collapse
-
#default_value ⇒ Object
readonly
Returns the value of attribute default_value.
-
#fm_name ⇒ Object
readonly
Returns the value of attribute fm_name.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Instance Method Summary collapse
-
#coerce(value, klass = nil) ⇒ Object
From FileMaker to Ruby.
-
#initialize(name, type, options = {}) ⇒ Field
constructor
A new instance of Field.
Constructor Details
#initialize(name, type, options = {}) ⇒ Field
Returns a new instance of Field.
9 10 11 12 13 14 15 16 17 |
# File 'lib/filemaker/model/field.rb', line 9 def initialize(name, type, = {}) @name = name @type = type @default_value = coerce(.fetch(:default) { nil }) # We need to downcase because Filemaker::Record is # HashWithIndifferentAndCaseInsensitiveAccess @fm_name = (.fetch(:fm_name) { name }).to_s.downcase end |
Instance Attribute Details
#default_value ⇒ Object (readonly)
Returns the value of attribute default_value.
7 8 9 |
# File 'lib/filemaker/model/field.rb', line 7 def default_value @default_value end |
#fm_name ⇒ Object (readonly)
Returns the value of attribute fm_name.
7 8 9 |
# File 'lib/filemaker/model/field.rb', line 7 def fm_name @fm_name end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/filemaker/model/field.rb', line 7 def name @name end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
7 8 9 |
# File 'lib/filemaker/model/field.rb', line 7 def type @type end |
Instance Method Details
#coerce(value, klass = nil) ⇒ Object
From FileMaker to Ruby.
If the value is ‘==` (match empty) or `=*` (match record), then we will skip coercion.
Date and DateTime will be special. If the value is a String, the query may be ‘2016’, ‘3/2016’ or ‘3/24/2016’ for example.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/filemaker/model/field.rb', line 26 def coerce(value, klass = nil) return nil if value.nil? return value if value =~ /^==|=\*/ return value if value =~ /(\.\.\.)/ if @type == String value.to_s elsif @type == Integer value.to_i elsif @type == BigDecimal BigDecimal.new(value.to_s) elsif @type == Date return value if value.is_a? Date return value.to_s if value.is_a? String Date.parse(value.to_s) elsif @type == DateTime return value if value.is_a? DateTime return value.to_s if value.is_a? String DateTime.parse(value.to_s) elsif @type == Filemaker::Model::Types::Email return value if value.is_a? Filemaker::Model::Types::Email Filemaker::Model::Types::Email.new(value) elsif @type == Filemaker::Model::Types::Attachment return value if value.is_a? Filemaker::Model::Types::Attachment Filemaker::Model::Types::Attachment.new(value, klass) else value end rescue StandardError => e warn "[#{e.}] Could not coerce #{name}: #{value}" value end |