Module: Avm::Scms::AutoCommit::Rules

Defined in:
lib/avm/scms/auto_commit/rules.rb,
lib/avm/scms/auto_commit/rules/new.rb,
lib/avm/scms/auto_commit/rules/nth.rb,
lib/avm/scms/auto_commit/rules/base.rb,
lib/avm/scms/auto_commit/rules/last.rb,
lib/avm/scms/auto_commit/rules/manual.rb,
lib/avm/scms/auto_commit/rules/unique.rb

Defined Under Namespace

Classes: Base, Last, Manual, New, Nth, Unique

Constant Summary collapse

RULES_CLASSES =
%w[last manual new nth unique]
.map { |key| ::Avm::Scms::AutoCommit::Rules.const_get(key.camelcase) }

Class Method Summary collapse

Class Method Details

.allArray<Avm::Scms::AutoCommit::Rules>

Returns:



14
15
16
# File 'lib/avm/scms/auto_commit/rules.rb', line 14

def all
  RULES_CLASSES
end

.parse(string) ⇒ Object



18
19
20
21
22
23
# File 'lib/avm/scms/auto_commit/rules.rb', line 18

def parse(string)
  parts = string.split(':')

  klass = rule_class_by_key(parts.shift)
  klass.new(*parts)
end

.rule_class_by_key(key) ⇒ Object



25
26
27
28
29
# File 'lib/avm/scms/auto_commit/rules.rb', line 25

def rule_class_by_key(key)
  RULES_CLASSES.find { |klass| klass.keys.include?(key) } ||
    raise("Rule not find with key \"#{key}\" (Available: " \
          "#{RULES_CLASSES.flat_map(&:keys).join(', ')})")
end