Module: Payabli::Internal::Types::Enum

Includes:
Type
Included in:
Types::AchHolderType, Types::Achaccounttype, Types::AllowedCheckPaymentStatus, Types::BankAccountHolderType, Types::BillDataPaymentTerms, Types::BillQueryRecord2PaymentMethod, Types::ButtonElementSize, Types::CardStatus, Types::CashMethod, Types::CheckMethod, Types::ExportFormat, Types::ExportFormat1, Types::FileContentFtype, Types::Frequency, Types::Frequencynotification, Types::JobStatus, Types::MethodElementSettingsApplePayButtonStyle, Types::MethodElementSettingsApplePayButtonType, Types::MethodElementSettingsApplePayLanguage, Types::Methodall, Types::Methodnotification, Types::NotificationContentEventType, Types::NotificationContentFileFormat, Types::NotificationContentReportName, Types::NotificationReportRequestContentEventType, Types::NotificationReportRequestContentFileFormat, Types::NotificationReportRequestContentReportName, Types::NotificationReportRequestFrequency, Types::NotificationReportRequestMethod, Types::NotificationStandardRequestContentEventType, Types::NotificationStandardRequestFrequency, Types::NotificationStandardRequestMethod, Types::OdpSetupProcessingRegion, Types::OwnType, Types::PayMethodAchMethod, Types::PayMethodCloudMethod, Types::PayMethodCreditMethod, Types::PayMethodStoredMethodMethod, Types::PaymentLinkStatus, Types::RequestCreditPaymentMethodMethod, Types::RequestPaymentValidatePaymentMethodMethod, Types::SubscriptionType, Types::Terms, Types::TransactionDetailRecordMethod, Types::TypeAccount, Types::UnderWritingMethod, Types::VendorDataResponsePaymentMethod, Types::Whencharged, Types::Whendelivered, Types::Whenprovided, Types::Whenrefunded
Defined in:
lib/payabli/internal/types/enum.rb

Overview

Module for defining enums

Instance Method Summary collapse

Methods included from JSON::Serializable

#dump

Instance Method Details

#coerce(value, strict: strict?) ) ⇒ Object

Raises:



32
33
34
35
36
37
38
39
40
# File 'lib/payabli/internal/types/enum.rb', line 32

def coerce(value, strict: strict?)
  coerced_value = Utils.coerce(Symbol, value)

  return coerced_value if values.include?(coerced_value)

  raise Errors::TypeError, "`#{value}` not in enum #{self}" if strict

  value
end

#finalize!Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



18
19
20
# File 'lib/payabli/internal/types/enum.rb', line 18

def finalize!
  values
end

#inspectObject



50
51
52
# File 'lib/payabli/internal/types/enum.rb', line 50

def inspect
  "#{name}[#{values.join(", ")}]"
end

#load(str) ⇒ String

Parse JSON string and coerce to the enum value

Parameters:

  • str (String)

    JSON string to parse

Returns:

  • (String)

    The enum value



46
47
48
# File 'lib/payabli/internal/types/enum.rb', line 46

def load(str)
  coerce(::JSON.parse(str))
end

#strict!Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



28
29
30
# File 'lib/payabli/internal/types/enum.rb', line 28

def strict!
  @strict = true
end

#strict?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:



23
24
25
# File 'lib/payabli/internal/types/enum.rb', line 23

def strict?
  @strict ||= false
end

#valuesArray<Object>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:



13
14
15
# File 'lib/payabli/internal/types/enum.rb', line 13

def values
  @values ||= constants.map { |c| const_get(c) }
end