Module: TypeHelpers

Included in:
Basecamp::Types, Basecamp::Types::Account, Basecamp::Types::AccountLimits, Basecamp::Types::AccountLogo, Basecamp::Types::AccountSettings, Basecamp::Types::AccountSubscription, Basecamp::Types::Assignable, Basecamp::Types::Boost, Basecamp::Types::Campfire, Basecamp::Types::CampfireLine, Basecamp::Types::CampfireLineAttachment, Basecamp::Types::Card, Basecamp::Types::CardColumn, Basecamp::Types::CardColumnOnHold, Basecamp::Types::CardStep, Basecamp::Types::CardTable, Basecamp::Types::Chatbot, Basecamp::Types::ClientApproval, Basecamp::Types::ClientApprovalResponse, Basecamp::Types::ClientCompany, Basecamp::Types::ClientCorrespondence, Basecamp::Types::ClientReply, Basecamp::Types::ClientSide, Basecamp::Types::Comment, Basecamp::Types::CreatePersonRequest, Basecamp::Types::DockItem, Basecamp::Types::Document, Basecamp::Types::Event, Basecamp::Types::EventDetails, Basecamp::Types::Forward, Basecamp::Types::ForwardReply, Basecamp::Types::Gauge, Basecamp::Types::GaugeNeedle, Basecamp::Types::GaugeNeedlePayload, Basecamp::Types::GaugeNeedleUpdatePayload, Basecamp::Types::GaugeTogglePayload, Basecamp::Types::HillChart, Basecamp::Types::HillChartDot, Basecamp::Types::Inbox, Basecamp::Types::LineupMarker, Basecamp::Types::Message, Basecamp::Types::MessageBoard, Basecamp::Types::MessageType, Basecamp::Types::MyAssignment, Basecamp::Types::MyAssignmentAssignee, Basecamp::Types::MyAssignmentBucket, Basecamp::Types::MyAssignmentParent, Basecamp::Types::Notification, Basecamp::Types::OutOfOffice, Basecamp::Types::OutOfOfficePayload, Basecamp::Types::OutOfOfficePerson, Basecamp::Types::Person, Basecamp::Types::PersonCompany, Basecamp::Types::Preferences, Basecamp::Types::PreferencesPayload, Basecamp::Types::PreviewableAttachment, Basecamp::Types::Project, Basecamp::Types::ProjectAccessResult, Basecamp::Types::ProjectConstruction, Basecamp::Types::ProjectConstructionAttributes, Basecamp::Types::Question, Basecamp::Types::QuestionAnswer, Basecamp::Types::QuestionAnswerPayload, Basecamp::Types::QuestionAnswerUpdatePayload, Basecamp::Types::QuestionReminder, Basecamp::Types::QuestionSchedule, Basecamp::Types::Questionnaire, Basecamp::Types::Recording, Basecamp::Types::RecordingBucket, Basecamp::Types::RecordingParent, Basecamp::Types::RichTextAttachment, Basecamp::Types::Schedule, Basecamp::Types::ScheduleAttributes, Basecamp::Types::ScheduleEntry, Basecamp::Types::SearchMetadata, Basecamp::Types::SearchResult, Basecamp::Types::SearchType, Basecamp::Types::Subscription, Basecamp::Types::Template, Basecamp::Types::TimelineEvent, Basecamp::Types::TimesheetEntry, Basecamp::Types::Todo, Basecamp::Types::TodoBucket, Basecamp::Types::TodoParent, Basecamp::Types::Todolist, Basecamp::Types::TodolistGroup, Basecamp::Types::Todoset, Basecamp::Types::Tool, Basecamp::Types::Upload, Basecamp::Types::Vault, Basecamp::Types::Webhook, Basecamp::Types::WebhookCopy, Basecamp::Types::WebhookCopyBucket, Basecamp::Types::WebhookDelivery, Basecamp::Types::WebhookDeliveryRequest, Basecamp::Types::WebhookDeliveryResponse, Basecamp::Types::WebhookEvent, Basecamp::Types::Wormhole
Defined in:
lib/basecamp/generated/types.rb

Overview

Type conversion helpers

Class Method Summary collapse

Class Method Details

.identity(value) ⇒ Object



13
14
15
# File 'lib/basecamp/generated/types.rb', line 13

def identity(value)
  value
end

.parse_array(value, type_name) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/basecamp/generated/types.rb', line 50

def parse_array(value, type_name)
  return nil if value.nil?
  return value unless value.is_a?(Array)

  type_class = Basecamp::Types.const_get(type_name)
  value.map { |item| item.is_a?(Hash) ? type_class.new(item) : item }
rescue NameError
  value
end

.parse_boolean(value) ⇒ Object



27
28
29
30
# File 'lib/basecamp/generated/types.rb', line 27

def parse_boolean(value)
  return nil if value.nil?
  !!value
end

.parse_datetime(value) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/basecamp/generated/types.rb', line 32

def parse_datetime(value)
  return nil if value.nil?
  return value if value.is_a?(Time)
  Time.parse(value.to_s)
rescue ArgumentError
  nil
end

.parse_float(value) ⇒ Object



22
23
24
25
# File 'lib/basecamp/generated/types.rb', line 22

def parse_float(value)
  return nil if value.nil?
  value.to_f
end

.parse_integer(value) ⇒ Object



17
18
19
20
# File 'lib/basecamp/generated/types.rb', line 17

def parse_integer(value)
  return nil if value.nil?
  value.to_i
end

.parse_type(value, type_name) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/basecamp/generated/types.rb', line 40

def parse_type(value, type_name)
  return nil if value.nil?
  return value unless value.is_a?(Hash)

  type_class = Basecamp::Types.const_get(type_name)
  type_class.new(value)
rescue NameError
  value
end