Sha256: 0dca6f2e4fef2c38918f286875f417b7ed4a73d4ea2c0cc928f32431dfce7a3b

Contents?: true

Size: 551 Bytes

Versions: 11

Compression:

Stored size: 551 Bytes

Contents

# frozen_string_literal: true

module ElasticAPM
  class Config
    # @api private
    class Bytes
      MULTIPLIERS = {
        'kb' => 1024,
        'mb' => 1024 * 1_000,
        'gb' => 1024 * 100_000
      }.freeze
      REGEX = /^(\d+)(b|kb|mb|gb)?$/i.freeze

      def initialize(default_unit: 'kb')
        @default_unit = default_unit
      end

      def call(value)
        _, amount, unit = REGEX.match(String(value)).to_a
        unit ||= @default_unit
        MULTIPLIERS.fetch(unit.downcase, 1) * amount.to_i
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
elastic-apm-3.6.0 lib/elastic_apm/config/bytes.rb
elastic-apm-3.5.0 lib/elastic_apm/config/bytes.rb
elastic-apm-3.4.0 lib/elastic_apm/config/bytes.rb
elastic-apm-3.3.0 lib/elastic_apm/config/bytes.rb
elastic-apm-3.2.0 lib/elastic_apm/config/bytes.rb
elastic-apm-3.1.0 lib/elastic_apm/config/bytes.rb
elastic-apm-3.0.0 lib/elastic_apm/config/bytes.rb
elastic-apm-2.12.0 lib/elastic_apm/config/bytes.rb
elastic-apm-2.11.0 lib/elastic_apm/config/bytes.rb
elastic-apm-2.10.1 lib/elastic_apm/config/bytes.rb
elastic-apm-2.10.0 lib/elastic_apm/config/bytes.rb