Module: Schematic::Internal::Types::Enum

Includes:
Type
Included in:
Types::AccountMemberPermission, Types::AccountMemberRole, Types::ActorType, Types::ApiKeyScope, Types::BillingCreditBundleStatus, Types::BillingCreditBurnStrategy, Types::BillingCreditExpiryType, Types::BillingCreditExpiryUnit, Types::BillingCreditGrantReason, Types::BillingCreditGrantZeroedOutReason, Types::BillingCreditRolloverPolicy, Types::BillingPlanCreditGrantResetCadence, Types::BillingPlanCreditGrantResetStart, Types::BillingPlanCreditGrantResetType, Types::BillingPriceScheme, Types::BillingPriceUsageType, Types::BillingProductPriceInterval, Types::BillingProviderType, Types::BillingSubscriptionTrialEndSetting, Types::BillingTiersMode, Types::ChargeType, Types::CompanyPlanInvalidReason, Types::ComparableOperator, Types::ComponentEntityType, Types::ComponentState, Types::ConditionType, Types::CreditEventType, Types::CreditGrantSortOrder, Types::CreditLedgerPeriod, Types::CustomPlanActivationStrategy, Types::CustomPlanBillingStatus, Types::DataExportStatus, Types::EntitlementPriceBehavior, Types::EntitlementType, Types::EntitlementValueType, Types::EntityType, Types::EnvironmentType, Types::EventStatus, Types::EventType, Types::FeatureLifecyclePhase, Types::FeatureType, Types::IntegrationType, Types::InvoiceStatus, Types::MetricPeriod, Types::MetricPeriodMonthReset, Types::PlanBundleAction, Types::PlanChangeAction, Types::PlanChangeBasePlanAction, Types::PlanChangeSubscriptionAction, Types::PlanIcon, Types::PlanType, Types::PlanVersionCompanyMigrationStatus, Types::PlanVersionMigrationStatus, Types::PlanVersionMigrationStrategy, Types::PlanVersionStatus, Types::ProrationBehavior, Types::RuleType, Types::RulesEngineSchemaVersion, Types::RulesengineConditionType, Types::RulesengineEntitlementValueType, Types::RulesengineEntityType, Types::RulesengineMetricPeriod, Types::RulesengineMetricPeriodMonthReset, Types::RulesengineRuleType, Types::RulesengineTraitDefinitionComparableType, Types::ScheduledCheckoutStatus, Types::ScheduledDowngradeConfigBehavior, Types::SortDirection, Types::SubscriptionStatus, Types::SubscriptionType, Types::TimeSeriesGranularity, Types::TraitDefinitionComparableType, Types::TraitType, Types::TrialStatus, Types::WebhookEventStatus, Types::WebhookRequestType, Types::WebhookStatus
Defined in:
lib/schematic/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/schematic/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/schematic/internal/types/enum.rb', line 18

def finalize!
  values
end

#inspectObject



50
51
52
# File 'lib/schematic/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/schematic/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/schematic/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/schematic/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/schematic/internal/types/enum.rb', line 13

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