Sha256: 0009870341f957480e84d9487ac246b5a54e02ce7f4d8e29f26a7247464dfcca

Contents?: true

Size: 879 Bytes

Versions: 168

Compression:

Stored size: 879 Bytes

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/patches/module/compare_by'

module EacRubyUtils
  class Bit
    VALID_VALUES = [0, 1].freeze

    class << self
      def assert(obj)
        return obj if obj.is_a?(self)

        new(obj.to_i)
      end

      def valid_integer?(value)
        value.is_a?(::Integer) && VALID_VALUES.include?(value)
      end

      def validate_integer(value)
        return value if valid_integer?(value)

        raise(::ArgumentError, "Invalid bit value: #{value} (Valid: #{VALID_VALUES})")
      end
    end

    attr_reader :value
    compare_by :value
    delegate :to_s, :zero?, to: :value

    # @param value [Integer]
    def initialize(value)
      @value = self.class.validate_integer(value)
    end

    # @return [Boolean]
    def one?
      !zero?
    end

    # @return [Integer]
    def to_i
      value
    end
  end
end

Version data entries

168 entries across 168 versions & 3 rubygems

Version Path
eac_tools-0.76.1 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_tools-0.76.0 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_tools-0.75.2 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_ruby_utils-0.119.2 lib/eac_ruby_utils/bit.rb
eac_tools-0.75.1 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_tools-0.75.0 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_ruby_utils-0.119.1 lib/eac_ruby_utils/bit.rb
eac_tools-0.74.1 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_tools-0.74.0 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_tools-0.73.0 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_ruby_utils-0.119.0 lib/eac_ruby_utils/bit.rb
eac_tools-0.72.0 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_ruby_utils-0.118.1 lib/eac_ruby_utils/bit.rb
eac_ruby_utils-0.118.0 lib/eac_ruby_utils/bit.rb
eac_tools-0.70.1 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_tools-0.70.0 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_tools-0.69.1 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_ruby_utils-0.117.1 lib/eac_ruby_utils/bit.rb
eac_tools-0.69.0 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb
eac_tools-0.68.0 sub/eac_ruby_utils/lib/eac_ruby_utils/bit.rb