Module: Igniter::Embed::ContractNaming

Defined in:
lib/igniter/embed/contract_naming.rb

Class Method Summary collapse

Class Method Details

.contract_class?(value) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/igniter/embed/contract_naming.rb', line 8

def contract_class?(value)
  value.is_a?(Class) && value < Igniter::Contract
end

.infer_contract_name(contract_class) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/igniter/embed/contract_naming.rb', line 12

def infer_contract_name(contract_class)
  class_name = contract_class.name
  unless class_name
    raise InvalidContractRegistrationError,
          "anonymous contract classes must be registered with as:"
  end

  basename = class_name.split("::").last.sub(/Contract\z/, "")
  snake_case(basename).to_sym
end

.normalize_contract_name(name) ⇒ Object



23
24
25
26
27
# File 'lib/igniter/embed/contract_naming.rb', line 23

def normalize_contract_name(name)
  raise InvalidContractRegistrationError, "contract name is required" unless name

  name.to_sym
end

.snake_case(value) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/igniter/embed/contract_naming.rb', line 29

def snake_case(value)
  value
    .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
    .gsub(/([a-z\d])([A-Z])/, '\1_\2')
    .tr("-", "_")
    .downcase
end