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
- #coerce(value, strict: strict?) ) ⇒ Object
- #finalize! ⇒ Object private
- #inspect ⇒ Object
-
#load(str) ⇒ String
Parse JSON string and coerce to the enum value.
- #strict! ⇒ Object private
- #strict? ⇒ Boolean private
- #values ⇒ Array<Object> private
Methods included from JSON::Serializable
Instance Method Details
#coerce(value, strict: strict?) ) ⇒ Object
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 |
#inspect ⇒ Object
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
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.
23 24 25 |
# File 'lib/schematic/internal/types/enum.rb', line 23 def strict? @strict ||= false end |
#values ⇒ Array<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.
13 14 15 |
# File 'lib/schematic/internal/types/enum.rb', line 13 def values @values ||= constants.map { |c| const_get(c) } end |