Sha256: 08c67534a093aa77fe0132ed4d74a6176057df481a5239d4339bf04eb81b787a

Contents?: true

Size: 929 Bytes

Versions: 4

Compression:

Stored size: 929 Bytes

Contents

# frozen_string_literal: true

module Expire
  # Base class of all rules
  class RuleBase
    include Comparable

    def self.<=>(other)
      rank <=> other.rank
    end

    def self.camelized_name
      match = to_s.match(/\A.*::(.+)Rule\z/) || return
      match[1]
    end

    def self.name
      camelized_name&.underscore
    end

    def self.option_name
      rule_name = name || return
      "--#{rule_name.dasherize}"
    end

    def initialize(amount:)
      @amount = amount
    end

    attr_reader :amount

    def name
      camelized_name&.underscore
    end

    def numerus_backup
      "backup".pluralize(amount)
    end

    def option_name
      rule_name = name || return
      "--#{rule_name.dasherize}"
    end

    def <=>(other)
      rank <=> other.rank
    end

    private

    def camelized_name
      match = self.class.to_s.match(/\A.*::(.+)Rule\z/) || return
      match[1]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
expire-0.2.6 lib/expire/rule_base.rb
expire-0.2.5 lib/expire/rule_base.rb
expire-0.2.4 lib/expire/rule_base.rb
expire-0.2.3 lib/expire/rule_base.rb