Sha256: 23c6abbdc6f7ec7bd8fa6027870ade4c071aa9838bea541a9b752d910442013e

Contents?: true

Size: 779 Bytes

Versions: 2

Compression:

Stored size: 779 Bytes

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'

module Avm
  module Git
    module AutoCommit
      module Rules
        require_sub __FILE__

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

        class << self
          def parse(string)
            parts = string.split(':')

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

          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) + ')')
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
avm-tools-0.93.0 lib/avm/git/auto_commit/rules.rb
avm-tools-0.92.0 lib/avm/git/auto_commit/rules.rb