Sha256: bebba80b0a1c8bb465d8b02140671016b579d37a24b67111cc3ba5df79b76fcc

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

# typed: strict
# frozen_string_literal: true

module Etwin
  module User
    # A valid Eternal-Twin user display name
    class UserDisplayName
      extend T::Helpers
      extend T::Sig

      final!

      protected

      sig(:final) { returns(String) }
      attr_reader :inner

      public

      sig(:final) { params(inner: String).void }
      def initialize(inner)
        @inner = T.let(inner.freeze, String)
        freeze
      end

      sig(:final) { params(other: BasicObject).returns(T::Boolean) }
      def ==(other)
        case other
        when UserDisplayName
          @inner == other.inner
        else
          false
        end
      end

      sig(:final) { returns(Integer) }
      def hash
        @inner.hash
      end

      sig(:final) { returns(String) }
      def to_s
        @inner
      end

      sig(:final) { returns(String) }
      def as_json
        @inner
      end

      sig(:final) { returns(String) }
      def inspect
        "UserDisplayName(#{@inner})"
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
etwin-0.3.2 lib/etwin/user/user_display_name.rb
etwin-0.0.3 lib/etwin/user/user_display_name.rb
etwin-0.0.2 lib/etwin/user/user_display_name.rb
etwin-0.0.1 lib/etwin/user/user_display_name.rb