Class: Tailmix::Definition::Builders::VariantBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/tailmix/definition/builders/variant_builder.rb

Instance Method Summary collapse

Constructor Details

#initializeVariantBuilder

Returns a new instance of VariantBuilder.



7
8
9
10
11
12
# File 'lib/tailmix/definition/builders/variant_builder.rb', line 7

def initialize
  @class_groups = []
  @data = {}
  @aria = {}
  @attributes = {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/tailmix/definition/builders/variant_builder.rb', line 26

def method_missing(name, *args, &block)
  # `disabled true` -> { disabled: true }
  # `placeholder "text"` -> { placeholder: "text" }
  # `type "password"` -> { type: "password" }
  attribute_name = name.to_s.chomp("=").to_sym
  value = args.first
  @attributes[attribute_name] = value
end

Instance Method Details

#aria(hash) ⇒ Object



22
23
24
# File 'lib/tailmix/definition/builders/variant_builder.rb', line 22

def aria(hash)
  @aria.merge!(hash)
end

#build_variantObject



39
40
41
42
43
44
45
46
# File 'lib/tailmix/definition/builders/variant_builder.rb', line 39

def build_variant
  Definition::Result::Variant.new(
    class_groups: @class_groups.freeze,
    data: @data.freeze,
    aria: @aria.freeze,
    attributes: @attributes.freeze
  )
end

#classes(class_string, options = {}) ⇒ Object



14
15
16
# File 'lib/tailmix/definition/builders/variant_builder.rb', line 14

def classes(class_string, options = {})
  @class_groups << { classes: class_string.to_s.split, options: options }
end

#data(hash) ⇒ Object



18
19
20
# File 'lib/tailmix/definition/builders/variant_builder.rb', line 18

def data(hash)
  @data.merge!(hash)
end

#respond_to_missing?(*_args) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/tailmix/definition/builders/variant_builder.rb', line 35

def respond_to_missing?(*_args)
  true
end