Module: Igniter::Embed::ContractNaming
- Defined in:
- lib/igniter/embed/contract_naming.rb
Class Method Summary collapse
- .contract_class?(value) ⇒ Boolean
- .infer_contract_name(contract_class) ⇒ Object
- .normalize_contract_name(name) ⇒ Object
- .snake_case(value) ⇒ Object
Class Method Details
.contract_class?(value) ⇒ 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 |