Module: Attrify

Includes:
Helpers
Defined in:
lib/attrify.rb,
lib/attrify/parser.rb,
lib/attrify/helpers.rb,
lib/attrify/variant.rb,
lib/attrify/version.rb,
lib/attrify/dsl/base.rb,
lib/attrify/dsl/engine.rb,
lib/attrify/dsl/variant.rb,
lib/attrify/dsl/compound.rb,
lib/attrify/operation_set.rb,
lib/attrify/variant_config.rb,
lib/attrify/variant_registry.rb,
lib/attrify/dsl/nested_variant.rb

Defined Under Namespace

Modules: ClassMethods, DSL, Helpers Classes: OperationSet, Parser, Variant, VariantConfig, VariantRegistry

Constant Summary collapse

VERSION =
"0.5.0"

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#compute_attributes, #deep_merge_hashes, #deep_merge_hashes!, #execute_operation

Class Method Details

.included(base) ⇒ Object



10
11
12
# File 'lib/attrify.rb', line 10

def self.included(base)
  base.extend ClassMethods
end

Instance Method Details

#attributes(slot: :main, **args) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/attrify.rb', line 36

def attributes(slot: :main, **args)
  new_arguments = (slot == :main) ? args : {slot => args}

  merged_arguments = deep_merge_hashes(variant, new_arguments)

  variant = self.class.variant_registry&.fetch(**merged_arguments)
  variant.values_for(instance: self, keys: Array(slot))
end

#variantObject



45
46
47
# File 'lib/attrify.rb', line 45

def variant
  @variant_config ||= VariantConfig.new
end