Module: Shippo::API::Category

Defined in:
lib/shippo/api/category.rb,
lib/shippo/api/category/base.rb,
lib/shippo/api/category/state.rb,
lib/shippo/api/category/source.rb,
lib/shippo/api/category/status.rb,
lib/shippo/api/category/purpose.rb

Overview

For enumerations with discrete possible set of values, Category class offers it’s subclasses and users tremendous benefits.

Categories should be always created via the Facåde Shippo::API::Category.for(name, value). Although it is possible to directly instantiate subclasses, it is not recommended for performance reasons.

Example

“‘ruby require ’shippo/api’ class My::Big::Module::Size < ::Shippo::API::Category::Base

allowed_values :small, :medium, :large, :xlarge, :xxlarge

end # ⤷ [:small, :medium, :large, :xlarge, :xxlarge]

my_size = Shippo::API::Category.for(‘size’, ‘xlarge’) # ⤷ XLARGE my_size.class.name # ⤷ My::Big::Module::Size “‘

Defined Under Namespace

Classes: Base, DuplicateValueError, Purpose, Source, State, Status

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.categoriesObject

Returns the value of attribute categories.



31
32
33
# File 'lib/shippo/api/category.rb', line 31

def categories
  @categories
end

Class Method Details

.for(name, value) ⇒ Object



41
42
43
44
# File 'lib/shippo/api/category.rb', line 41

def self.for(name, value)
  cat = self.categories[name.to_s.downcase.to_sym]
  cat ? cat[value.to_s.downcase.to_sym] : nil
end

.key(value) ⇒ Object



37
38
39
# File 'lib/shippo/api/category.rb', line 37

def self.key(value)
  value.to_s.downcase.to_sym
end